自ら環境を構築して執筆するブログ

uWSGIをsystemdで動かす

このサイトはnginxサーバを使用しており、nginxでDjangoを動かすためにuWSGIを使用しています。

これまでサーバを再起動させるたびに手動でuWSGIを起動させていたのですが、面倒くさくなってきたのでsystemdで動くようにしました。

今回の場合、uWSGIはpythonライブラリのものなのですがpyenvで構築した環境で実行させています(パスは~/.pyenv/shims)。pyenvを使うことについては通常.bash_profileファイルで規定します。だからsystemdで実行させる際にも.bash_profileを反映させる必要があります。

手順としては、systemd のために適当なユニットファイル(uwsgi.serviceとします。)を作成します。最終的にはこのような形になりました。


[Unit]
Description = uWSGI
After = syslog.target

[Service]
ExecStart = /usr/bin/bash -c " source /(ホームディレクトリ)/.bash_profile && /(ホームディレクトリ)/.pyenv/shims/uwsgi --ini /(ussgi.iniがあるパス)/uwsgi.ini "
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target
 

上記コード中のパスは適切に変えてください。

ユニットファイルをroot権限で/usr/lib/systemd/system/にコピーします。

それからsudo systemctl start uwsgiでuWSGIが起動するはずです。さらにsudo systemctl enable uwsgiでシステム起動にともない自動的にuWSGIが起動するようになります。