upstart是基于linux的一个项目,它可以在服务器重启后自动重启项目,在服务器关闭前自动停止项目,项目崩溃时自动重启项目,并记录错误日志,ubuntu,CentOS 6都支持upstart
ubunbu中安装upstart
sudo apt-get install upstart
CentOS中安装upstart
sudo yum install upstart
安装upstart后,需要为每一个项目添加一个upstart配置文件:my_application_name.conf,这些文件要放置在/etc/init目录下,这些不需要可执行权限就行
创建一个空的配置文件
sudo touch /etc/init/nodeAppName.conf
配置文件示例
#!upstart
#项目作者名
author "mcantelon"
#项目名或描述
description "hellonode"
#以用户"nonrootuser"角色来启动项目
setuid "nonrootuser"
#在文件系统及网络设备启动后启动项目(也可以认为是开机自启项目)
start on (local-filesystems and net-device-up IFACE=eth0)
#在关机时停止项目
stop on shutdown
#当项目崩溃时重启项目
respawn
#将STDIN,STDERR日志记录到/var/log/upstart/yourapp.log
console log
#为项目设置所需的环境变量
env NODE_ENV=production
#执行项目的指令
exec /usr/bin/node /path/to/app.js
接下来就可以通过以下指令启动项目了
sudo start nodeAppName
如果启动成功就可以看到
nodeAppName start/running, process 6770
upstart更多的功能,及配置详情,可以在http://upstart.ubuntu.com/cookbook/上查看
关于upstart的respawn:此命令可以在项目崩溃后自动重启项目
默认的如果在5秒内尝试重启了10次都失败,则会停止尝试重启,(这种情况下往往都是代码出了严重的问题)
可以通过以下命令来修改此项
respawn
#项目崩溃后,5秒内尝试重启20次
respawn limit 20 5