PM2+GitHub ActionsでNodeアプリを本番環境で運用する。
前回までの記事でサーバーの構築とSSL通信関係の設定は終わっているので、本題のNodeアプリの動作環境を構築します。ついでにGithub Actionsを使って自動デプロイできるようにします。
前回記事はこちら
PM2をインストール
# npm install -g pm2
Nodeアプリ準備してPM2で起動する
# mkdir /etc/nodeapps # cd /etc/nodeapps # git clone https://github.com/takashun/Nekotter # cd Nekotter # npm install # npm run build # pm2 start npm --name Nekotter -- start
ヨシ!
Github Actionsの設定
デプロイの方法にも色々ありますが、今回はGithub Actionsを使います。
仕組みとしては簡単で、自動でSSHにログインして所定のコマンドを実行させるだけです。
.github/workflowsにdeploy.ymlを作成して以下の内容を書き込みます。
name: Deploy on: push: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - name: ssh env: SECRET_KEY: ${{ secrets.SECRET_KEY }} SSH_USER: ${{ secrets.SSH_USER }} SSH_ADDR: ${{ secrets.SSH_ADDR }} SSH_PORT: ${{ secrets.SSH_PORT }} SSH_COMMAND: ${{ secrets.SSH_COMMAND }} run: | echo "$SECRET_KEY" > secret_key chmod 600 secret_key ssh -oStrictHostKeyChecking=no ${SSH_USER}@${SSH_ADDR} -p $SSH_PORT -i secret_key "$SSH_COMMAND"
(-oStrictHostKeyChecking=noオプションは中間者攻撃を可能にしてしまうので注意)
そしてGitHubでSettings > Secrets > New Secretから環境変数を設定してください。必要なのは上記のenv下にある5つで、SSH_COMANDには下記の内容を設定しました。
sudo pm2 stop Nekotter && cd /etc/nodeapps/Nekotter && git pull && npm install && npm run build && sudo pm2 start npm --name Nekotter -- start
適切に設定できていれば、下記のようにデプロイが成功するはずです。
3回失敗してるやん
まとめ
Github Actionsすごい便利。
-oStrictHostKeyChecking=noオプションを使わない方法を今度試してみようと思います。