# 4AN项目部署指南

## 环境变量配置

配置文件`app/config.py`已更新为支持环境变量。所有配置项可通过环境变量设置，包括：

- `SECRET_KEY`: 应用密钥
- `DATABASE_URI`: 数据库连接URI
- `LZMX_WEBHOOK_URL`: 临猪消息Webhook
- `UPLOAD_FOLDER`: 文件上传目录
- `KEY110_DB_HOST`: 1key110数据库主机
- `KEY110_DB_USER`: 1key110数据库用户
- `KEY110_DB_PASSWORD`: 1key110数据库密码
- `KEY110_DB_DATABASE`: 1key110数据库名称

## 使用Supervisor管理项目

### 安装依赖

项目需要安装python-dotenv包以支持环境变量：

```bash
/mnt/nfs/.venv/bin/pip install python-dotenv
```

### 环境变量文件

我们已创建环境变量文件 `/opt/1panel/docker/compose/4an/4an.env`，其中包含所有配置参数：

```
# 应用密钥
SECRET_KEY=

# 数据库连接
DATABASE_URI=mysql+pymysql://4an:GtbJp6Ai5azntnTB@10.10.10.253/4an

# 临猪消息Webhook
LZMX_WEBHOOK_URL=http://imtwo.zdxlz.com/im-external/v1/webhook/send?key=ef1dc605827f425e96491ce5725b5274

# 文件上传目录
UPLOAD_FOLDER=static/uploads

# 1key110数据库配置
KEY110_DB_HOST=10.10.10.253
KEY110_DB_USER=1key110
KEY110_DB_PASSWORD=KzdKtf7KfkXe7iCN
KEY110_DB_DATABASE=1key110
```

在启动应用前需要加载这些环境变量：

```bash
# 加载环境变量文件
export $(cat /opt/1panel/docker/compose/4an/4an.env | grep -v '^#' | xargs)
```

### 配置Supervisor

1. 确保修改app/config.py使其支持环境变量后，再使用Supervisor管理应用

2. 将`4an_supervisor.conf`文件复制到Supervisor配置目录：

```bash
sudo cp 4an_supervisor.conf /etc/supervisor/conf.d/
```

3. 在配置文件目录中创建一个启动脚本，用于加载环境变量并启动应用：

```bash
sudo nano /opt/1panel/docker/compose/4an/start_with_env.sh
```

脚本内容：

```bash
#!/bin/bash
# 加载环境变量
export $(cat /opt/1panel/docker/compose/4an/4an.env | grep -v '^#' | xargs)

# 启动uwsgi
exec /mnt/nfs/.venv/bin/uwsgi --ini /opt/1panel/docker/compose/4an/app/uwsgi.ini
```

设置脚本权限：

```bash
sudo chmod +x /opt/1panel/docker/compose/4an/start_with_env.sh
```

4. 修改Supervisor配置使用该脚本：

```bash
sudo nano /etc/supervisor/conf.d/4an_supervisor.conf
```

将command行修改为：

```
command=/opt/1panel/docker/compose/4an/start_with_env.sh
```

5. 更新Supervisor配置：

```bash
sudo supervisorctl reread
sudo supervisorctl update
```

6. 管理4an服务：

```bash
# 启动服务
sudo supervisorctl start 4an

# 停止服务
sudo supervisorctl stop 4an

# 重启服务
sudo supervisorctl restart 4an

# 查看服务状态
sudo supervisorctl status 4an

# 查看日志
sudo tail -f /opt/1panel/docker/compose/4an/supervisor.log
```

## 使用systemd（可选）

如果需要使用systemd而不是Supervisor，可以创建服务文件：

```bash
sudo nano /etc/systemd/system/4an.service
```

服务文件内容示例：

```ini
[Unit]
Description=4AN Application
After=network.target

[Service]
User=root
WorkingDirectory=/opt/1panel/docker/compose/4an/app
ExecStart=/mnt/nfs/.venv/bin/uwsgi --ini /opt/1panel/docker/compose/4an/app/uwsgi.ini
Restart=always
StandardOutput=file:/opt/1panel/docker/compose/4an/systemd.log
StandardError=file:/opt/1panel/docker/compose/4an/systemd_error.log
EnvironmentFile=/opt/1panel/docker/compose/4an/4an.env

[Install]
WantedBy=multi-user.target
```

然后启用并启动服务：

```bash
sudo systemctl daemon-reload
sudo systemctl enable 4an
sudo systemctl start 4an
``` 