一、nodejs應用普通部署方式介紹
終於要把nodejs的應用程序部署上線了, 把源代碼通過git複製到目錄下面
複製代碼代碼如下:/root/deploy/movie
然後搞命令:
複製代碼代碼如下:
~ cd /root/deploy/movie
node ./app.js
上面的方式,nodejs程序會在當前的console界面中運行,一旦console結束,應用也會停止。我們改一下命令,讓程序在後台運行
複製代碼代碼如下:
~ node ./app.js &
[1] 21333
[2013-06-21 09:38:30.696] [INFO] console - Start App: http://VeVB.COm
[2013-06-21 09:38:30.700] [INFO] console - Express server listening on port 3000
這樣程序就就在後台啟動了。進程正常運行著,我也不用做太多的事情。
如果我想停止這個程序,怎麼辦呢? 找到nodejs的系統進程,再殺死。
複製代碼代碼如下:
~ ps -aux|grep node
root 21333 0.6 3.7 909200 38292 pts/0 Sl 09:38 0:00 node app.js
~ kill -9 21333
直接暴力解決。如果能像系統服務一樣,來啟動和關閉nodejs應用,多好啊!下面就通過upstart來完成把nodejs應用封裝為系統服務。
二、 把應用封裝為upstart任務腳本
複製代碼代碼如下:
~ vi /etc/init/nodejs-moive.conf
description "node.js VeVB.COm"
start on startup
stop on shutdown
script
export HOME="/root/deploy/movie"
echo $$ > /var/run/moiveme.pid
export NODE_ENV=production
exec /usr/bin/node /root/deploy/movie/server.js
#日誌輸出
#exec /usr/bin/node /root/deploy/movie/server.js >> /var/log/moiveme.log 2>&1
end script
pre-start script
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/moiveme.log
end script
pre-stop script
rm /var/run/moiveme.pid
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/moiveme.log
end script
三、 使用upstart管理nodejs應用
啟動nodejs-moive應用(上面的任務腳本),進程ID:21257
複製代碼代碼如下:
~ start nodejs-moive
nodejs-moive start/running, process 21257
~ tail -f /var/log/moiveme.log
[2013-06-21T09:21:17.122Z] (moive.me) Starting
~ ps aux|grep node
root 21257 8.0 3.7 909204 37824 ? Ssl 09:21 0:00 /usr/bin/node /root/deploy/movie/server.js
查看運行狀態, 進程21257正常運行
複製代碼代碼如下:
~ status nodejs-moive
nodejs-moive start/running, process 21257
殺死nodejs應用進程21257,通過upstart管理,nodejs-moive應用會自動重啟
複製代碼代碼如下:
~ kill -9 21257
#自動重啟日誌
~ tail -f /var/log/moiveme.log
[2013-06-21T09:21:33.662Z] (moive.me) Starting
#查看系統進程,發現進行ID變了
~ ps -aux|grep node
root 21280 9.1 3.7 909204 37704 ? Ssl 09:21 0:00 /usr/bin/node /root/deploy/movie/server.js
#查看進程狀態,進程ID確實變了,而且是自動完成的
~ status nodejs-moive
nodejs-moive start/running, process 21280
這樣很方便地我們可以通過upstart,以系統服務的方式管理nodejs應用。運維起來會很容易! !