uwsgiに再起動時に "/run/uwsgi"フォルダを作成させる最良の方法は何ですか?

uwsgiに再起動時に

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]あなたのユニットファイルに。

これは短く、正しいユーザー/グループの所有権で作成されたことを保証し、デーモンが停止したときにディレクトリをクリーンアップするという利点があります。

おすすめ記事