feat(deploy): 添加开发环境 systemd 服务,改进部署文档
This commit is contained in:
80
AGENTS.md
80
AGENTS.md
@@ -346,16 +346,75 @@ let new_expires = base_time + days(pkg_days);
|
||||
| `--dry-run` | 预览模式,不执行实际操作 |
|
||||
| `--yes, -y` | 跳过确认提示 |
|
||||
| `--skip-tests` | 跳过部署后测试 |
|
||||
| `--rollback` | 回滚到上一个备份版本 |
|
||||
| `--backup-list` | 列出可用备份 |
|
||||
| `--help, -h` | 显示帮助信息 |
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
./deploy.sh production --dry-run # 预览生产部署
|
||||
./deploy.sh production --yes # 无需确认直接部署
|
||||
./deploy.sh production --yes # 无需确认直接部署
|
||||
./deploy.sh development --skip-tests # 跳过测试
|
||||
./deploy.sh production --rollback # 回滚到上一个版本
|
||||
./deploy.sh production --backup-list # 列出可用备份
|
||||
```
|
||||
|
||||
**deploy.sh 功能**:依赖检查 → 编译 → 备份旧版本 → 上传二进制/配置 → 重启服务 → 部署后测试
|
||||
**deploy.sh 功能**:依赖检查 → 编译 → 备份旧版本 → 上传二进制/配置 → 重启服务 → 部署后测试 → 记录日志 → Webhook 通知
|
||||
|
||||
**回滚:**
|
||||
```bash
|
||||
./deploy.sh production --rollback # 回滚生产环境
|
||||
```
|
||||
|
||||
**Webhook 通知(可选):**
|
||||
```bash
|
||||
WEBHOOK_URL="https://example.com/webhook" ./deploy.sh production
|
||||
```
|
||||
|
||||
**部署日志位置**:`/root/rust/rust_backend/deploy.log`
|
||||
|
||||
### 部署规范
|
||||
|
||||
> **重要**:所有部署操作**必须使用 `deploy.sh`**,禁止手动操作服务器文件。
|
||||
|
||||
**禁止事项:**
|
||||
- ❌ 直接 SSH 到服务器手动上传文件
|
||||
- ❌ 直接 `scp` 或 `rsync` 二进制文件到服务器
|
||||
- ❌ 直接 `systemctl restart` 服务而不通过脚本
|
||||
- ❌ 直接修改服务器上的配置文件
|
||||
|
||||
**deploy.sh 已包含的安全保障:**
|
||||
- ✅ 部署前自动备份旧版本
|
||||
- ✅ 自动检查依赖
|
||||
- ✅ 自动测试
|
||||
- ✅ 部署日志记录
|
||||
|
||||
### 首次部署准备
|
||||
|
||||
首次在服务器上部署时,需要手动创建 systemd 服务文件和环境配置:
|
||||
|
||||
**1. 创建 systemd 服务文件:**
|
||||
|
||||
开发环境服务:`/etc/systemd/system/rust-backend-dev.service`
|
||||
|
||||
生产环境服务:`/etc/systemd/system/rust-backend.service`
|
||||
|
||||
参考本地文件:`rust-backend.service`(生产)、`rust-backend-dev.service`(开发)
|
||||
|
||||
**2. 创建 .env 环境配置:**
|
||||
|
||||
开发环境:`/root/rust/rust_backend_dev/.env`
|
||||
生产环境:`/root/rust/rust_backend/.env`
|
||||
|
||||
参考 `.env.example` 或询问运维获取。
|
||||
|
||||
**3. 启用服务:**
|
||||
|
||||
```bash
|
||||
systemctl daemon-reload
|
||||
systemctl enable rust-backend-dev.service # 开发环境
|
||||
systemctl enable rust-backend.service # 生产环境
|
||||
```
|
||||
|
||||
### 前端部署
|
||||
|
||||
@@ -370,9 +429,22 @@ const CURRENT_ENV: 'development' | 'production' = 'production'; // 发布前切
|
||||
|
||||
### 部署后测试
|
||||
|
||||
自动执行 `test_deployment.sh`,测试内容:
|
||||
部署后验证是否成功,**直接运行** `test_deployment.sh`:
|
||||
|
||||
```bash
|
||||
# 设置测试域名
|
||||
export TEST_DOMAIN="https://xmclassmate.top/dev" # 开发环境
|
||||
export TEST_DOMAIN="https://xmclassmate.top" # 生产环境
|
||||
|
||||
# 运行测试
|
||||
./test_deployment.sh
|
||||
```
|
||||
|
||||
**注意**:`deploy.sh` 会自动执行此测试,但也可手动单独运行验证。
|
||||
|
||||
测试内容:
|
||||
- 本地后端健康检查
|
||||
- 域名访问检查
|
||||
- API 端点检查
|
||||
- 静态文件检查
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user