動作環境
- ubuntu16.04
pm2って何
- Nodejsアプリを動かすための仕組みの一つ
- インスタンスと一緒にNodejsアプリを自動起動(デーモン化)したり、pm2コマンドから停止したりできる
- Nodejsはシングルスレッドだけど、pm2で起動する事でCPUのクラスタリングもできる
- Nodejsアプリのログの保存も勝手にやってくれる
- アプリが落ちたら10回までは再起動してくれる
- 似た用途の物では forever というのがある
個人的にはNodejsのウェブサーバの負荷テストをする事があったので、
ログを保存してくれる & 再起動を勝手にやってくれる
の2つの特徴にかなり助けられました・・・
pm2で自動起動するメリット
- pm2から起動、停止する事が出来る(もしcrontabでやってたら一々面倒です)
- コマンドから起動できるものは大体なんでもこの手順で自動起動出来る
自動起動手順
1.npmをインストールする
npmっていうのはNodejsのパッケージマネージャです。
nodejsとnpmをインストールします。
$ apt update
$ apt install nodejs npm
2.pm2をインストールする
$ npm install -g pm2
3.Nodejsで外部コマンドを実行するプログラムを書く
$ cd [server.jarのあるディレクトリ]
$ echo 'console.log(require('child_process').execSync('java -jar server.jar').toString())' > main.js
4.pm2で実行する
必ずserver.jarのあるディレクトリに移動してからおこなってください、そうしないと / にワールドデータが作成されてしまいます。
$ pm2 start main.js --name="minecraftserver"
5.起動できている事を確認する
$ pm2 list
6.pm2の状態を保存する
$ pm2 startup
$ pm2 save
pm2 saveをすると、その時の起動状態をインスタンス起動時に復元してくれます。
試しにrebootして、しばらく時間が経った後にサーバーに接続できるか確認してみてください。
停止するには
サーバーのコマンドを入力したいときはpm2での起動はしたくないですよね。
停止する時
$ pm2 stop minecraftserver
再起動後も自動起動しないで欲しい時
$ pm2 delete minecraftserver
$ pm2 save
以上の手順でマインクラフト以外の様々なプログラムを自動起動したり起動/停止管理する事も可能です。