Nodejs 在linux上如何设置pm2开机自启动?

Nodejs 在linux上如何设置pm2开机自启动?

我在 /etc/rc.d/rc.local 里加入了启动命令 /usr/local/bin/pm2 start /usr/app/node/koa/app.js --name koa --node-args="–harmony-generators" --watch > /tmp/startup.log 2>&1 重启之后启动不成功,报这样的错: /usr/local/bin/pm2: line 4: exec: : not found 不过路径是对的,把上面的命令直接复制到linux命令行下执行也能成功的,就是放到开机启动的时候报错。


6 回复

要在Linux系统上设置PM2开机自启动,可以通过配置rc.local文件来实现。但是,由于不同的Linux发行版可能有不同的初始化机制,我们还需要确保rc.local文件具有可执行权限,并且系统支持该文件。

以下是详细的步骤和示例代码:

步骤 1: 确保rc.local文件存在并具有可执行权限

首先,检查/etc/rc.d/rc.local(对于基于Red Hat的系统)或/etc/rc.local(对于其他系统)是否存在。如果不存在,可以手动创建并赋予其可执行权限。

sudo touch /etc/rc.local
sudo chmod +x /etc/rc.local

步骤 2: 编辑rc.local文件

使用文本编辑器(如nanovim)打开rc.local文件,并添加启动PM2的命令。

sudo nano /etc/rc.local

在文件中添加以下内容:

#!/bin/bash
# /etc/rc.local
# By default this script does nothing

# Start PM2 application
export PATH=$PATH:/usr/local/bin
/usr/local/bin/pm2 start /usr/app/node/koa/app.js --name koa --node-args="--harmony-generators" --watch > /tmp/startup.log 2>&1

exit 0

步骤 3: 验证环境变量

确保PATH环境变量包含/usr/local/bin,因为这是PM2的安装位置。如果/etc/rc.local中没有设置PATH,可以在文件顶部添加导出命令。

步骤 4: 检查PM2服务状态

为了确保PM2能够正确运行,建议先手动启动PM2服务,并检查是否有错误。

sudo pm2 start /usr/app/node/koa/app.js --name koa --node-args="--harmony-generators" --watch
sudo pm2 save

步骤 5: 设置PM2开机启动

PM2提供了一个简单的命令来自动将应用程序设置为开机启动:

sudo pm2 startup

此命令会输出一个需要执行的命令,例如:

sudo env PATH=$PATH:/usr/local/bin pm2 startup systemd -u yourusername --hp /home/yourusername

将上述命令复制并粘贴到终端中执行,以完成PM2的开机自启动配置。

通过以上步骤,你应该能够在Linux系统上成功设置PM2开机自启动。如果遇到问题,可以检查日志文件(如/tmp/startup.log)以获取更多信息。


ubuntu: pm2 startup upstart arch: pm2 startup systemctl

如此类推

centos呢。。

请问你解决了吗

#!/bin/bash
// 这里输命令,一行一个

要在Linux上设置PM2服务开机自启动,推荐使用systemd而不是修改rc.local。以下是如何设置PM2服务开机自启动的步骤:

  1. 创建一个PM2服务文件: 创建一个systemd服务文件,用于管理你的Node.js应用。假设你的Node.js应用名为koa,你可以创建一个服务文件koa.service

    sudo nano /etc/systemd/system/koa.service
    
  2. 编辑服务文件: 将以下内容粘贴到koa.service文件中,并根据你的实际环境进行调整:

    [Unit]
    Description=Koa Node.js Application
    After=network.target
    
    [Service]
    User=node_user  # 请替换为运行该应用的用户
    WorkingDirectory=/usr/app/node/koa/
    ExecStart=/usr/local/bin/pm2 start app.js --name koa --node-args="--harmony-generators" --watch
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启用并启动服务: 使用systemctl命令来启用和启动服务:

    sudo systemctl enable koa.service
    sudo systemctl start koa.service
    
  4. 检查服务状态: 确保服务正在运行:

    sudo systemctl status koa.service
    

通过这种方式,koa应用会在系统启动时自动启动,并且可以更好地管理进程。这种方法比直接修改rc.local更可靠,因为它利用了systemd的强大功能来管理服务生命周期。

回到顶部