34.6 pm2 部署
34.6.1 关于 pm2
pm2
是 NodeJS
平台高级生产流程管理器,也是一个守护进程管理器,它能够管理和保持应用程序 7*24 小时在线。
pm2
优点:
- 简单易用
- 跨平台
- 容器集成
- 内置集群、负载均衡
- 支持模块系统
- 支持实时监测
- 支持日志管理
- 支持关键指标监控 ....
想了解更多 pm2
知识可查阅 https://pm2.keymetrics.io/。
34.6.2 如何安装
- 系统安装
NodeJS
环境 https://nodejs.org/en/
相信大部分人电脑都已经安装。
- 通过
npm
或yarn
全局安装pm2
工具
npm:
npm install pm2@latest -g
yarn:
yarn global add pm2
34.6.3 托管 .NET5/6
应用程序
34.6.3.1 非单文件/非独立发布模式
这种模式的特点就是需要服务器安装 .NET5/6
的环境
pm2 start --name xxx dotnet -- xxx.dll
如需指定端口,可使用下列命令:
pm2 start --name xxx dotnet -- PMS.Web.Entry.dll --urls=https://localhost:8089
注意 --
后面可以写完整的 dotnet
命令。
xxx.dll
为项目发布后的启动层名称。
--name
配置应用程序在 pm2
中的唯一标识。
注意:通过 --
传递参数在 powershell
终端下无效,需要在 cmd
终端下才行。比如出现这样的错误:
34.6.3.2 单文件/独立发布模式
这种模式的特点就是无需服务器安装 .NET
任何环境,可查阅 单文件发布文档
pm2 start --name xxx PMS.Web.Entry.exe
如需指定端口,可使用下列命令:
pm2 start --name xxx PMS.Web.Entry.exe -- --urls=https://localhost:8089
注意 --
后面可以写完整的 dotnet
命令。
xxx.exe
为项目发布后的启动层名称,如果名称包含 空格
,则使用双引号包裹,如 "x xx.exe"
。
--name
配置应用程序在 pm2
中的唯一标识。
注意:通过 --
传递参数在 powershell
终端下无效,需要在 cmd
终端下才行。
34.6.3.3 启用应用程序
执行上述命令后会显示启动成功日志,如:
PS C:\Users\bqrjsoft\Desktop\pms> pm2 start --name pms PMS.Web.Entry.exe
[PM2] Starting C:\Users\bqrjsoft\Desktop\pms\PMS.Web.Entry.exe in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼────────┼───────── ────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ pms │ default │ N/A │ fork │ 41764 │ 0s │ 0 │ online │ 0% │ 85.0mb │ bqrjsoft │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
PS C:\Users\bqrjsoft\Desktop\pms>
ASP.NET Core
程序默认端口都是 5000
,如 http://localhost:5000
。
34.6.3.4 json
配置/启动方式
pm2
部署也提供了非常简单的 json
配置方式,部署更简单,拓展性更强,不需要每次重复输入命令,如在项目启动项目下添加 pm2.json
,并设置文件属性 内容
为 始终复制
:
{
"apps": {
"name": "唯一标识",
"script": "dotnet",
"exec_mode": "fork",
"error_file": "logs/err.log",
"out_file": "logs/out.log",
"merge_logs": true,
"log_date_format": "YYYY-MM-DD HH:mm:ss",
"min_uptime": "60s",
"max_restarts": 30,
"autorestart": true,
"restart_delay": "60",
"args": [
"PMS.Web.Entry.dll",
"--urls=http://*:5001"
],
"env": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
}
}
在发布后的文件目录下打开终端执行:
pm2 start pm2.json
34.6.4 pm2
常见操作
34.6.4.1 实时监听运行状态
pm2 monit
34.6.4.2 显示运行日志
pm2 logs
34.6.4.3 查看应用信息
pm2 info pms
注意,pms
为您配置的 --name
名称。
34.6.4.4 随机启动
pm2 startup
pm2 save
Windows
下随机启动可查阅 pm2-windows-startup。
npm install pm2-windows-startup -g
pm2-startup install
pm2 save
34.6.4.5 集群模式(负载均衡)
- 非单文件/非独立发布模式
pm2 start "xxx.dll" -i max
- 单文件/独立发布模式
pm2 start xxx.exe -i max
34.6.4.6 其他操作
// 重启应用
pm2 restart app_name
// 重载应用
pm2 reload app_name
// 停止应用
pm2 stop app_name
// 删除应用
pm2 delete app_name
更多 pm2
文档可查阅 https://pm2.keymetrics.io/docs/usage/quick-start/
34.6.5 反馈与建议
给 Furion 提 Issue。