通常node命令,启动一个node服务,一般都是执行,node app.js或者node index.js,但是,node启动的服务,启动窗口ITerm不能关闭,关闭了之后,服务就被stop。
PM2是一个node进程的管理工具,据说可以进行性能监控、自动重启、负载均衡等,而且使用非常简单。(目前没有测试过)
安装和更新PM2工具
在ITerm终端中执行,
1.安装命令
npm install pm2 -g
2.pm2更新命令
pm2 update
在安装完成之后,就可以使用pm2命令进行操作了
常用命令
1.启动服务 app.js为你的项目入口文件
pm2 start app.js|进程名字(name)|id
2.重启服务
pm2 restart app.js |进程名字(name)|id
3.关闭服务
pm2 stop app.js |进程名字(name)|id
4.删除进程服务
pm2 delete app.js 进程名字(name)|id
5.开启多进程 可以实现自动的负载均衡 5代表着开启的进程数量
pm2 start app.js -i 5
6.查看启动日志
pm2 logs
7.查看pm2启动的所有服务
pm2 list
8修改创建的服务的名字 修改当前进程的名字 为test
pm2 start app.js --name="test"
9.查看当前pm2安装的版本
pm2 --version
pm2操作的进程 ITerm显示
pm2操作的其他常用命令:
$ pm2 start app.js --watch # 当文件变化时自动重启应用
$ pm2 start script.sh # 启动 bash 脚本
$ pm2 list # 列表 PM2 启动的所有的应用程序
$ pm2 monit # 显示每个应用程序的CPU和内存占用情况
$ pm2 show [app-name] # 显示应用程序的所有信息
$ pm2 logs # 显示所有应用程序的日志
$ pm2 logs [app-name] # 显示指定应用程序的日志
$ pm2 flush
$ pm2 stop all # 停止所有的应用程序
$ pm2 stop 0 # 停止 id为 0的指定应用程序
$ pm2 restart all # 重启所有应用
$ pm2 reload all # 重启 cluster mode下的所有应用
$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
$ pm2 delete all # 关闭并删除所有应用
$ pm2 delete 0 # 删除指定应用 id 0
$ pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
$ pm2 reset [app-name] # 重置重启数量
$ pm2 startup # 创建开机自启动命令
$ pm2 save # 保存当前应用列表
$ pm2 resurrect # 重新加载保存的应用列表
$ pm2 update # Save processes, kill PM2 and restore processes
$ pm2 generate # Generate a sample json configuration file
$ pm2 deploy app.json prod setup # Setup "prod" remote server
$ pm2 deploy app.json prod # Update "prod" remote server
$ pm2 deploy app.json prod revert 2 # Revert "prod" remote server by 2
$ pm2 module:generate [name] # Generate sample module with name [name]
$ pm2 install pm2-logrotate # Install module (here a log rotation system)
$ pm2 uninstall pm2-logrotate # Uninstall module
$ pm2 publish # Increment version, git push and npm publish
Linux下安装pm2
1.终端输入命令
npm install pm2 -g
终端执行的命令
/usr/local/node-v8.9.3-linux-x64/bin/pm2 -> /usr/local/node-v8.9.3-linux-x64/lib/node_modules/pm2/bin/pm2
/usr/local/node-v8.9.3-linux-x64/bin/pm2-dev -> /usr/local/node-v8.9.3-linux-x64/lib/node_modules/pm2/bin/pm2-v
/usr/local/node-v8.9.3-linux-x64/bin/pm2-docker -> /usr/local/node-v8.9.3-linux-x64/lib/node_modules/pm2/bin/p-docker
/usr/local/node-v8.9.3-linux-x64/bin/pm2-runtime -> /usr/local/node-v8.9.3-linux-x64/lib/node_modules/pm2/bin/2-runtime
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules/pm2/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","ch":"any"} (current: {"os":"linux","arch":"x64"})
+ pm2@2.10.2
added 221 packages from 206 contributors in 29.63s
学习博客:
https://www.cnblogs.com/mmzuo-798/p/11126773.html
https://ask.csdn.net/questions/878804
https://blog.csdn.net/qq_27098985/article/details/90051215
遇见的坑:
坑1:安装完之后使用pm2命令 无法正常使用,Linux下全局安装,但是不能自动进行全局配置。
-bash: pm2: command not found
解决方案:创建软连接,相当于配置去全局的访问。
ln -s /usr/local/node-v8.9.3-linux-x64/bin/pm2 /usr/local/bin/
坑2:在使用pm2命令式,一直报一个错误。
针对这个问题,可能有不同的产生原因,有的说是磁盘空间被占用过多,需要清理磁盘。解决方案:
https://www.cnblogs.com/xxcanghai/p/7111517.html,而我这边查看了一下磁盘空间只被占用了10%,而是权限使用问题,
在使用pm2进行命令操作是,使用了sudo 添加访问的权限
学习博客:
https://blog.csdn.net/chengxuyuanyonghu/article/details/74910875