ansible Playbook で node.js アプリを開始したいと考えています。現在、最終的なディレクティブは次のようになっています。
- name: start node server
shell: chdir=${app_path} npm start&
問題は、そこから ansible が戻らないことです。どうしたら続けられるでしょうか?
Forever を使用することは、nodejs アプリをバックグラウンドで実行するための最良のソリューションです。@geerlingguy のソリューションは、アプリを 1 回実行する場合には優れていますが、アプリを再デプロイする場合は、最初にサーバーを停止してから再度起動する必要があります。
- name: Get app process id
shell: "ps aux | grep app.js | grep -v grep | awk '{print $2}'"
register: process_id
- name: Stop app process
shell: kill -9 {{ item }}
with_items: process_id.stdout_lines
ignore_errors: True # Ignore error when no process running
- name: Start application
command: forever start path/to/app.js
environment:
NODE_ENV: production # Use this if you want to deploy the app in production
nohup を使用してみてください:
- name: start node server
shell: chdir=${app_path} nohup npm start &
ただし、アプリが終了した場合に自動的に再起動するように、foreverを使用することをお勧めします。