急!PM2 部署上的问题
发布于 8 年前 作者 thomas0836 9369 次浏览 来自 问答

我今天弄服务器,就是像平时那样 NODE_ENV=production pm2 start bin/www -i 0 --name “name” 将项目加入 pm2中,然后就是运行,测试。突然 卡了一下。然后 全部项目都不能访问了。 上服务器看 我是用 另外一个用户来单独部署项目到 pm2的的, root 的用户没有问题,就是 那个用来部署的用户有问题。 运行 pm2 ls 出现

[PM2] Spawning PM2 daemon with pm2_home=/home/www/.pm2
internal/child_process.js:313
    throw errnoException(err, 'spawn');
    ^

Error: spawn EACCES
    at exports._errnoException (util.js:1022:11)
    at ChildProcess.spawn (internal/child_process.js:313:11)
    at Object.exports.spawn (child_process.js:387:9)
    at module.exports.Client.launchDaemon (/usr/local/n/lib/node_modules/pm2/lib/Client.js:214:40)
    at /usr/local/n/lib/node_modules/pm2/lib/Client.js:101:10
    at /usr/local/n/lib/node_modules/pm2/lib/Client.js:273:14
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

运行

$ pm2 kill
[PM2] Spawning PM2 daemon with pm2_home=/home/www/.pm2
internal/child_process.js:313
    throw errnoException(err, 'spawn');
    ^

Error: spawn EACCES
    at exports._errnoException (util.js:1022:11)
    at ChildProcess.spawn (internal/child_process.js:313:11)
    at Object.exports.spawn (child_process.js:387:9)
    at module.exports.Client.launchDaemon (/usr/local/n/lib/node_modules/pm2/lib/Client.js:214:40)
    at /usr/local/n/lib/node_modules/pm2/lib/Client.js:101:10
    at /usr/local/n/lib/node_modules/pm2/lib/Client.js:273:14
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

我把整个pm2 在root 用户中 npm uninstall -g pm2 了,然后再重新 npm i -g pm2 回来, 问题依然 这是问题怎么破,非常急

6 回复

pm2 好像只能用 root 用户 运行,我记得是这样的,说错了表打我……

@enternoder 解决了,是 权限问题。 什么用户都可以运行,只要给了权限就好了。这个问题是 用pm2运行的 项目 中 有些项目 没有给权限,所以就 全卡死了

@thomas0836 采用nvm安装node就不会有这个问题了,用户和全局不一样的

我从来没碰到这个呢…都使用的当前用户,安装除了node之外也是在放在用户主目录的

@i5ting 是使用 n 来管理 node 的,@DevinXian 因为之前试过 整台服务器给黑了。所以 现在运行 都是用另外一个用户来运行,那个用户只拥有运行项目的目录 ,其他都没有 权限。我想这样会安全点吧

除了主进程 需要root 其它的是可以不需要的; 不然容易中毒

回到顶部