我可以使用低特权运行Node.JS吗?
我想运行一个低特权用户的节点,这可能吗? 我需要使用框架Express.js
是。 有很多解决scheme可以做到这一点,这取决于您的具体需求。
如果要在端口80上运行节点,则可以使用nginx(不支持WebSockets)或haproxy 。 但也许最快最肮脏的是使用iptables将端口80redirect到您select的端口:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 sudo iptables -t nat -L
当你快乐的时候,保存configuration并确保iptables在启动时开启
sudo service iptables save sudo chkconfig iptables on
要以非root用户身份自动启动nodejs服务,并在失败时重新启动它,可以使用如下脚本来启动:
#!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
错误sudo: sorry, you must have a tty to run sudo
,那么您可以使用以下命令replace您的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! 这里有一个有用的指南,用upstart和monit设置node.js。