gunicorn se comporta de manera diferente cuando se ejecuta desde la terminal y mediante el servicio

gunicorn se comporta de manera diferente cuando se ejecuta desde la terminal y mediante el servicio

Estoy usando nginx+gunicorn+django para mi sitio web.

El siguiente es mi archivo 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 \

cuando corro

service gunicorn start

Y cuando cambio al directorio /home/django, el siguiente comando (que es el mismo que los códigos en el archivo de configuración anterior) funcionó de maravilla:

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

Pero el primero no se puede iniciar cuando elimino la parte de registro en el archivo de configuración: exec gunicorn \ --name=eduwiki \ --pythonpath=eduwiki \ --bind=0.0.0.0:9000 \ --config /etc/ gunicorn.d/gunicorn.py \ eduwiki.wsgi:application Con service gunicorn start, se ejecuta el servicio. Pero se comporta de manera diferente a ejecutarse directamente en la terminal.

Cuando se ejecuta directamente desde la terminal, la codificación de caracteres que se muestra en la página web es correcta, como la siguiente:

Matemáticas (del griego μάθημα máthēma, “conocimiento, estudio, aprendizaje”)

Pero cuando ejecuto gunicorn usando el servicio, la codificación de caracteres que no son ASCII es totalmente incorrecta:

*

Matemáticas (del griego ?????? m?th?ma, ?conocimiento, estudio, aprendizaje?)

    *

Respuesta1

Por lo general, sus sesiones de terminal interactiva se completan automáticamente con LC_ALLconfiguraciones locales y de idioma LC_LANGy LANGmuchos clientes SSH anularán los valores predeterminados del servidor reenviando esas variables de entorno desde su estación de trabajo.

A menudo, estos son diferentes de los valores predeterminados del sistema, que se utilizan cuando un demonio se inicia como un servicio desde los scripts de inicio. Descomente las # exportlíneas en el script de inicio y complete el entorno con la configuración adecuada.

información relacionada