forever是管理Node.js程序後台運行的工具 在命令行終端中用forever管理Node.js很簡單
#!/bin/bash
# chkconfig: 345 88 08
# description: Forever for Node.js
DEAMON=/home/www/jsgen/app.js
LOG=/home/www/jsgen/mylogs/forever.log
PID=/root/.forever/pids/forever.pid
export PATH=$PATH:/usr/bin/node/bin
export NODE_PATH=$NODE_PATH:/usr/bin/node/lib/node_moles
node=node
forever=forever
case "$1" in
start)
$forever start -l $LOG --pidFile $PID -a $DEAMON
;;
stop)
$forever stop --pidFile $PID $DEAMON
;;
stopall)
$forever stopall --pidFile $PID
;;
restartall)
$forever restartall --pidFile $PID
;;
reload|restart)
$forever restart -l $LOG --pidFile $PID -a $DEAMON
;;
list)
$forever list
;;
*)
echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
exit 1
;;
esac
這個腳本就是jsGen目錄下的forever文件,腳本中的相關路徑是AngularJS中文社區伺服器軟體路徑。
啟用該腳本的命令如下(假設已經git clone jsGen):
cd jsgen
cp forever /etc/init.d/forever
chmod 755 /etc/init.d/forever
chkconfig --add forever
chkconfig forever on
reboot伺服器試試,jsGen終於自動跑起來了。為什麼以前可以的方法現在不行了呢?我也不太清楚。。。這次出問題的關鍵是:centos系統啟動後自動運行該腳本時大概沒有找到forever命令,所以上面腳本中最關鍵的地方是:
export PATH=$PATH:/usr/bin/node/bin
forever=forever
然後腳本中運行的是$forever。centos系統就這樣解決了。
Ⅱ linux如何後台運行node服務
在你的任意目錄輸入命令: npm install pm2 -g
1.找到全局環境PATH路徑
輸入命令: echo $PATH
回車後: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
你的路徑和我的可能不一樣,但沒關系,你可以選擇任何一個以:隔開的路徑做為系統環境路徑,我通常會選 /usr/local/bin
2:找到pm2的安裝路徑
在上面輸入 npm install pm2 -g 全局安裝時
/usr/sbin/nodejs/bin/pm2 -> /usr/sbin/nodejs/lib/node_moles/pm2/bin/pm2
/usr/sbin/nodejs/bin/pm2 是安裝路徑(你的可能和我的不一樣)
3.好了都找到了,
就重要的一步要開始了,睜大你的雙眼。
命令為: ln -s /usr/sbin/nodejs/bin/pm2 /usr/local/bin/ (注意空格)
格式: ln -s 空格 pm2安裝路徑 空格 系統環境路徑
OK,搞定,接下來驗證一把…
[root@iZmwyb7v60px1zZ ~]# pm2 list
回車...
$ pm2 start app.js # 啟動app.js應用程序
$ pm2 start app.js –name=」api」 # 啟動應用程序並命名為 「api」
$ pm2 start app.js –watch # 當文件變化時自動重啟應用
$ pm2 start script.sh # 啟動 bash 腳本
$ pm2 list # 列表 PM2 啟動的所有的應用程序
$ pm2 monit # 顯示每個應用程序的CPU和內存佔用情況
$ pm2 show [app-name] # 顯示應用程序的所有信息
$ pm2 logs # 顯示所有應用程序的日誌
$ pm2 logs [app-name] # 顯示指定應用程序的日誌
$ pm2 stop all # 停止所有的應用程序
$ pm2 stop 0 # 停止 id為 0的指定應用程序
$ pm2 restart all # 重啟所有應用
$ pm2 reload all # 重啟 cluster mode下的所有應用
$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
$ pm2 delete all # 關閉並刪除所有應用
$ pm2 delete 0 # 刪除指定應用 id 0
$ pm2 scale api 10 # 把名字叫api的應用擴展到10個實例
$ pm2 reset [app-name] # 重置重啟數量
$ pm2 startup # 創建開機自啟動命令
$ pm2 save # 保存當前應用列表
$ pm2 resurrect # 重新載入保存的應用列表
$ pm2 update # Save processes, kill PM2 and restore processes
$ pm2 generate # Generate a sample json configuration file
Ⅲ nodejs 線上部署 也需要npm start么
pm2=P(rocess)M(anager)2,是可以用於生產環境的Nodejs的進程管理工具,並且它內置一個負載均衡。它不僅可以保證服務不會中斷一直在線,並且提供0秒reload功能,還有其他一系列進程管理、監控功能。並且使用起來非常簡單。下面我將把我的使用過程分享出來,Nodejs應用是一個基於Express 4.x的應用,名稱是Wolverine。
安裝
環境清單:
windows7 x64
node v5.0.0
npm 3.3.6
全局安裝pm2
更新
啟動
以前啟動Wolverine是利用package.json的scripts來實現的,只需要執行npm run start就可以啟動,配置如下:
使用pm2我們可以在start處配置成pm2 ./bin/www,命令後面支持加參數來實現watch、cluster多進程模式等功能。我不太喜歡一大串的命令,於是我使用了配置文件的方式。
在Wolverine的根目錄,我創建了一個processes.json配置文件,配置文件內容如下,注釋寫的也很清楚了
隨後,我在package.json中增加了一條
在啟動就直接輸入如下命令就好:
看到下面的界面,就啟動成功了,然後我們就可以關掉這個窗口了,服務不會因此停止,是不是高大上多了。
拿出你的想像力,我們可以開發一個應用來調用此api,就可以開發出一個圖形界面的監控軟體了。。。
Ⅳ 如何讓apache和nodejs共用80埠
反向代理可以實現這個功能,下面是詳細的步驟:
步驟一:
查看httpd.conf是不是載入了mod_proxy.so,mod_proxy_http.so二個模塊
LoadMoleproxy_molemoles/mod_proxy.so
LoadMoleproxy_http_molemoles/mod_proxy_http.so
步驟二:
配置apache的一個虛擬機
<VirtualHost*:80>
ServerAdminadmin@localhost
ServerNameangularjs.stagingserver.com.au
ProxyRequestsoff//off表示反向代理
<Proxy*>
Orderdeny,allow
Allowfromall//proxy的訪問控制
</Proxy>
<Location/>
ProxyPasshttp://localhost:8000///反向代理到本地nodejs佔用8000埠
ProxyPassReversehttp://localhost:8000///反向代理到本地nodejs佔用8000埠
</Location>
</VirtualHost>
步驟三:
檢查配置是否正確,並重新載入
[root@hatch~]#apachectl-t
SyntaxOK
[root@hatch~]#/etc/init.d/httpdreload
Reloadinghttpd: