# 使用 PM2 部署

URL: https://caijiao.org/koa/deploy/pm2
Source: docs/koa/deploy/pm2.md
Description: 本文介绍了如何使用 PM2 部署 Koa 应用，确保应用的高可用性和自动重启功能。

PM2 是一个非常流行的 Node.js 进程管理工具，能够帮助开发者管理应用的启动、停止、重启和日志。通过 PM2 部署 [Koa 应用](/koa/intro/application)，可以轻松地实现应用的高可用性和自动重启。

## 1. 安装 PM2

首先，确保你已经安装了 PM2。如果还没有安装，可以通过 npm 安装：

```bash
npm install -g pm2
````

## 2. 启动 Koa 应用

假设你的 Koa 应用入口文件是 `app.js`，你可以通过 PM2 启动应用：

```bash
pm2 start app.js
```

PM2 会启动你的应用，并会在后台运行。

### 2.1 启动应用并指定应用名称

为了方便管理，你可以为你的应用指定一个名称：

```bash
pm2 start app.js --name "koa-app"
```

这样，你可以通过应用的名称来管理应用，而不必记住文件名。

## 3. 配置环境变量

在实际部署中，你可能需要设置不同的环境变量，比如开发环境、生产环境等。你可以使用 PM2 来管理这些环境变量。

### 3.1 启动应用并传递环境变量

```bash
pm2 start app.js --name "koa-app" --env production
```

在应用代码中，可以通过 `process.env` 访问这些环境变量。

### 3.2 使用 `.env` 文件

你也可以将环境变量保存在 `.env` 文件中，然后通过 `pm2` 配置该文件：

```bash
pm2 start app.js --env-file .env
```

## 4. 应用重启与自动重启

PM2 会自动重启崩溃的应用，但你也可以手动重启应用。

### 4.1 重启应用

```bash
pm2 restart koa-app
```

### 4.2 开启自动重启

PM2 会根据应用的内存和 CPU 使用情况自动重启应用。你可以配置自动重启的条件，如内存限制：

```bash
pm2 start app.js --name "koa-app" --max-memory-restart 200M
```

当应用使用的内存超过 200MB 时，PM2 会自动重启应用。

## 5. 查看应用状态

使用 PM2，你可以轻松查看应用的状态、日志等信息。

### 5.1 查看应用状态

```bash
pm2 status
```

### 5.2 查看应用日志

```bash
pm2 logs koa-app
```

## 6. 配置 PM2 启动脚本

为了确保服务器重启时自动启动应用，你可以使用 PM2 的启动脚本功能。

### 6.1 生成启动脚本

```bash
pm2 startup
```

这将生成一条命令，复制并执行该命令后，PM2 将配置为在系统启动时自动启动。

### 6.2 保存应用列表

```bash
pm2 save
```

保存当前的应用状态，以便系统重启时恢复运行。

## 7. 停止与删除应用

当你不再需要某个应用时，可以通过 PM2 停止或删除该应用。

### 7.1 停止应用

```bash
pm2 stop koa-app
```

### 7.2 删除应用

```bash
pm2 delete koa-app
```

## 8. 总结

PM2 提供了强大的进程管理功能，使得部署和管理 Koa 应用变得更加简单。通过 PM2，你可以实现应用的高可用性、自动重启以及在服务器重启后的自动启动，从而确保你的应用在生产环境中稳定运行。
