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: