在机器启动时启动节点服务器

问题描述 投票:0回答:3

我试图通过在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 实例上(如果有帮助,我认为它不相关,但以防万一)。

node.js ubuntu-16.04 upstart
3个回答
4
投票

看看PM2

PM2 是一个非常强大的 Node.js 进程管理器。

安装应用程序后,您可以在启动时轻松设置它:

sudo systemctl start pm2-yourusername

3
投票

您可以通过将应用程序作为服务运行来完成此操作。您可以使用 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

0
投票

这里有一个简单的方法,可以在没有 pm2 的情况下在旧系统上使用 rc.d/init.d 脚本(在我的示例中为 Slackware 14)自动启动 npm:

  1. 我们将使用“--prefix”。当您手动启动节点时,您可能首先移动到它所在的文件夹并从那里启动它。使用“前缀”,您可以直接指向该文件夹。

  2. 让我们创建启动脚本。就我而言(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
  • 注意“睡眠 30”(秒)- 我们希望节点在系统完全启动后最后启动。 30秒应该足够了。
  • “&”使命令在后台运行
  • “--prefix”当然是我们节点的位置。
  • 另请注意停止和重新启动选项 - 我故意留下它们作为示例。

此时执行:

/etc/rc.d/rc.npm-somenodestartup

应该启动你的节点。

  1. 要自动启动它:只需编辑/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
  1. 重新启动系统 - 您的节点应该已启动并正在运行。

玩得开心!

© www.soinside.com 2019 - 2024. All rights reserved.