我的網站使用 nginx+gunicorn+django。
以下是我的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 \
當我跑步時
service gunicorn start
當我更改為 dir 時/home/django
,以下命令(與先前的設定檔中的程式碼相同)非常有效:
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
但是當我刪除設定檔中的日誌記錄部分時,第一個無法啟動: exec Gunicorn \ --name=eduwiki \ --pythonpath=eduwiki \ --bind=0.0.0.0:9000 \ --config /etc/ Gunicorn.d/gunicorn.py \ eduwiki.wsgi:application 使用service gunicorn start
,服務將會運作。但它的行為與直接在終端機中運作不同。
直接從終端運行時,網頁中顯示的字元編碼是正確的,如下所示:
數學(源自希臘文 μάθημα máthēma,「知識、研究、學習」)
但是當我使用服務運行gunicorn時,非ascii字元的編碼完全錯誤:
*
數學(源自希臘文 ?????? m?th?ma,「知識、學習、學習?」)
-
*
答案1
您的互動式終端會話通常會自動填入區域設定LC_ALL
和語言設置LC_LANG
, LANG
許多 SSH 用戶端將透過從工作站轉送這些環境變數來覆蓋伺服器預設值。
通常這些與系統預設值不同,當守護程序作為服務從啟動腳本啟動時使用系統預設值。取消註解# export
啟動腳本中的行並使用適當的設定填充環境。