2012-08-05 11 views
8

Planeo almacenar algunas configuraciones de aplicación en variables de entorno, como MYSQL_URL = mysql: // ... Utilizo supervisord para administrar el proceso de la aplicación. ¿Cómo cargar variables de entorno antes de que se inicie el subproceso? Especialmente cuando se cambian estas configuraciones, espero que un reinicio del subproceso cargue la nueva configuración.Cargar variable de entorno antes de ejecutar

También me pregunto dónde almacenar estas variables de entorno. ¿Un archivo que puedo "exportar $ (nombre de archivo de gato)"? O algunas formas mejores. Tengo curiosidad de cómo maneja Heroku sus variables de entorno.

Respuesta

19

Puede establecer las variables de entorno por proceso en la configuración supervisord en la sección [program:x], estos serán incluídos en el proceso cuando se inicia:

[program:yourprocess] 
# ... other settings 
environment = 
    MYSQL_URL=mysql://, 
    OTHER_VAR="some other value" 

Tenga en cuenta que es necesario utilizar una coma entre cada variable. Usé nuevas líneas en el ejemplo anterior también, esas son opcionales. Si tiene espacios en los valores de su entorno, debe incluir el valor entre comillas.

También puede establecer variables de entorno para todos los procesos en la sección [supervisord], utilizando el mismo formato.

Por último, cualquier variable de entorno que se establezca al iniciar supervisord se pasa a los procesos gestionados por supervisord también. Vea el documentation section on environment variables para más detalles.

tenga en cuenta que si cambia las variables de entorno configuradas en el archivo de configuración, tendrá que indicar a supervisord para recargar la configuración y reiniciar los subprocesos para ellos para recoger estos cambios:

supervisorctl update 
supervisorctl restart yourprocess 

Si Sin embargo cambia las variables de entorno exterior de supervisord, tendrá que cerrar supervisord todos juntos para recoger estos:

supervisorctl shutdown 
supervisord 
+3

en contra del propósito si también almacenar el archivo de configuración en el supervisor de control de versiones – Dustin

+1

@Dustin es r Ocho. ¿Hay alguna forma de evitar esto? Tal vez algún tipo de archivo de inclusión? – surjikal

+0

@surjikal: genera el archivo de configuración con una herramienta como buildout. –

0

De acuerdo con la the docs "supervisord.conf contiene una sección denominada [supervisord en el que la configuración global" se pueden configurar como environmont variables. (En la página enlazada, busque la palabra "entorno").

Las variables de entorno también pueden ser set an a per-program basis.

Cuestiones relacionadas