uwsgiとnginxで実行するようにDjangoプロジェクトを設定し、再起動時にfsに/ run /フォルダが再作成されるまでuwsgiが正しく起動しないことを除いて、すべてが期待どおりに実行されます。 /runは "tmpfs"にマップされるため、起動するたびに再生成する必要があります。
uwsgi用に生成されたsystemdサービスファイルがあります。
[Unit]
Description=uWSGI Module
After=syslog.target
[Service]
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=main
[Install]
WantedBy=multi-user.target
ファイル/etc/uwsgi.ini
は次のとおりです。
[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
stats = /run/uwsgi/stats.sock
socket = /run/uwsgi/uwsgi.sock
master = true
processes = 1
chdir = /path/to/our/django/app
module = icscada
max-requests = 100
daemonize = /var/log/uwsgi.log
/run/uwsgi
起動するたびにフォルダを再作成するための推奨方法は何ですか?
ベストアンサー1
tmpfiles.d(5)から:
システムデーモンには、通信ソケットや同様のディレクトリに対応するために/ runの下にプライベートランタイムディレクトリが必要なことがよくあります。これを可能にする場合は、RuntimeDirectory =(詳細についてはsystemd.exec(5)を参照)を使用してユニットファイルで宣言することを検討してください。
そしてsystemd.exec(5)から:
ランタイムディレクトリ=、ランタイムディレクトリモード=
ディレクトリ名のリストを取得します。設定すると、デバイスの起動時に/run(システムサービスの場合)または$ XDG_RUNTIME_DIR(ユーザーサービスの場合)の下に指定された名前の1つ以上のディレクトリが作成され、デバイスが停止すると削除されます。これらのディレクトリはRuntimeDirectoryMode =で指定されたアクセスモードを持ち、User =とGroup =で指定されたユーザーとグループが所有します。これを使用して、ユニットの1つ以上のランタイムディレクトリを管理し、そのライフサイクルをデーモンランタイムにバインドします。
つまり、この「作業」を達成するためにtmpfiles.dを使用するときに正式に推奨される方法は、以下を追加することです。
RuntimeDirectory=uwsgi
[Service]
あなたのユニットファイルに。
これは短く、正しいユーザー/グループの所有権で作成されたことを保証し、デーモンが停止したときにディレクトリをクリーンアップするという利点があります。