Depois de configurar nginx (proxy reverso) e gunicorn, as variáveis env param de ser detectadas (aplicativo Django no Ubuntu)

1

Em uma máquina ubuntu hospedando meu aplicativo Django (com backend postgres), minhas variáveis env foram detectadas com perfeição quando ativei o gunicorn como meu único servidor web usando o comando gunicorn --bind 0.0.0.0:8080 --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi:application

Em seguida, eu instalei o nginx e o configurei para atuar como um proxy reverso com o gunicorn (usando um oceano digital guia aqui ). Não há supervisor. Esta nova configuração do servidor web disparou corretamente, exceto que agora ele não detecta as variáveis env.

Imagine que minhas variáveis env são awake = 1 e secret = abc123 . Eu já tentei colocar export awake=1 e export secret=abc123 , em /etc/default/nginx , em gunicorn.conf , em /etc/environment (que os define globalmente). Eu também tentei adicioná-los ao nginx.conf como env awake=1; e env secret=abc123; .

Nada funcionou.

Agora parece que o nginx

removes all environment variables inherited from its parent process except the TZ variable

Fonte: link Poderia ser essa a razão pela qual nada que estou tentando chegou perto de funcionar ? No entanto, echo $awake produz 1 na linha de comando, o que me diz que talvez as variáveis estejam definidas, mas sendo contornadas ou ignoradas.

Isso se tornou muito frustrante. Alguém pode me ajudar a descobrir isso? Agradecemos antecipadamente.

wsgi.py:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
application = Cling(get_wsgi_application())

gunicorn.conf:

description "Gunicorn application server handling myproject"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid myuser
setgid www-data
chdir /home/myuser/directory/myproject/

exec /home/myuser/.virtualenvs/myvirtualenv/bin/gunicorn --chdir=/home/myuser/directory/ --workers 3 --bind unix:/home/myuser/directory/myproject/myproject.sock --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi:application

/ etc / nginx / sites-disponíveis / myproject:

server {
    listen 80;
    server_name myapp.cloudapp.net;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/myuser/directory/myproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/myuser/directory/myproject/myproject.sock;
    }
}

Nota: Por favor, peça mais informações se precisar

    
por Hassan Baig 10.12.2015 / 06:26

1 resposta

1

Eu sugiro configurar suas variáveis de env exatamente onde você está executando o gunicorn, assim: gunicorn --bind0.0.0.0:8080 -e var1=value1 -e var2=value2 myproject.wsgi:application . Isso deve funcionar para você.

    
por 25.12.2015 / 14:47