LoginSignup
10
5

More than 3 years have passed since last update.

systemdのserviceファイルをsymlinkにする

Last updated at Posted at 2019-10-22

なんかサービスを作ってlinux上で動かす場合、最近だとsystemdのserviceファイルを書いて、/etc/systemd/system/ の下に置くことになっている。

10.6. systemd のユニットファイルの作成および変更 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

nginxとかもそうなんだけど、こうやって/etc/の下に設定ファイルをおいてしまうと、そのファイルはサービスとは別に管理することになってしまうので、秘伝のソース化しやすい。できればプロジェクトコードと一緒にgit管理下においておきたい。

(別案として、Dockerとかを使ってサーバをまるごとmachine as a serviceに管理できればよりベターかも知れないけど、それはまた別の話)

そのために、/etc/systemd/system/からプロジェクト内に作った moapi.service ファイルにシンボリックを作ってみるのだけど、なんかうまく行かなさそうに見える

$ ls -la /etc/systemd/system
total 40
:
lrwxrwxrwx  1 root root   33 2019/10/22 17:28:58 moapi.service -> /var/www/moapi/rack/moapi.service
$ sudo systemctl enable moapi                  
Failed to execute operation: Too many levels of symbolic links

man systemctl見ると、systemctl linkで作ると良いぽいことが書いてあった

$ sudo systemctl link /var/www/moapi/rack/moapi.service
Created symlink from /etc/systemd/system/moapi.service to /var/www/moapi/rack/moapi.service.
$ sudo systemctl enable /var/www/moapi/rack/moapi.service
Created symlink from /etc/systemd/system/multi-user.target.wants/moapi.service to /var/www/moapi/rack/moapi.service.

シンボリックリンクで登録する場合、enableまではファイル名で指定してあげないといけないらしい。
以後start/stopは名前だけで実行できるようになる

sudo systemctl start moapi
10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5