2013-03-07 12 views
9

Ho uno script python che altera dinamicamente il file di configurazione nginx (nginx.conf). Poiché la configurazione di nginx non è nel formato ini, attualmente utilizzo alcune espressioni regolari per analizzare e modificare il contenuto del file. È l'unico modo o esiste un modo migliore per modificare a livello di codice la configurazione di nginx?Un buon modo per cambiare a livello di codice il file di configurazione nginx da python?

+3

Perché non utilizzare un modello per generare il file? –

+1

@Mart Non lo faccio, lo altero. Lo script viene utilizzato su server esistenti che hanno già nginx installato e in esecuzione con i file di configurazione esistenti. Aggiungo o rimuovo gli articoli a seconda della logica. – grigoryvp

risposta

6

V'è ora nginx-conf, un modulo NPM che fornisce l'accesso programmatico alle configurazioni nginx.

3

Sembra esistere un augeas lens che supporta almeno un sottoinsieme della sintassi del file di configurazione nginx. Augeas ha anche Python bindings.

+1

Sembra un po 'eccessivo usare la libreria scritta in C con collegamenti Python per l'elaborazione di file di testo semplice O_O. – grigoryvp

+1

Ancora meglio di reinventare la ruota ... – mensi

+1

Per chi cerca di analizzare i file nginx.conf da lingue diverse da Python Augeas ha anche [collegamenti per un numero di altre lingue] (http://augeas.net/download.html) , oltre a uno strumento shell. Anche i miei 2 centesimi - Augeas è la soluzione più robusta in quanto fornisce un'API comune per analizzare molti file .conf di lingue diverse. L'obiettivo nginx è attualmente limitato a un sottoinsieme della sintassi di configurazione di nginx ma è piuttosto semplice da estendere. – brocking

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

  2. si potrebbe utilizzare il PyNginxConfig Parser. http://code.google.com/p/pynginxconfig/source/browse/pynginxconfig.py#208 Questa implementazione è simile a quella originale.

  3. C'è anche ServerMgr. Non è proprio un parser, consente solo i mapping di base.

  4. Ultimo ma non meno importante, in realtà prima, perché sulla base di pyparsing: https://github.com/fatiherikli/nginxparser

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

+2

Installa [nginxparser] (https://github.com/fatiherikli/nginxparser) con 'pip install git + https: //github.com/fatiherikli/nginxparser.git ' – czerasz

Problemi correlati