我的网站使用 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
启动脚本中的行,并使用合适的设置填充环境。