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が起動するようになります。