主题
在 Linux 上使用 PM2 守护 .NET 应用
PM2 简介
PM2 是一个 Node.js 的进程管理工具,可以帮助开发者简化 Node.js 应用的部署和运维。它提供了进程守护、负载均衡、日志管理等功能,可以监控应用程序的运行状态,并在发生意外情况时自动重启应用。PM2 还支持多种部署方式,包括单机部署、集群模式和 Docker 容器部署,适用于各种规模的项目。通过 PM2,可以更轻松地管理 Node.js 应用,提高应用的稳定性和可靠性。
安装
安装 PM2
如果已经安装了 Node.js 和 npm,可以直接执行以下命令安装 PM2:
shell
sudo npm install pm2 -g验证 PM2 是否安装成功:
shell
pm2 -v如果输出了 PM2 的版本号,则表示安装成功。
安装 Node.js 和 npm
如果尚未安装 Node.js 和 npm,可以通过以下命令在 Ubuntu 系统中完成安装:
shell
# 1. 更新 apt-get
sudo apt-get update
# 2. 安装 Node.js 和 npm
sudo apt-get install nodejs npm
# 3. 验证 Node.js 和 npm 是否安装成功
node -v
npm -v如果分别输出了 Node.js 和 npm 的版本号,则表示安装成功。
部署
依赖部署
首先,确保你的 .NET 应用程序可以正常运行。在终端中进入项目目录并执行:
shell
dotnet xxx.dll如果应用正常运行,可以使用 PM2 进行部署。建议使用 .NET 7 版本,因为 .NET 8 可能存在一些兼容性问题。
shell
pm2 start --name xxx dotnet -- xxx.dll注意:将 xxx 替换为 PM2 中的应用名称。
传递参数
如果需要传递参数,可以在命令后面添加参数。例如:
shell
pm2 start --name wallpapernet dotnet -- Wallpaper.Net.WebApi.dll --urls=https://localhost:5003配置文件部署 推荐
推荐使用配置文件进行部署。新建一个 JSON 文件(例如 pm2.json),并将属性更改为复制到项目目录中。
json
{
"apps": {
"name": "miniapi",
"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": [
"NetBlog.Web.Entry.dll",
"--urls=http://*:5003"
],
"env": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
}
}注意:更改 name 和传递的参数,然后在项目目录下执行:
shell
pm2 start pm2.json示例:
shell
pm2 start pm2.json操作命令
PM2 提供了一系列命令用于管理应用程序的启动、停止、重启和监控。以下是一些常用的 PM2 命令操作:
启动应用程序:
shellpm2 start app停止应用程序:
shellpm2 stop app重启应用程序:
shellpm2 restart app查看应用程序状态:
shellpm2 status监控应用程序日志:
shellpm2 logs app监听应用程序文件变化并自动重启:
shellpm2 start app --watch设置应用程序在系统启动时自动启动:
shellpm2 startup删除应用程序:
shellpm2 delete app查看应用详情:
shellpm2 show app列出应用程序:
shellpm2 list查看监控面板:
shellpm2 monit查看程序数据:
shellpm2 show app