# 守护进程

URL: https://caijiao.org/pingora/daemonization
Source: docs/pingora/daemonization.md
Description: 学习如何将 Pingora 以守护进程方式运行，确保服务在后台持续运行，并与系统管理工具集成。

在生产环境中，将 Pingora 作为 **守护进程（Daemon）** 运行非常重要，这样即使关闭终端或会话，服务仍能保持运行。

## 前台与后台运行

- **前台模式**（默认）  
  Pingora 在终端中直接运行，便于调试和查看日志。

  ```bash
  pingora --config /etc/pingora/config.yaml
  ````

- **后台模式（守护进程）**
  使用 `--daemon` 参数，可以将 Pingora 转为守护进程：

  ```bash
  pingora --config /etc/pingora/config.yaml --daemon
  ```

后台模式下，Pingora 会将 **PID 文件** 写入默认路径（如 `/var/run/pingora.pid`），便于管理。

## 管理守护进程

### 查看状态

```bash
ps aux | grep pingora
cat /var/run/pingora.pid
```

### 停止服务

```bash
kill $(cat /var/run/pingora.pid)
```

### 重启服务

```bash
kill -HUP $(cat /var/run/pingora.pid)
```

> 注：使用 HUP 信号可触发优雅重启，保证连接不中断。

## 与系统服务集成

推荐使用 **systemd** 管理 Pingora 守护进程，实现开机自启和统一管理。

### 示例 systemd 服务文件

路径：`/etc/systemd/system/pingora.service`

```ini
[Unit]
Description=Pingora Proxy Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/pingora --config /etc/pingora/config.yaml --daemon
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
User=pingora
Group=pingora

[Install]
WantedBy=multi-user.target
```

### 启用与启动服务

```bash
systemctl daemon-reload
systemctl enable pingora
systemctl start pingora
systemctl status pingora
```

---

通过守护进程运行，Pingora 可以在后台稳定运行，结合 systemd 可以实现开机自启、自动重启和日志集中管理，适合生产环境部署。
