# 启动应用

URL: https://caijiao.org/pm2/start-management/starting-apps
Source: docs/pm2/start-management/starting-apps.md
Description: 学习如何使用 PM2 启动和管理 Node.js 应用。通过 PM2 启动应用，你可以轻松实现进程管理、负载均衡和自动重启，提高应用的稳定性与性能。

PM2 是一个强大的进程管理工具，它能帮助你启动、管理和监控 Node.js 应用。使用 PM2 启动应用非常简单，它提供了多种方法来确保应用的高可用性和稳定性。

## 1. 启动应用的基本命令

要启动一个应用，首先需要确保你已经安装了 PM2。在命令行中输入以下命令：

```bash
pm2 start app.js
```

此命令将启动 `app.js` 文件中的应用。PM2 将自动为你管理进程，并确保它在后台运行。

## 2. 启动应用时的常用选项

除了基本的启动命令，PM2 还提供了多个选项来定制应用的启动行为：

* **`--name`**: 指定应用的名称，便于在 PM2 中管理。

  ```bash
  pm2 start app.js --name "my-app"
  ```

* **`--watch`**: 启用文件监控，若应用文件有变动，PM2 会自动重启应用。

  ```bash
  pm2 start app.js --watch
  ```

* **`--env`**: 设置应用的环境变量。例如，可以指定开发环境或生产环境。

  ```bash
  pm2 start app.js --env production
  ```

* **`--instances`**: 设置实例的数量，可以选择启动多个进程来提升应用的可用性和性能。

  ```bash
  pm2 start app.js --instances 4
  ```

* **`--max-memory-restart`**: 设置内存限制，当应用使用的内存超过指定值时，PM2 会自动重启应用。

  ```bash
  pm2 start app.js --max-memory-restart 100M
  ```

## 3. 使用配置文件启动应用

PM2 还支持通过配置文件启动应用，配置文件可以包含多个应用的配置信息。一个常见的配置文件是 `ecosystem.config.js`，它包含了有关如何启动应用的详细信息。

示例 `ecosystem.config.js` 文件：

```javascript
module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      instances: 2,
      watch: true,
      env: {
        NODE_ENV: 'production',
      },
    },
  ],
};
```

然后，可以通过以下命令使用配置文件启动应用：

```bash
pm2 start ecosystem.config.js
```

## 4. 管理应用的状态

在应用启动之后，PM2 会自动管理它的生命周期。你可以使用以下命令来查看应用的状态：

```bash
pm2 status
```

该命令会列出当前所有正在运行的应用及其状态，包括进程 ID、内存使用情况、CPU 占用率等。

## 5. 自动启动 PM2

为了确保你的应用在系统重启后自动启动，可以使用 PM2 的 `startup` 命令来生成启动脚本。

在 Linux 或 macOS 上：

```bash
pm2 startup
```

这将生成一个命令，帮助你配置系统启动时自动启动 PM2 和管理的应用。

然后，保存当前的进程列表：

```bash
pm2 save
```

现在，即使服务器重启，PM2 也会自动恢复应用的运行。

## 6. 结语

PM2 提供了一个强大的进程管理工具，不仅能启动 Node.js 应用，还能帮助你进行应用监控、负载均衡、自动重启等。通过合理的配置和使用 PM2，你可以确保应用的高可用性和稳定性。

通过 PM2 启动应用，你能够更加高效地管理你的生产环境，尤其是在多个应用实例和高负载场景下。
