❤️ 关注 Furion 微信公众号有惊喜哦!
🫠 遇到问题了
Skip to main content
⭐️ 开通 VIP 服务仅需 499 元/年,尊享 365 天项目无忧23 立即开通23 ⭐️
特别赞助

34.6 pm2 部署

34.6.1 关于 pm2

pm2NodeJS 平台高级生产流程管理器,也是一个守护进程管理器,它能够管理和保持应用程序 7*24 小时在线。

pm2 优点:

  • 简单易用
  • 跨平台
  • 容器集成
  • 内置集群、负载均衡
  • 支持模块系统
  • 支持实时监测
  • 支持日志管理
  • 支持关键指标监控 ....

想了解更多 pm2 知识可查阅 https://pm2.keymetrics.io/

34.6.2 如何安装

  1. 系统安装 NodeJS 环境 https://nodejs.org/en/

相信大部分人电脑都已经安装。

  1. 通过 npmyarn 全局安装 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,并设置文件属性 内容始终复制

PMS/Web.Entry/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