2014-09-19 127 views
1

我已經使用Vagrant/Puppet(從puphpet.com生成)在Ubuntu環境中設置了一個node.js應用程序。我將把完成的軟件包發送給某個人,並且希望node.js應用程序能夠在「vagrant up」完成後運行(以便它們不必通過ssh和運行命令進行連接) 。Ubuntu + Vagrant + Puphpet:如何在啓動時自動啓動node.js應用程序?

該puphpet下載包包括一個文件夾/ p​​uphpet/files/start-always和/ exec-always,我想知道如果我可以使用這些。

或者,如果我沒有弄錯,也可以在.Vagrant文​​件末尾添加一些Ubuntu運行命令(只是不確定語法)。

任何人都有這方面的經驗?

回答

5

解決方案:想通了。對於需要知道的人:創建一個名爲run.sh/puphpet/files/exec-once(或您需要的文件夾/頻率)的文件(這些文件按字母順序加載,所以如果您有多個文件,請適當命名文件)。示例文件:

#!/bin/bash 
sudo npm install pm2 -g --unsafe-perm 2&>1 >/dev/null 
cd /var/www/app && sudo pm2 start app.js 

在這種情況下,我安裝被稱爲「PM2」的NPM模塊(2&>1 >/dev/null將隱藏控制檯和錯誤消息)。此模塊允許您將node.js應用程序作爲服務運行。下一行我們必須cd進入應用程序目錄,並從那裏,啓動應用程序sudo pm2

從這個角度來看,node.js應用程序會自動運行/重啓(包括應用程序崩潰或Ubuntu重啓時),因此您不必多次運行此命令(因此/exec-once文件夾改爲exec-always,每次運行時都會運行「vagrant up」,包括初始設置後的未來啓動)。

pm2還具有允許您監視文件夾中的更改的功能,以便您的node.js應用程序將在您開發時自動重新啓動。有關這些詳細信息,請參閱pm2文檔或在ssh中鍵入pm2

+5

其實,你應該把它移到「puphpet/files/startup-always」。 '執行一次'和'永遠執行'已經改爲只在第一次'上'或在每個'規定'期間運行。因此,如果您'流浪停止&&流浪',nodejs應用程序將不再運行。發佈文檔:https://github.com/puphpet/puphpet/issues/389 – nover 2014-12-01 15:55:34

相關問題