Gitit を systemd のサービスとして起動する

さくらVPSのOSをCentOS7にしたので,Wikiも新しくしようと思いGititを動かし始めました.
GititのインストールなどについてはgithubのREADMEを参考に,cabalでインストールすると良いと思います.

さて,このGititをサーバとして動かす際にちょっと調べたことがあったのでメモします.

Serviceを定義する上で注意したこと

  1. 実行ユーザを固定したい(セキュリティ的な意味で)
  2. gititコマンドがサーバの本体なので,動かし続けなければならない
  3. Wikiのデータが配置される場所でgititコマンドを実行する必要がある

systemd用のserviceについてはsystemd徹底入門のスライドがとても詳しいので参考にすると良いと思います.

まずは真似する

兎にも角にも,serviceの書き方がよくわからなかったので,同じサーバアプリケーションである(?)Nginxのserviceをコピーしました.(いいのかどうかはよくわからないですが)

network.targetとかmulti-user.targetとか既に書いてあるので便利ですね(・∀・)

これを元に,以降書き換えand追記していきます.
最後にgitit.serviceのファイル全体を載せるので,せっかちな人はスクロールしてください(´・ω・`)

実行ユーザの変更

実行ユーザは[Service]セクションのUser,Group値を設定すれば良いらしいです.
なので,以下のように追記.

サーバプログラムを動かし続ける

ServiceにはTypeという値が与えられます.Typeは実行するコマンドの動作によって決めます.今回は”ずっと動かし続ける”プログラムなので,Typeとしてsimpleを設定します.(フォアグランドで動き続けるプログラムなので)

コマンドを実行する場所を変える

3番目の問題である,Wikiデータの置いてある場所でコマンドを実行させる方法について.
bashとかだと”cd hoge && foo”みたいに普段は書いてしまうので,同じように最初書いたらsystemctlさんに怒られてしまいました(;_;)

serviceではコマンドを実行する場所は,WorkingDirectoryという値で決められるらしく,この値をWikiデータのある場所に設定します.

実行方法

serviceを/usr/lib/systemd/system以下に配置すれば,他のサービスと同様にsystemctlコマンドで実行することができます.

今回つくったファイル

参考:
Linux女子部 systemd徹底入門
systemd の .service ファイルの書き方
[systemd-devel] WorkingDirectory in service file
Haskell パッケージのインストール方法

未分類

Posted by tanitanin


PAGE TOP