是的。有许多解决方案可用于执行此操作,具体取决于您的具体需求。
如果你想在端口 80 上运行节点,你可以使用 nginx(尚不能与 WebSockets 配合使用)或haproxy http://cloud.ubuntu.com/2011/09/node-js-and-mongodb-on-ubuntu/。但也许最快和最脏的方法是使用 iptables 将端口 80 重定向到您选择的端口:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003
sudo iptables -t nat -L
当你满意时,保存配置并确保 iptables 在启动时打开
sudo service iptables save
sudo chkconfig iptables on
要以非root身份自动启动nodejs服务,并在失败时重新启动它,您可以使用upstart http://upstart.ubuntu.com/与这样的脚本:
#!upstart
description "nodeapp"
author "you"
start on started mountall
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
script
export HOME="/home/user/"
exec sudo -u user /usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log
end script
如果您安装的是 Amazon EC2,或者您收到一条错误消息:sudo: sorry, you must have a tty to run sudo
,那么您可以将 exec 命令替换为:
#!upstart
description "nodeapp"
author "you"
start on started mountall
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
script
export HOME="/home/user/"
#amazon EC2 doesn’t allow sudo from script! so use su --session-command
exec su --session-command="/usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log" user &
end script
而且,您没有问这个问题,但为了让它永远运行,请查看 monit!这是.