コンテンツにスキップ
Linuxサービス

Linuxサービス

systemdまたはsupervisordを使用すると、machbase-neoプロセスをシステムサービスとして登録し、起動時に自動的に開始できます。

起動・停止スクリプトの作成

neo-start.shの作成

$ vi neo-start.sh

serveコマンドに--pid <path>フラグを指定して、プロセスIDを指定したパスのファイルに記録します。

1
2
3
4
5
#!/bin/bash
exec /data/machbase-neo serve \
    --pid /data/neo.pid \
    --host 0.0.0.0 \
    --log-filename /data/log/machbase-neo.log

シェルスクリプトに実行権限を付与します。

$ chmod 755 neo-start.sh

neo-stop.shの作成

$ vi neo-stop.sh

保存したpidファイルを使ってkillコマンドで停止し、kill -0でプロセスが完全に終了するまで待ちます。

1
2
3
4
5
6
#!/bin/bash 
PID=`cat /data/neo.pid`
kill $PID
while kill -0 $PID 2>/dev/null; do
  sleep 1
done
$ chmod 755 neo-stop.sh

systemd

neo.serviceの作成

$ cd /etc/systemd/system
$ sudo vi neo.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[Unit]   
Description=neo service   
StartLimitBurst=10   
StartLimitIntervalSec=10   
  
[Service]   
User=machbase   
LimitNOFILE=65535   
ExecStart=/data/neo-start.sh
ExecStop=/data/neo-stop.sh
ExecStartPre=sleep 2   
WorkingDirectory=/data   
Restart=always   
RestartSec=1   
  
[Install]   
WantedBy=multi-user.target   
  • 環境に合わせてUserとパスを変更してください。

サービスの有効化

$ sudo chmod 755 neo.service
$ sudo systemctl daemon-reload

ホストの再起動時に自動的に開始するように設定します。

$ sudo systemctl enable neo.service

完了

サービスを有効にした後は、以下のコマンドで操作できます。

$ sudo systemctl start neo.service
$ sudo systemctl status neo.service
$ sudo systemctl stop neo.service

supervisord

neo.confの作成

$ cd /etc/supervisor/conf.d
$ sudo vi neo.conf
1
2
3
4
5
6
7
8
9
[program:neo]
command=/data/neo-start.sh
priority=10   
autostart=true   
autorestart=true   
environment=HOME=/home/machbase   
stdout_logfile=/data/log/machbase-neo_stdout.log   
stderr_logfile=/data/log/machbase-neo_stderr.log   
user=machbase   
  • 環境に合わせてuserとパスを変更してください。
  • 上記の例では、ログフォルダー/data/logがあらかじめ存在する必要があります。

Supervisordの更新

$ sudo supervisorctl reread
$ sudo supervisorctl update

完了

サービスを有効にした後は、次のコマンドでmachbase-neoを操作できます。

$ sudo supervisorctl start neo
$ sudo supervisorctl status neo
$ sudo supervisorctl stop neo

PM2

neo-start.shの作成

$ vi neo-start.sh
1
2
#!/bin/bash
exec /data/machbase-neo serve --host 0.0.0.0
  • ログはPM2が管理するため、--log-filenameオプションは不要です。

neo-start.shへの実行権限の付与

$ chmod 755 neo-start.sh

PM2によるmachbase-neoの起動

$ pm2 start /data/neo-start.sh --name neo --log /data/log/machbase-neo.log

machbase-neoの状態を確認します。

$ pm2 status neo

PM2の自動起動設定

  • 設定済みの場合は、この手順を省略できます。

起動スクリプトを自動生成するには、pm2 startupコマンドをsudoなしで実行します。

$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u machbase --hp /home/machbase

表示されたコマンドをコピーしてターミナルに貼り付けます。

1
$ sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u machbase --hp /home/machbase

これでPM2は起動時に自動的に再起動します。

アプリケーション一覧の保存

すべてのアプリケーションを起動した後に一覧を保存すると、再起動後に自動的に復元されます。

$ pm2 save

完了

以下のコマンドでmachbase-neoを操作できます。

$ pm2 start neo
$ pm2 status neo
$ pm2 stop neo
$ pm2 restart neo

$ pm2 logs neo
$ pm2 monit
最終更新日