PM2 - simple practice
Recording pm2 learning
client preview
最近服务器马上到期了,本着不浪费的原则,想在上面跑几个node服务玩玩。服务器安装了宝塔面板,在宝塔里打开命令行并启动我的node服务,本地测试了一下还不错。可当我关掉宝塔的windows窗口后,我的服务挂掉了!!!原来同时关掉的还有我的服务进程。。。一番研究下来发现了一个node 进程管理神器 - PM2
PM2 是什么 ?
PM2是一个带有内置负载均衡器的Node.js应用程序生产运行时和进程管理器。它可以做到永久保持应用程序活跃,无需停机即可重新加载它们。
官方问文档中提到了它的很多特性,比如:
进程守护:系统崩溃时自动重启,确保服务高可用性
负载均衡:通过创建多个子进程共享同一服务器端口,充分利用多核CPU性能
日志管理:自动收集和保存应用程序日志
终端监控:实时监控应用程序运行状态
集群模式:支持零秒停机重载应用程序
跨平台:多个系统支持
PM2简单实践
我们用一个简单的例子来实践pm2。
首先安装PM2
git bash
npm install pm2 -g
//yarn global add pm2
验证是否安装成功:
git bash
pm2 --version
项目初始化
新建一个项目, 安装依赖:
git bash
npm init -y
npm i express
新建两个文件
server.js
javascript
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send({
code: 200,
message: 'This is server 1'
});
});
app.listen(4200, () => {
console.log('Server1 is running on port 4200');
});
server2.js
javascript
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send({
code: 200,
message: 'This is server 2'
});
});
app.listen(4201, () => {
console.log('Server2 is running on port 4201');
});
pm2管理服务
两个脚本模拟两个node 服务。如果正常启动这两个服务,我们需要打开两个命令行窗口再用node 执行。
但是有了pm2后,我们可以统一管理这两个服务:
git bash
pm2 start server.js server2.js
基本启动,我们可以同时启动这两个服务:
指定别名
git bash
pm2 start server.js --name my-server1
热重载 当文件变化,自动重启服务
git bash
pm2 start server.js --watch
LOG
git bash
pm2 logs //查看所有服务日志
pm2 logs server //查看指定服务日志
监控与性能分析
git bash
pm2 monit
当然PM2还提供了很多的命令,可以尝试一下。
命令 | 作用 |
---|---|
pm2 list | 查看所有PM2管理的服务 |
pm2 restart | 重启指定服务 |
pm2 stop app_name | 停止指定服务 |
pm2 delete app_name | 删除指定服务 |
开机自启动配置
如果我们希望服务器重启后可以自启动PM2管理的服务可以按照以下步骤
首先执行
git bash
pm2 startup
pm2 save
然后保存进程列表
git bash
pm2 save
统重启后,PM2会自动恢复之前保存的应用程序列表
Summary
以上只是PM2的简单实用,在实际项目中要复杂的多,需要根据配置文件,来管理我们的不同的服务。如果你对PM2非常的感兴趣,可以阅读官方文档 PM2
