重启后EC2 ubuntu启动节点服务器无法正常工作

时间:2016-11-04 02:43:59

标签: node.js ubuntu amazon-ec2 startup

当我的ec2机器启动时,我试图启动快速应用程序。我有一个启动脚本:

#!/bin/bash
echo "will reroute traffic" >> /home/ubuntu/log.logs

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

echo "will kill node" >> /home/ubuntu/log.logs

if pgrep node &> /dev/null ; then killall -KILL node ; fi
if pgrep nodejs &> /dev/null ; then killall -KILL nodejs ; fi

echo "will run node server" >> /home/ubuntu/log.logs
cd server && npm install && npm run build && npm run start </dev/null &>/dev/null &
echo "has run node server" >> /home/ubuntu/log.logs

如果我从控制台启动它,它会启动服务器,退出并且服务器运行正常。

要启动它,我已将这些行添加到/etc/rc.local

rm -f /home/ubuntu/log.logs
echo "will run" >> /home/ubuntu/log.logs
/bin/bash /home/ubuntu/startup.sh
echo "has run" >> /home/ubuntu/log.logs

重新启动后,服务器没有响应,看起来它还没有启动(服务器在运行时记录滴答声不存在)

log.logs中的输出看起来不错:

will run
will will reroute traffic
will kill node
will run node server
has run node server
has run

因此一切似乎都已执行,但节点应用程序未运行,我通过运行top | grep node确认没有返回任何内容。

2 个答案:

答案 0 :(得分:0)

我发现廉价(或免费)的AWS VM受到CPU /网络限制,导致npm安装等失败。也许使用价值更高的VPS或尝试yarn。还要将npm内容记录到文件而不是dev / null。

答案 1 :(得分:0)

事实证明我通过nvm安装了npmnode,并且nvm向.bashrc添加了一个将加载这些库的脚本。要在重新启动时启动我的脚本,我使用的是不使用.bashrc的cron。此外,AWS EC2 ubuntu实例上的默认.bashrc启动时检查是否已从终端运行,并将其转义为未从终端运行。因此从cron采购它没有任何效果。

我没有看到因为失败的行

cd server && npm install && npm run build && npm run start

没有记录任何内容

我最终手动获取npmnode

的路径