個人的に使ってvps環境でuwsgiを使ったアプリケーションを動かすのにどうやって起動・終了するか?ということを考えるとsystemdを選ぶのですが(vpsはCentOS 7環境なので。あと普段使ってるArchもsystemdだからというのも)、できたらアプリごとに.serviceは書きたくないよなーというときにどうやるのかを調べた結果のめも。
例えば、OpenVPNで接続するはsystemctl start openvpn@ユーザー名というふうにしているのでこの方法でイケるはず、ということで下記のような書き方でOKだった( ´∀`)bグッ!
まず、ファイル名の.serviceの前に@をつけた名称にする。
これで systemctl start uwsgi@アプリ名とすると%iでアプリ名が取れるのでこれで切り替えが可能。アプリ名をfoobarとした場合、/usr/local/etc/uwsgi/foobar.iniを読み込み、pidファイルとして/run/uwsgi@foobar.pidというファイルが作られる。
[root@www3221u uwsgi]# cat /etc/systemd/system/uwsgi\@.service [Unit] Description=run uwsgi application %i After=network.target remote-fs.target nss-lookup.target [Service] ExecStart = /usr/bin/uwsgi --ini /usr/local/etc/uwsgi/%i.ini --pidfile /run/uwsgi@%i.pid ExecReload = /usr/bin/uwsgi --reload /run/uwsgi@%i.pid ExecStop = /usr/bin/uwsgi --stop /run/uwsgi@%i.pid Type = notify PIDFile=/run/uwsgi@%i.pid [Install] WantedBy=multi-user.target
enable/disableはsystemctl enable uwsgi@foobarとすればok。
【改訂新版】Linuxエンジニア養成読本 [クラウド時代も、システムの基礎と基盤はLinux! ] (Software Design plus)
- 作者: 養成読本編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/18
- メディア: 大型本
- この商品を含むブログ (1件) を見る