Skip to content

在 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 命令操作:

  • 启动应用程序:

    shell
    pm2 start app
  • 停止应用程序:

    shell
    pm2 stop app
  • 重启应用程序:

    shell
    pm2 restart app
  • 查看应用程序状态:

    shell
    pm2 status
  • 监控应用程序日志:

    shell
    pm2 logs app
  • 监听应用程序文件变化并自动重启:

    shell
    pm2 start app --watch
  • 设置应用程序在系统启动时自动启动:

    shell
    pm2 startup
  • 删除应用程序:

    shell
    pm2 delete app
  • 查看应用详情:

    shell
    pm2 show app
  • 列出应用程序:

    shell
    pm2 list
  • 查看监控面板:

    shell
    pm2 monit
  • 查看程序数据:

    shell
    pm2 show app

参考资料

最近更新