将nodejs设置成开机自动启动

原文:https://blog.csdn.net/jiyuanyi1992/article/details/44197569 

起因
我跟哥们共用一台服务器,他主要写写网站,我呢,就说不定了——比方说算个方程啦、处理个图像啦、装点小软件啦、跑个webservice啦……哥们老是抱怨重启导致他网页服务器不能正常工作。既然如此,就给他弄个开机自起呗。他就用

apache2
node
http-server
我就知道apache是用chkconfig(Redhat)或者sysv-rc-conf(Debian)来管理的。node即node.js,httpserver是一个用node封装的web服务器。

网上一查”nodejs开机自起”,基本全是一个版本,真是服了。

各种方法
设置成服务 /etc/init.d
应该说这个方法是最靠谱的,但是实在是太麻烦了;而且网上的脚本都一个样。此方法最大的好处在于对进程、日志等文件的管理;同样,弊端也是如此。如果我开一个node.js还好说,我要是开n个呢?贴一个个人认为比较简洁的脚本。

$ cat /etc/init.d/nodeup 
#!/bin/sh 
#/etc/init.d/nodeup

export PATH=$PATH:/usr/local/bin 
export 
NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules

case “$1” in 
start) 
exec forever –sourceDir=/path/to/directory/containing_script -p /path/to/forever/pidetcfiles script.js scriptarguments 
;; 
stop) 
exec forever stop –sourceDir=/path/to/directory/containing_script script.js 
;; 
*) 
echo “Usage: /etc/init.d/nodeup {start|stop}” 
exit 1 
;; 
esac

exit 0

$ chmod 755 /etc/init.d/nodeup 
$ update-rc.d nodeup defaults

其中用到”forever”, 一个nodejs进程管理器。

需要说一句,执行开机脚本时,系统还未设置相关变量,所以需要在脚本中指明命令的绝对路径,另外还需要设置相关解释器的路径,所以设置”PATH”是必须的。当然一个较为简单的

开机脚本 /etc/rc.local
与上一种方法大同小异。如果需要执行的命令就一条或几条,比方说上边的例子,直接把他加在rc.local里就好了。

计划任务 cron
利用cron里的”@reboot”字符串,能够在第一时间完成网页服务器的启动。缺点就是,这玩意启动优先级实在是太高了,甚至network服务还没启动这玩意就已经运行了。解决办法就是加一个sleep命令。同样,需要设置PATH,需要写绝对路径。

最后的结果
http-server加到rc.local里了,如下:

$ cat /etc/rc.local 
… 
# By default this script does nothing.

/usr/bin/sudo -u root /usr/local/bin/http-server /var/www

exit 0

node的话用forever总是不能用list查看进程,所以,还不如不用:

$ contrab -u user -l 
# m h dom mon dow command

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

@reboot /bin/sleep 100 
@reboot cd /Path/to/nodejs/file && /usr/local/bin/node nodejs_server_file.js
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值