Gunicorn verhält sich unterschiedlich, wenn es vom Terminal und vom Dienst ausgeführt wird

Gunicorn verhält sich unterschiedlich, wenn es vom Terminal und vom Dienst ausgeführt wird

Ich verwende nginx+gunicorn+django für meine Website.

Das Folgende ist meine gunicorn.conf-Datei:

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 \

Wenn ich laufe

service gunicorn start

Und als ich in das Verzeichnis gewechselt bin /home/django, hat der folgende Befehl (der mit den Codes in der vorherigen Konfigurationsdatei identisch ist) wunderbar funktioniert:

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

Der erste lässt sich allerdings nicht starten, wenn ich den Logging-Teil in der Konfigurationsdatei entferne: exec gunicorn \ --name=eduwiki \ --pythonpath=eduwiki \ --bind=0.0.0.0:9000 \ --config /etc/gunicorn.d/gunicorn.py \ eduwiki.wsgi:application Mit service gunicorn startläuft der Dienst. Er verhält sich aber anders als bei direkter Ausführung im Terminal.

Beim direkten Ausführen vom Terminal aus ist die auf der Webseite angezeigte Zeichenkodierung korrekt und sieht wie folgt aus:

Mathematik (aus dem Griechischen μάθημα máthēma, „Wissen, Studium, Lernen“)

Aber wenn ich Gunicorn mithilfe des Dienstes ausführe, ist die Kodierung von Nicht-ASCII-Zeichen völlig falsch:

*

Mathematik (aus dem Griechischen ?????? m?th?ma, ?Wissen, Studium, Lernen?)

    *

Antwort1

Ihre interaktiven Terminalsitzungen werden normalerweise automatisch mit Gebietsschema- LC_ALLund Spracheinstellungen gefüllt LC_LANGund LANGviele SSH-Clients überschreiben die Server-Standardeinstellungen, indem sie diese Umgebungsvariablen von Ihrer Arbeitsstation weiterleiten.

Diese unterscheiden sich häufig von den Systemstandards, die verwendet werden, wenn ein Daemon als Dienst aus den Startskripten gestartet wird. Heben Sie die Kommentierung der # exportZeilen im Startskript auf und füllen Sie die Umgebung mit den entsprechenden Einstellungen.

verwandte Informationen