Changes between Version 4 and Version 5 of HowTo/SakuraVpsSetup3b


Ignore:
Timestamp:
Oct 31, 2019, 7:20:57 AM (5 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/SakuraVpsSetup3b

    v4 v5  
    892892
    893893さて、 uWSGI はデーモンとして動いてはいますが、サーバーを再起動した場合に自動で起動する設定にはなっていません。最後にその設定を施しておくことにします。
     894
     895最初は頑張って `/etc/init.d` の下にスクリプトを書こうかとも思ったのですが、 systemd を使う方法が楽そうだったのでそっちにしました。
     896`/etc/systemd/system/trac.service` ファイルに設定を記述すれば、 `trac` という名前のサービスを登録することが出来ます。
     897
     898{{{
     899#!console
     900$ sudo vim /etc/systemd/system/trac.service
     901}}}
     902
     903記述内容は以下の通り。
     904
     905{{{
     906[Unit]
     907Description=Trac service on uWSGI
     908After=network.target
     909ConditionPathExists=/var/Developer/trac/original
     910
     911[Service]
     912WorkingDirectory=/var/Developer/trac/original
     913ExecStart=/usr/local/bin/uwsgi --ini trac-original.ini
     914ExecReload=/usr/local/bin/uwsgi --stop /var/Developer/trac/run/uwsgi-original.pid
     915ExecStop=/usr/local/bin/uwsgi --stop /var/Developer/trac/run/uwsgi-original.pid
     916Restart=on-failure
     917Type=forking
     918
     919[Install]
     920WantedBy=multi-user.target
     921}}}
     922
     923uWSGI はデーモンモードで動かす場合、起動時に処理をすぐにシェルに返す (=子プロセスを起動しっぱなしにして PID ファイルを置いて終了する) ので、 `Type` は `forking` にしておきます。 `User` は不要です (恐らく起動/終了は root で実行されます… アプリケーションの実行ユーザーは uWSGI 側の設定ファイルに記述されているのでそこは気にする必要ないです)。
     924
     925既存の設定ファイルやネットでの情報を見ていて `ExecReload` があれば `ExecStop` は不要なのかとも思ったのですが、両方書いておいたほうが終了を伴う操作時の動作は安定するような気がします (この辺まだちょっと判然とはしてません…)。なお、 `ExecReload` には単に終了するコマンドを記述します (一般的には `/bin/kill -HUP $MAINPD` を呼ぶケースが多いようです…もちろんこれは `Type = simple` や `Type = notify` で動いて systemd 自信が PID を握っている場合の書き方ですが…)。
     926
     927サービスを登録し、サービス経由で起動します。念のため、事前に手動で uWSGI を終了しておきましょう。
     928
     929{{{
     930#!console
     931$ uwsgi --stop /var/Developer/trac/run/uwsgi-original.pid
     932$ sudo systemctl enable trac
     933$ sudo service trac start
     934}}}
     935
     936Idea Note がちゃんと動いていることを確認。 PID ファイルや UNIX ソケットファイルの存在も確認。 `restart` でちゃんと PID ファイルの PID が変化することや、サーバーを `reboot` しても自動で起動することなども確認済みです。