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

1

Estou usando o nginx + gunicorn + django no meu site.

O seguinte é o 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 eu mudo para o dir /home/django , o seguinte comando (que é o mesmo que os códigos no antigo arquivo de configuração) funcionou como um encanto:

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 remover a parte de registro 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: aplicativo Com service gunicorn start , o serviço é executado. Mas 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:

Mathematics (from Greek μάθημα máthēma, “knowledge, study, learning”)

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

*

Mathematics (from Greek ?????? m?th?ma, ?knowledge, study, learning?)

    *
por moonkey 17.06.2015 / 04:35

1 resposta

1

Suas sessões de terminal interativas geralmente são preenchidas automaticamente com a localidade LC_ALL e as configurações de idioma LC_LANG e LANG , e muitos clientes SSH substituem os padrões do servidor encaminhando essas variáveis de ambiente de sua estação de trabalho.

Geralmente, esses são diferentes dos padrões do sistema, que são usados quando um daemon é iniciado como um serviço dos scripts de inicialização. Remova o comentário das linhas # export no script de inicialização e preencha o ambiente com configurações adequadas.

    
por 18.06.2015 / 08:32