作为一个java的后端,最近一直要部署前端node的服务端,和我配合的前端又是新来的,经常改一个问题打一个包过来,发来10几次,每次我都是按照以前nohup或者是screen来部署的。先要杀进程然后在部署,实在是麻烦。直到偶然看到pm2可以自动重启。准备尝试一下,但是安装完使用时发现command not found,一番尝试后,贴上我的解决过程。
首先,安装
npm install -g pm2
pm2 -v显示command not found
原因是没有将pm2加至环境变量中
先找到node的目录 可以用whereis node来查找
node: /usr/local/bin/node
这是本地环境变量的路径
cd /usr/local/bin 进入
ll 查看所有
lrwxrwxrwx 1 root root 43 Jul 6 09:49 node -> /usr/nodejs/node-v8.11.3-linux-x64/bin/node
lrwxrwxrwx 1 root root 42 Jul 6 09:49 npm -> /usr/nodejs/node-v8.11.3-linux-x64/bin/npm
这就找到了node的目录 /usr/nodejs/node-v8.11.3-linux-x64/bin
cd /usr/nodejs/node-v8.11.3-linux-x64/bin 进入目录
node npm npx pm2 pm2-dev pm2-docker pm2-runtime
发现pm2就在其中
将pm2加至本地的环境变量
ln -s /usr/nodejs/node-v8.11.3-linux-x64/bin/pm2 /usr/local/bin
[root@izbp171vm9829r4ns74pc7z bin]# pm2 -v
3.0.4
完成
在需要部署的文件目录中使用
pm2 start server.js --watch
--watch参数是监测node文件,如果被更改来了会自动重启,终于不需要每次杀进程部署了。。
pm2 list 查看部署的node进程
[root@izbp171vm9829r4ns74pc7z ~]# pm2 list
┌────────┬──────┬────────┬───┬─────┬───────────┐
│ Name │ mode │ status │ ↺ │ cpu │ memory │
├────────┼──────┼────────┼───┼─────┼───────────┤
│ server │ fork │ online │ 4 │ 0% │ 39.3 MB │
└────────┴──────┴────────┴───┴─────┴───────────┘
Use `pm2 show <id|name>` to get more details about an app