はじめに
- linuxにSSHを使って接続中
- コマンドでサーバーの起動・停止をしたい
- 再起動したときにサーバーを自動で起動するようにしたい!
- nodejsのサーバーをコマンドラインで起動していて、再起動するときに毎回
Ctrl+C
→node index.js
はめんどくさい!
1. systemdへの登録
nanoなどで下のファイルを作成して編集します
sudo nano /etc/systemd/system/myNodeServer.service
[Unit]
# プログラムの名前
Description= Node.js Server
[Service]
Type=simple
User=username
# nodejsの動いているディレクトリ
WorkingDirectory=/home/username/Desktop/node/
# 起動するためのスクリプトの配置先
ExecStart=/home/username/Desktop/node/start.sh
# 落ちたら自動で再起動する設定
Restart=always
RestartSec=200
# 出力先(今回は標準のsyslog)
StandardOutput = syslog
StandardError = syslog
# syslogでプログラムを判別するための名前
SyslogIdentifier = myNodeServer
[Install]
WantedBy=multi-user.target
その他の細かい設定などはほかの記事を見てください
2. 起動用スクリプトを用意
#!/bin/bash
cd /home/username/Desktop/node
node index.js
環境に合わせて変えてください
3. systemdの再読み込み
-
sudo systemctl daemon-reload
でファイルを再読み込み -
sudo systemctl restart myNodeServer.service
で再起動少し経ったら
-
systemctl status myNodeServer.service
で状態を確認してみましょう
● myNodeServer.service - Node.js Server
Loaded: loaded (/etc/systemd/system/myNodeServer.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2024-03-01 14:48:59 JST; 1 weeks 5 days ago
Main PID: 23285 (start.sh)
Tasks: 13 (limit: 2057)
CPU: 8min 46.411s
CGroup: ...
myNodeServer.service - Node.js Server
の左が緑色の ● になっていて
Active: active (running)
と出ていれば成功です!
もしダメだった場合は
journalctl -u testapp
でログを確認してみましょう
どこが間違っているのか教えてくれます。
あとはGoogle先生に聞いてみましょう
おわり
sudo systemctl enable myNodeServer.service
で再起動したときに自動で起動するようになります
状態の確認 systemctl status myNodeServer.service
起動 sudo systemctl start myNodeServer.service
停止 sudo systemctl stop myNodeServer.service
これらが1コマンドでできるようになりました!
読んでくれてありがとうございました!
初めての記事なので改善点や間違いなどあるかもしれませんが、見つけたらコメントしていただけると助かります!