![gunicornはターミナルから実行した場合とサービスから実行した場合で動作が異なります](https://rvso.com/image/660585/gunicorn%E3%81%AF%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%A8%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%8B%E3%82%89%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%8C%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99.png)
私は自分のウェブサイトに 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
、サービスは実行されます。ただし、ターミナルで直接実行する場合とは動作が異なります。
ターミナルから直接実行すると、Web ページに表示される文字エンコードは次のように正しくなります。
数学(ギリシャ語のμάθημα máthēma、「知識、研究、学習」から)
しかし、サービスを使用して gunicorn を実行すると、非 ASCII 文字のエンコードが完全に間違っています。
*
数学 (ギリシャ語の ???? m?th?ma、「知識、研究、学習」から)
-
*
答え1
通常、対話型ターミナル セッションにはロケールLC_ALL
と言語の設定が自動的に入力されLC_LANG
、 LANG
多くの SSH クライアントはワークステーションからこれらの環境変数を転送することでサーバーのデフォルトを上書きします。
多くの場合、これらは、デーモンが起動スクリプトからサービスとして起動するときに使用されるシステムのデフォルトとは異なります。# export
起動スクリプト内の行のコメントを解除し、適切な設定で環境を設定します。