gunicorn se comporta de maneira diferente quando executado a partir do terminal e pelo serviço

gunicorn se comporta de maneira diferente quando executado a partir do terminal e pelo serviço

Estou usando nginx+gunicorn+django para meu site.

A seguir está meu arquivo gunicorn.conf:

description "Gunicorn daemon for Django project"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

# If the process quits unexpectadly trigger a respawn
respawn

setuid django
setgid django
chdir /home/django

# export LC_ALL=en_US.UTF-8
# export LC_LANG=en_US.UTF-8
# export LANG=en_US.UTF-8

exec gunicorn \
    --name=eduwiki \
    --pythonpath=eduwiki \
    --bind=0.0.0.0:9000 \
    --log-level debug \
    --log-file /var/log/gunicorn/error_logs.log \
    --config /etc/gunicorn.d/gunicorn.py \
    eduwiki.wsgi:application

#    --access-logfile  /var/log/gunicorn/acclogs.log \

Quando eu corro

service gunicorn start

E quando mudo para dir /home/django, o seguinte comando (que é igual aos códigos do arquivo de configuração anterior) funcionou perfeitamente:

exec gunicorn     --name=eduwiki     --pythonpath=eduwiki     --bind=0.0.0.0:9000     --log-level debug     --log-file /var/log/gunicorn/error_logs.log     --config /etc/gunicorn.d/gunicorn.py     eduwiki.wsgi:application

Mas o primeiro não pode ser iniciado, quando eu removo a parte de log no arquivo de configuração: exec gunicorn \ --name=eduwiki \ --pythonpath=eduwiki \ --bind=0.0.0.0:9000 \ --config /etc/ gunicorn.d/gunicorn.py\eduwiki.wsgi:application Com service gunicorn start, o serviço é executado. Mas ele se comporta de maneira diferente da execução direta no terminal.

Ao executar diretamente do terminal, a codificação de caracteres exibida na página da web está correta, como a seguir:

Matemática (do grego μάθημα máthēma, “conhecimento, estudo, aprendizagem”)

Mas quando executo o gunicorn usando o serviço, a codificação de caracteres não-ascii está totalmente errada:

*

Matemática (do grego ?????? m?th?ma, ?conhecimento, estudo, aprendizagem?)

    *

Responder1

Suas sessões de terminal interativo normalmente são preenchidas automaticamente com LC_ALLconfigurações de localidade e idioma LC_LANGe LANGmuitos clientes SSH substituirão os padrões do servidor encaminhando essas variáveis ​​de ambiente de sua estação de trabalho.

Freqüentemente, eles são diferentes dos padrões do sistema, que são usados ​​quando um daemon é iniciado como um serviço a partir dos scripts de inicialização. Remova o comentário das # exportlinhas do script de inicialização e preencha o ambiente com as configurações adequadas.

informação relacionada