Nodejs [pm2] 网站搬家后程序无法启动,watching 栏目显示 unactivated

Nodejs [pm2] 网站搬家后程序无法启动,watching 栏目显示 unactivated

前几天把服务器搬到了 DO,系统依然是 Debian,然后重装了 node, npm, pm2 这些,都正常。但是原来的一个 node 程序现在运行不起来了,而且看不到日志,一头雾水。

pm2 start parser.js 之后,会新增一个进程,但是 watching 那一栏显示的是 unactivated,然后程序实际上也没有运行起来。

各项参数: 系统:Debian 3.2.54-2 x86_64 GNU/Linux Node:v0.10.28 pm2:0.8.3

请问哪位前辈遇到过这种问题?怎么解决呢?


9 回复

Nodejs [pm2] 网站搬家后程序无法启动,watching 栏目显示 unactivated

前几天我将服务器从原来的主机迁移到了 DigitalOcean (DO),系统仍然是 Debian。重新安装了 Node.js、npm 和 pm2 后,一切看起来都是正常的。但问题是,原来的一个 Node.js 程序现在无法启动,并且没有生成日志,让我感到非常困惑。

尝试使用 pm2 start parser.js 启动程序时,虽然新增了一个进程,但在 pm2 list 的输出中,watching 列显示为 unactivated,并且程序实际上并没有运行起来。

系统参数

  • 操作系统:Debian 3.2.54-2 x86_64 GNU/Linux
  • Node.js 版本:v0.10.28
  • pm2 版本:0.8.3

解决方案

根据你描述的情况,watching 显示 unactivated 通常意味着 PM2 没有正确配置或找不到合适的文件监视工具。这里有几个可能的解决方案:

  1. 确保 PM2 的版本是最新的:旧版本的 PM2 可能存在一些已知的问题。建议更新到最新版本。

    npm install -g pm2
    
  2. 检查 Node.js 和 pm2 的安装路径:确保你的 Node.js 和 pm2 安装路径正确,并且可以被当前用户访问。

    which node
    which pm2
    
  3. 安装文件监视工具:PM2 使用 chokidar 来监视文件变化。如果 chokidar 没有正确安装或配置,可能会导致 watching 未激活。

    npm install --save chokidar
    
  4. 重启 PM2:有时候简单地重启 PM2 就可以解决问题。

    pm2 restart all
    
  5. 检查权限问题:确保 pm2 和解析器脚本有足够的权限来读写文件。

    chmod +x parser.js
    
  6. 手动设置文件监视:如果你知道具体需要监视哪些文件,可以手动设置 PM2 的文件监视。

    pm2 start parser.js --watch /path/to/your/project
    

通过以上步骤,你应该能够解决 watching 显示 unactivated 的问题。如果问题仍然存在,建议查看 PM2 的详细日志以获取更多信息。

希望这些步骤对你有所帮助!


│ App name │ id │ mode │ PID │ status │ port │ restarted │ uptime │ memory │ watching │ │ parser │ 0 │ cluster │ 26515 │ online │ │ 1 │ 1s │ 15.793 MB │ unactivated│

直接用node parser.js能跑起来?

也不能。 如果是程序出错,哪里能看到日志?

你是不是忘了npm install了。。

watching 列是表示是否监控程序文件夹变动,如果有变动 自动重启,需要使用–watch参数启动才会是active。跟程序没启动成功没什么关系。 pm2 logs [id|name] 可以查看启动过程中的日志

直接node跑应该跑不起来会报错。

感谢各位大侠的热心帮助!

我逗比了。。

问题原因是,手里有多个域名,搬家后忘了改 huyue.org 的DNS,,然后首页实际上访问的还是原来服务器上的文件,但是原来服务器上的 node 进程已经没了。。 而我用 SSH 连接服务器时,是通过我的另外一个域名来访问的(原来都在一台服务器上,习惯了通过其中一个域名来连接),所以实际上我以为我已经启动了的 node 进程是在新服务器上的。。 现在改了 DNS 之后可以正常加载内容了。演示地址:huyue.org

根据你的描述,你在搬家到新的服务器后遇到了 pm2 监控未激活的问题。这通常与权限、文件路径或环境变量有关。以下是一些可能的解决方案:

  1. 检查文件路径和权限:确保 parser.js 文件存在并且具有正确的读取权限。你可以使用以下命令来检查和修改权限:

    ls -l /path/to/parser.js
    chmod +r /path/to/parser.js
    
  2. 更新 PM2 版本:你当前使用的 PM2 版本(0.8.3)非常老旧,建议升级到最新版本。新版本修复了许多已知问题,并提供了更好的功能支持。

    npm install -g pm2
    
  3. 清除缓存并重新启动:有时候缓存可能导致一些问题,可以尝试清除 PM2 的缓存并重启服务:

    pm2 delete all
    pm2 kill
    rm -rf ~/.pm2
    pm2 update
    pm2 start parser.js
    
  4. 配置文件路径:如果你使用了一个配置文件(如 ecosystem.config.js),确保路径正确且文件内容没有错误。

    // ecosystem.config.js 示例
    module.exports = {
      apps: [
        {
          name: 'parser',
          script: './parser.js',
        },
      ],
    };
    

    然后使用配置文件启动:

    pm2 start ecosystem.config.js
    
  5. 查看日志:使用以下命令查看日志,以了解程序启动失败的具体原因:

    pm2 logs
    

如果以上方法仍不能解决问题,建议详细查看日志输出,寻找具体的错误信息,并根据错误提示进行进一步排查。

回到顶部