CNode

急!PM2 部署上的问题

问答
Tthomas0836发布于10 年前最后回复10 年前6 回复9964 浏览0 收藏

我今天弄服务器,就是像平时那样 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)

E
enternoder#1·10 年前

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

T
thomas0836#2·10 年前
引用 enternoderpm2 好像只能用 root 用户 运行,我记得是这样的,说错了表打我……

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

T
thomas0836#4·10 年前
引用 i5ting@thomas0836 采用nvm安装node就不会有这个问题了,用户和全局不一样的

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

S
slclub#5·10 年前

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

D
DevinXian#6·10 年前

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

参与回复
登录后即可参与回复。登录