Quantcast
Viewing all articles
Browse latest Browse all 8695

systemctlってめちゃくちゃ便利なんだな...

nodeのアプリをforeverでデーモン化しようと思っていたところ、そもそもsystemctl使えば必要なかったという話です。

前提

  • ts-nodeのexpressアプリをデーモン化したい
  • サーバー起動時にも起動したい
  • AWSのEC2

systemctlの設定を書く

systemctlは昔のserviceコマンドに替わるものですがだいぶ便利になっています。

昔はinit.dにややこしい起動スクリプトを書く必要がありましたが今では、

/usr/lib/systemd/system/foo.service
[Unit]
Description=foo

[Service]
Type=simple
ExecStart="/home/ec2-user/repo/script/start.sh"

[Install]
WantedBy=multi-user.target

これだけで

$ sudo systemctl enable foo
$ sudo systemctl start foo
$ sudo systemctl stop foo

できます。

start.shには、普通にyarn startが書かれています。
もちろんパスを通したりする必要はありますが。
こんな感じで書いてます。

start.sh
#!/bin/bashset-ecd /home/ec2-user/repo

export PATH=/home/ec2-user/.nvm/versions/node/v14.3.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin:$PATHexport NVM_DIR="$HOME/.nvm"[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"

/home/ec2-user/.nvm/versions/node/v14.3.0/bin/yarn start

便利な世の中になりましたね。

どうでもいいけどserviceコマンドと違って

$ service foo start
$ systemctl start foo

逆なのがなかなか慣れない...


Viewing all articles
Browse latest Browse all 8695

Trending Articles