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 start
lä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_ALL
und Spracheinstellungen gefüllt LC_LANG
und LANG
viele 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 # export
Zeilen im Startskript auf und füllen Sie die Umgebung mit den entsprechenden Einstellungen.