forever讓nodejs應用後台執行

來源:互聯網
上載者:User

標籤:list   項目   日誌   idf   log   start   etc   conf   變化   

nodejs一般是當成一條使用者命令執行的,當使用者斷開客戶串連,運用也就停了,很煩人。如何讓nodejs應用當成服務,在後台執行呢?

最簡單的辦法:

$ nohup node app.js &

但是,forever能做更多的事情,比如分別記錄輸出和錯誤記錄檔,比如可以在js中作為api使用。

$ sudo npm install forever -g   #安裝$ forever start app.js          #啟動$ forever stop app.js           #關閉$ forever start -l forever.log -o out.log -e err.log app.js   #輸出日誌和錯誤

命令文法及使用 https://github.com/nodejitsu/forever

個人覺著forever的幾個好處

1, daemon 不用自己寫 2, 自動重啟, 特別適合web項目 3, 進程管理

forever -w app.js -w 參數是自動監控檔案變化,檔案修改儲存了自動重啟app.js。非常爽。唯一不爽的是那個 .foreverignore 不起作用,作者一直沒有修改。

 

本質上就是在forever進程之下,建立一個node app的子進程。

forever使用說明

// 1. 簡單的啟動forever start app.js// 2. 指定forever資訊輸出檔案,當然,預設它會放到~/.forever/forever.logforever start -l forever.log app.js// 3. 指定app.js中的日誌資訊和錯誤記錄檔輸出檔案,//  -o 就是console.log輸出的資訊,-e 就是console.error輸出的資訊forever start -o out.log -e err.log app.js// 4. 追加日誌,forever預設是不能覆蓋上次的開機記錄,//  所以如果第二次啟動不加-a,則會不讓運行forever start -l forever.log -a app.js// 5. 監聽當前檔案夾下的所有檔案改動forever start -w app.js
forever list // 1. 監聽當前檔案夾下的所有檔案改動(不太建議這樣) forever start -w app.js // 1. 停止所有啟動並執行node App forever stopall // 2. 停止其中一個node App forever stop app.js // 當然還可以這樣 // forever list 找到對應的id,然後: forever stop [id]重啟操作跟停止操作保持一致。

 

// 1. 啟動所有forever restartall
開發和線上建議配置
// 開發環境下NODE_ENV=development forever start -l forever.log -e err.log -a app.js// 線上環境下NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js
上面加上NODE_ENV為了讓app.js辨認當前是什麼環境用的。不加它可能就不知道哦?

這個時候需要注意配置好環境變數。

SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
我們要讓Forever自動運行,先在 /etc/init.d目錄建立一個檔案 node,內容如下:
    stop)        forever stop --pidFile $PID $DEAMON        ;;    stopall)        forever stopall --pidFile $PID        ;;    restartall)        forever restartall --pidFile $PID        ;;    reload|restart)        forever restart -l $LOG/forever.log -o $LOG/forever_out.log -e $LOG/forever_err.log --pidFile $PID -a $DEAMON        ;;    list)        forever list        ;;    *)        echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"        exit 1        ;;esacexit 0


以上代碼是我在本地虛擬機器的配置,根據實際情況修改相關參數,主要是DEAMON的路徑參數,賦予該檔案可執行許可權,並運行chkconfig添加自動運行:


reboot重啟系統,通過瀏覽器進入網站可發現,該NodeJS已經可自動運行了……

 

forever讓nodejs應用後台執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.