2013-03-07 11 views
9

Mam skrypt Pythona, który dynamicznie zmienia plik konfiguracyjny nginx (nginx.conf). Ponieważ konfiguracja nginx nie jest w formacie ini, obecnie używam jakiegoś regexp do parsowania i modyfikowania zawartości pliku. Czy jest to jedyny sposób lub jakiś lepszy sposób na programową zmianę konfiguracji nginx?Każdy dobry sposób programowo zmienić plik konfiguracyjny nginx z Pythona?

+3

Dlaczego nie użyć szablonu do wygenerowania pliku? –

+1

@Mart Nie generuję go - zmieniam istniejący. Skrypt jest używany na istniejących serwerach, które już działają i działają z istniejącymi plikami konfiguracyjnymi. Dodaję lub usuwam elementy w zależności od logiki. – grigoryvp

Odpowiedz

6

Obecnie nginx-conf, moduł NPM, który zapewnia dostęp programistyczny do konfiguracji nginx.

3

Wygląda na to, że istnieje augeas lens obsługujący co najmniej podzbiór składni pliku konfiguracyjnego nginx. Augeas ma również Python bindings.

+1

Wygląda trochę na przesadę, aby użyć biblioteki napisanej w C z powiązaniami Pythona do prostego przetwarzania plików tekstowych O_O. – grigoryvp

+1

Jeszcze lepiej niż wymyślanie koła ... – mensi

+1

Dla każdego, kto chce parsować pliki nginx.conf z języków innych niż Python Augeas ma również [powiązania dla wielu innych języków] (http://augeas.net/download.html) , oprócz narzędzia powłoki. Również moje 2 centy - Augeas jest najbardziej niezawodnym rozwiązaniem, ponieważ zapewnia wspólny API do parsowania wielu plików .conf z różnych języków. Obiektyw nginx jest obecnie ograniczony do podzbioru składni konfiguracji nginx, ale jego rozszerzenie jest dość proste. – brocking

7
  1. https://www.npmjs.com/package/nginx-conf

  2. Możecie użyć PyNginxConfig Parser. http://code.google.com/p/pynginxconfig/source/browse/pynginxconfig.py#208 Ta implementacja jest bliska oryginalnemu.

  3. Istnieje również ServerMgr. To naprawdę nie jest parser, tylko pozwala na podstawowe odwzorowania.

  4. Last but not least, faktycznie pierwsze, ponieważ na podstawie pyparsing: https://github.com/fatiherikli/nginxparser

    pip install git+https://github.com/fatiherikli/nginxparser.git

+2

Zainstaluj [nginxparser] (https://github.com/fatiherikli/nginxparser) za pomocą 'pip install git + https: //github.com/fatiherikli/nginxparser.git ' – czerasz

Powiązane problemy