使用 pm2 守护你的.NET Core 应用程序

在部署.NET Core 应用程序时,确保应用程序的稳定运行至关重要。pm2 是一个强大的进程管理工具,它可以帮助我们轻松地管理和守护.NET Core 应用程序,实现自动重启、日志管理等功能。本文将详细介绍如何使用 pm2 来守护你的.NET Core 应用程序。

目录#

  1. pm2 简介
  2. 安装 pm2
  3. 准备.NET Core 应用程序
  4. 使用 pm2 启动应用程序
  5. pm2 常用命令
  6. pm2 配置文件
  7. 日志管理
  8. 最佳实践
  9. 参考

pm2 简介#

pm2 是一个带有负载均衡功能的 Node.js 应用程序进程管理器。虽然它最初是为 Node.js 设计的,但它也可以很好地用于管理其他类型的应用程序,包括.NET Core 应用程序。pm2 可以帮助我们:

  • 保持应用程序始终运行
  • 自动重启应用程序(例如在崩溃或服务器重启后)
  • 管理应用程序的日志
  • 实现负载均衡(对于多实例应用程序)

安装 pm2#

要安装 pm2,首先需要确保你已经安装了 Node.js。然后,使用以下命令全局安装 pm2:

npm install -g pm2

准备.NET Core 应用程序#

在使用 pm2 之前,确保你的.NET Core 应用程序已经构建并准备好运行。你可以使用以下命令构建你的应用程序(假设你的项目文件名为 YourProject.csproj):

dotnet publish -c Release -o /path/to/publish/directory

这将在指定的发布目录中生成可执行文件和相关依赖项。

使用 pm2 启动应用程序#

基本启动命令#

导航到你的.NET Core 应用程序的发布目录,然后使用以下命令启动应用程序:

pm2 start dotnet --name "your-app-name" -- /path/to/your/app.dll

这里:

  • dotnet:指定使用 dotnet 运行时
  • --name "your-app-name":为你的应用程序实例指定一个名称,方便管理
  • /path/to/your/app.dll:你的.NET Core 应用程序的 DLL 文件路径

示例#

假设你的发布目录是 /var/www/myapp,应用程序 DLL 是 MyApp.dll,则命令如下:

pm2 start dotnet --name "myapp" -- /var/www/myapp/MyApp.dll

pm2 常用命令#

查看应用程序列表#

pm2 list

这将显示所有由 pm2 管理的应用程序及其状态。

停止应用程序#

pm2 stop your-app-name

重启应用程序#

pm2 restart your-app-name

查看应用程序日志#

pm2 logs your-app-name

查看实时日志#

pm2 monit

停止所有应用程序#

pm2 stop all

删除应用程序(从 pm2 管理中移除)#

pm2 delete your-app-name

pm2 配置文件#

为了更方便地管理应用程序,你可以创建一个 pm2 配置文件(通常命名为 ecosystem.config.js)。以下是一个示例配置文件:

module.exports = {
  apps : [{
    name   : "myapp",
    script : "dotnet",
    args   : "/var/www/myapp/MyApp.dll",
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: "1G",
    env: {
      NODE_ENV: "production"
    }
  }]
};

然后使用以下命令启动应用程序:

pm2 start ecosystem.config.js

日志管理#

pm2 会自动为每个应用程序创建日志文件。默认情况下,日志文件位于 ~/.pm2/logs/ 目录下。你可以通过以下方式配置日志文件的位置和格式:

在配置文件中配置#

module.exports = {
  apps : [{
    name   : "myapp",
    script : "dotnet",
    args   : "/var/www/myapp/MyApp.dll",
    // 其他配置...
    log_date_format: "YYYY-MM-DD HH:mm Z",
    error_file: "/var/log/myapp/err.log",
    out_file: "/var/log/myapp/out.log"
  }]
};

最佳实践#

监控资源使用#

使用 pm2 monit 命令实时监控应用程序的 CPU 和内存使用情况,以便及时发现性能问题。

定期备份日志#

由于日志文件可能会占用大量磁盘空间,定期备份和清理日志是一个好习惯。

多实例部署(负载均衡)#

如果你的应用程序需要处理大量请求,可以在配置文件中设置 instancesmax(根据 CPU 核心数自动分配实例)或一个具体的数字,实现负载均衡。例如:

module.exports = {
  apps : [{
    name   : "myapp",
    script : "dotnet",
    args   : "/var/www/myapp/MyApp.dll",
    instances: "max",
    exec_mode: "cluster"
  }]
};

环境变量管理#

在配置文件中使用 env 字段来管理应用程序的环境变量,确保不同环境(开发、生产等)的配置正确。

参考#

通过本文的介绍,你应该能够熟练地使用 pm2 来守护你的.NET Core 应用程序,确保其稳定运行并方便管理。希望这些内容对你有所帮助!