Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Cómo acceder y establecer variables de entorno en cualquier producción (Nginx y Gunicorn)

Estoy tratando de establecer variables de entorno para un proyecto Django servido por Nginx y Gunicorn en Ubuntu. Las variables están configuradas para el usuario de Ubuntu y puedo ver el valor usando printenv VAR_EMAIL .

Pero cuando uso la configuración de django, no funciona, al usarlos como os.environ['VAR_EMAIL'] , esto no obtiene el valor de la variable en producción y el servidor no funciona.

Sin embargo, esto funciona en el lado de Desarrollo.

ACTUALIZACIÓN 1 de mayo de 2020: utilicé systemd y pasé la variable como esta en el archivo gunicorn.service. funciona bien con Variables de entorno en desarrollo. ¿Es os.environ['var_name'] la forma correcta de acceder a eso? También probé os.environ.get('var_name') como vi en un video que environ tiene .get() para acceder al valor. Lo intentaré de nuevo, tal vez cometí algún error. No dude en solicitar cualquier información requerida. Archivo de servicio

RESPONDIDO - Fue un error de mi parte.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Qué estás usando para supervisar y ejecutar el proceso gunicorn en Ubuntu? Si no está usando ninguno, le recomiendo que use systemd , hay una pequeña guía sobre cómo configurar en los documentos de gunicorn: https://docs.gunicorn.org/en/stable/deploy.html#systemd

Después de eso, puede configurar las variables de entorno en el archivo de configuración de systemd haciendo lo siguiente, en la sección [Service] del archivo de configuración de systemd:

 [Service] Environment="VAR_EMAIL=var-email" Environment="ANOTHER_VAR=another-var"

También puede usar la directiva EnvironmentFile si prefiere tener estas variables en un archivo separado: https://www.freedesktop.org/software/systemd/man/systemd.exec.html#EnvironmentFile=

over 4 years ago · Santiago Trujillo Denunciar

0

Ahora, después de muchos problemas que enfrenté debido a los cuales simplemente codifiqué las variables en el código durante mucho tiempo, la solución a la que llegué está en esta actualización. Lea la respuesta completa para obtenerla.

Esta es una actualización, es extraño cómo se transmiten las variables de entorno. Cada variable requiere el siguiente método, pero también debe agregar las variables al etc/environment y agregar las variables de entorno también.

Las variables de entorno debían configurarse en una sola línea con spaces separaban cada par clave+valor. (No como se menciona en la Respuesta seleccionada) Sin embargo, no se pudo hacer que funcionara con el supervisor.

Entonces, la forma correcta de hacerlo es como se menciona en esta Documentación para Systemd: EnvironmentsSystemd

 Environment = "KEY_NAME_1=VALUE_KEY_1" "KEY_NAME_2=VALUE_KEY_2" ....

Luego Usuario PassEnvironment para activar aquellos en esa sesión. De esta manera, con PassEnvironment puede tener diferentes variables de entorno activas para diferentes servicios.

 PassEnvironment = KEY_NAME_1 KEY_NAME_2 ....

Estos son los nombres de las claves separados por espacios. Esto debería ayudarlo a configurar systemd . Verifique la respuesta seleccionada para todos los enlaces.

Esto no funcionará: Captura de pantalla de respuesta

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda