linux forever自动启动,利用forever在Linux上实现Node.js项目自启动

在一台计算机上手动跑Node项目简单,node xx.js就搞定了,想让Node项目后台运行,虽然不能直接用node命令搞定,可是在安装了forever这个包之后,仍是很轻松的。不过要是在远程服务器上构建Node项目,若是无法自启动,一旦服务器重启,那么项目必须经过管理员远程手动开启才能够运行。node

那么可否利用forever加启动脚本方式解决上述问题呢?答案固然是确定的,只不过有点麻烦,并且forever官方缺乏详细的配置文档。我在配置的时候也走了一些弯路,下面详细来讲。mongodb

注:本文的实验环境是Ubuntu Server 12.04 LTS x86_64,在CentOS上的配置更简单一些npm

最先,我想着试试在/etc/rc.local中增长一句forever start xxx看看,结果发现Ubuntu(其余系统同样)就不鸟我,主要矛盾就是mongodb使用这种方式就能够跑起来,forever就不行,无奈之下,仍是从/etc/init.d的角度去考虑吧。bash

前提是要先把forever好,方法很简单,执行以下命令就好:ide

npm install forever -g

安装完成后,用一个简单的Node程序测试一下:测试

forever start test.js

forever stop test.js

forever restart test.js

只要不提示error,就代表forever是能够用的,也就是说用forever来后台开启一个Node项目的基本条件已经具有,剩下的就是来编写一个启动脚本了。ui

脚本的基本内容以下,感谢原做者的辛勤劳动:.net

#!/bin/bash

### BEGIN INIT INFO

# Provides:          xiyoulib

# Required-Start:    $all

# Required-Stop:     $all

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Start daemon at boot time

# Description:       Enable service provided by daemon.

### END INIT INFO

# chkconfig: 345 88 08

# description: Forever for Node.js

DEAMON=/node.js/XiyouLibNodeExpress/bin/www #这里须要填写你本身的Node项目的启动脚本文件

LOG=/node.js/log/log #可选,日志文件目录

PID=/node.js/pid #必填内容,用于记录forever的进程号

export PATH=$PATH:/usr/local/bin #在这里指定一下Node的可执行程序安装目录,个人是/usr/local/bin

export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules #这里是Node类库的路径

#往下的内容就不用修改了

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

在这里提醒一下:最好为Node项目单独在根目录下创建一个目录,如/node.js,而后权限设为754,这样能够避免一些权限问题而形成的麻烦!rest

因为用的是Ubuntu Server系统,上面还配置了MongoDB的启动服务,并且在其init.d的脚本中加入了如下的语句:

# Required-Start: $all

# Required-Stop: $all因此在之后本身添加的时候系统会提示错误,因此在Node项目的启动脚本里我加了前面一串的说明注释,以便Ubuntu Server系统进行设置,若是在CentOS上,应该不会出现相似的问题,这点要特别注意!

即如下的说明信息:

### BEGIN INIT INFO

# Provides:          xiyoulib

# Required-Start:    $all

# Required-Stop:     $all

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Start daemon at boot time

# Description:       Enable service provided by daemon.

### END INIT INFO脚本编辑完成后使用chkconfig --list指令查看一下本身添加的服务是否生效,即3和5所有要为on才能够实现开机自启动。

若是3和5没有被置为on,那么请执行chkconfig --level 35 [你的服务名] on便可,Ubuntu Server可能会报一些warning,可是只要能将所需设置的服务的三、5变为on,其余的错误能够忽略(我感受这是系统本身的事)。

设置完成后便可实现Node项目在Linux上的自启动,能够shutdown -r now试一下可否自启,启动好之后直接去访问一下你设定的端口号、虚拟目录神马的,若是出来想要的就大功告成了!

可是若是不对,就好好检查一些脚本,而后根据报错进行相关修改,毕竟我也是试出来的嘛!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值