求教 Nodejs pm2 开机启动的问题

求教 Nodejs pm2 开机启动的问题

我现在 pm2 startup centos 已经创建了开机脚本了

可是开机之后的列表都没有了 怎么办呢?

谁能教教我

4 回复

当然可以!下面是关于如何配置 Node.js 应用使用 PM2 实现开机启动的回答。

求教 Nodejs pm2 开机启动的问题

问题描述

你已经使用 pm2 startup centos 创建了开机启动脚本,但发现每次重启后 PM2 的应用列表丢失了。你需要解决这个问题。

解决方案

  1. 确保开机脚本正确安装: 首先,确认 PM2 的开机脚本是否已经正确安装。你可以运行以下命令来生成并安装开机脚本:

    sudo pm2 startup centos -u <your_username>
    

    其中 <your_username> 是你的用户名。这一步会输出一条命令,你需要复制这条命令并执行它。

  2. 保存当前进程列表: 确保你已经保存了当前的 PM2 进程列表。你可以使用以下命令保存:

    pm2 save
    

    这条命令会将当前的 PM2 进程列表保存到系统中,以便在系统重启时自动启动这些进程。

  3. 检查 PM2 日志: 如果以上步骤没有解决问题,建议检查 PM2 的日志文件,看看是否有任何错误信息。你可以使用以下命令查看日志:

    pm2 logs
    

    这可以帮助你定位问题所在。

  4. 手动启动服务: 如果上述方法仍然无法解决问题,你可以尝试手动启动 PM2 服务,并确保它在系统重启时自动启动。你可以编辑 /etc/rc.d/rc.local 文件(如果存在),添加以下内容:

    su - <your_username> -c "pm2 start $(pm2 home)/processes.yml"
    

    其中 <your_username> 是你的用户名,$(pm2 home) 是 PM2 的安装目录。确保该文件具有可执行权限:

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

通过以上步骤,你应该能够解决 PM2 开机启动的问题。希望这对你有帮助!

示例代码

# 生成并安装开机脚本
sudo pm2 startup centos -u <your_username>

# 保存当前进程列表
pm2 save

# 查看日志
pm2 logs

希望这些信息能帮到你!如果有其他问题,请随时提问。


自己回复 顶起来~

当你使用 pm2 startup 命令在 CentOS 上创建开机启动脚本后,PM2 会生成一个初始化脚本,并将其添加到系统的启动服务中。如果你发现重启系统后 PM2 进程没有自动启动,可能是由于以下几个原因:

  1. 权限问题:确保你运行 pm2 startup 命令时使用的是具有足够权限的用户(通常是 root 用户)。
  2. 脚本未正确安装:确认生成的启动脚本已正确安装并配置。
  3. 防火墙或 SELinux 配置:检查是否有防火墙规则或 SELinux 策略阻止 PM2 的启动。

解决方法

步骤1:重新生成开机启动脚本

首先,你需要重新生成开机启动脚本,并确保使用正确的用户权限:

sudo su
pm2 startup systemd -u your_username

这里的 your_username 是你要管理 PM2 进程的用户名。

步骤2:保存当前的 PM2 进程列表

确保你的应用已经加载到 PM2 中,并且你已经保存了这些进程的状态:

pm2 save

示例代码

假设你已经有一个名为 myapp.js 的 Node.js 应用,你可以使用以下命令来启动它并设置为开机启动:

pm2 start myapp.js --name myapp
pm2 save

步骤3:验证开机启动是否生效

重启系统并检查 PM2 进程是否自动启动:

sudo reboot

重启后,运行以下命令检查 PM2 是否自动启动:

pm2 list

如果所有步骤都正确执行,你应该能看到你之前保存的应用仍然在运行。

通过以上步骤,你应该能够解决 PM2 开机启动的问题。如果问题依然存在,建议检查系统的日志文件以获取更多调试信息。

回到顶部