我试图通过在nodeserv.conf文件中使用以下代码在机器(ubuntu 16.04)启动时启动node.js服务器:
#!upstart
description "Node.js server"
author "Sushant Kumar"
start on started mountall
stop on shutdown
respawn
respawn limit 99 5
script
export APP_HOME = "/home/ubuntu/chatbot_server"
export HOME = "/home/ubuntu"
cd $APP_HOME
exec sudo -u ubuntu /usr/local/nodejs/bin/node $HOME/chatbot_server/server.js >> /var/log/chatbotserv.log 2>&1
end script
post-start script
echo "Node Started"
end script
,但我运行命令
# start nodeserv
我收到以下错误:
>>start: Job failed to start
。
谁能帮我看看我哪里出错了?
编辑:此服务器托管在 AWS EC2 实例上(如果有帮助,我认为它不相关,但以防万一)。
您可以通过将应用程序作为服务运行来完成此操作。您可以使用 forever 来确保给定的脚本连续运行。首先,您需要永久安装。然后转到您的项目目录并安装forever-monitor。现在您可以启动您的应用程序了。
npm install forever -g
cd /path/to/your/project
npm install forever-monitor
forever start app.js
现在您需要使用 forever-service 将您的节点脚本构建为服务。首先,安装forever-service,然后将您的应用程序安装为服务。
npm install -g forever-service
forever-service install test
如果您想处理您的脚本,您可以在脚本中替换此代码。
export HOME="/root"
exec /usr/local/nodejs/bin/node /home/ubuntu/chatbot_server/server.js >> /var/log/node.log 2>&1
这里有一个简单的方法,可以在没有 pm2 的情况下在旧系统上使用 rc.d/init.d 脚本(在我的示例中为 Slackware 14)自动启动 npm:
我们将使用“--prefix”。当您手动启动节点时,您可能首先移动到它所在的文件夹并从那里启动它。使用“前缀”,您可以直接指向该文件夹。
让我们创建启动脚本。就我而言(Slackware 14),它位于 /etc/rc.d:
触摸/etc/rc.d/rc.npm-somenodestartup
chmod +x /etc/rc.d/rc.npm-somenodestartup
vim /etc/rc.d/rc.npm-somenodestartup
粘贴以下内容:
#!/bin/sh
case "$1" in
'start')
sleep 30
npm start --prefix /home/somefolder/www/somenode & ;;
# 'stop')
# 'restart')
*)
esac
此时执行:
/etc/rc.d/rc.npm-somenodestartup
应该启动你的节点。
要自动启动它:只需编辑/etc/rc.d/rc.local:
vim /etc/rc.d/rc.local
粘贴:
if [ -x /etc/rc.d/rc.npm-somenodestartup ]; then
/etc/rc.d/rc.npm-somenodestartup start
fi
玩得开心!