# 配置文件

URL: https://caijiao.org/pm2/installation-configuration/configuration
Source: docs/pm2/installation-configuration/configuration.md
Description: 了解 PM2 配置文件的使用方法，学习如何配置和优化 PM2 进程管理，提升应用的稳定性和性能。PM2 配置文件设置是每个 Node.js 应用必备的工具。

在 PM2 中，配置文件是一个强大的工具，它允许用户设置进程管理的各项参数，优化应用的启动和运行方式。PM2 配置文件通常是一个 JSON 或 JavaScript 文件，包含了关于应用启动的各类信息。

## 1. 配置文件的基本结构

PM2 配置文件包含了多个字段，每个字段代表了不同的设置选项。以下是一个简单的配置文件示例：

```json
{
  "apps": [
    {
      "name": "my-app",
      "script": "./app.js",
      "instances": 2,
      "watch": true,
      "env": {
        "NODE_ENV": "production"
      }
    }
  ]
}
```

* **apps**: 定义了多个应用的数组，每个应用可以有独立的设置。
* **name**: 应用的名称，用于在 PM2 中标识应用。
* **script**: 启动应用的脚本路径。
* **instances**: 定义应用实例的数量，支持多核分配。
* **watch**: 是否启用文件监控，当文件变动时自动重启应用。
* **env**: 环境变量的设置，`NODE_ENV` 通常设为 `production` 或 `development`。

## 2. 配置项详细说明

* **name**: 应用的名称，用于 PM2 中的标识。可以是任意字符串。
* **script**: 启动应用的主脚本，可以是 JavaScript、TypeScript 或其他支持的文件。
* **instances**: 设置实例数量。你可以指定一个数字，或者使用 `max` 来根据机器的 CPU 核数自动启动实例。
* **watch**: 如果为 `true`，PM2 将监控文件系统变化，自动重启应用。适用于开发环境。
* **env**: 环境变量，可以指定多个环境变量以供不同的环境使用。

例如，在开发环境中你可能会设置不同的数据库连接字符串，或者不同的日志级别。

## 3. 高级配置选项

除了基础配置，PM2 还提供了许多高级功能来优化应用的性能和管理。

* **exec_mode**: 定义应用的执行模式。常见的模式有 `fork`（单进程模式）和 `cluster`（多进程模式）。

  ```json
  "exec_mode": "cluster"
  ```

* **error_file** 和 **out_file**: 用于指定错误日志和标准输出日志的位置。

  ```json
  "error_file": "./logs/app-error.log",
  "out_file": "./logs/app-output.log"
  ```

* **merge_logs**: 将多个实例的日志合并到一个文件中。

  ```json
  "merge_logs": true
  ```

* **cron_restart**: 允许定期重启应用，比如每小时或每天重启一次。

  ```json
  "cron_restart": "0 * * * *"
  ```

## 4. 如何使用 PM2 配置文件

要使用 PM2 配置文件，首先需要将其保存为一个文件（例如 `ecosystem.config.js` 或 `ecosystem.json`）。然后，通过以下命令启动应用：

```bash
pm2 start ecosystem.config.js
```

PM2 将根据配置文件中的设置启动应用并管理其生命周期。如果配置文件发生变化，可以使用以下命令重新加载配置：

```bash
pm2 reload ecosystem.config.js
```

## 5. 结语

PM2 配置文件为应用提供了灵活的配置和管理方式，尤其适用于需要高可用性和稳定性的生产环境。通过合理配置 PM2，你可以轻松管理 Node.js 应用，优化性能，并确保应用的高效运行。

---

PM2 的配置文件让你对应用管理有了更多的控制，无论是日志管理、实例管理，还是监控与重启策略，都可以通过配置文件轻松实现。
