milky0217 217e7f8a55
Some checks failed
Deploy Backend / deploy (push) Has been cancelled
fix: deploy.sh/test.sh 审计修复
deploy.sh:
- 修复重复的 header 注释行

lib/common.sh:
- view_logs/tail_logs/status: 从日志文件切换为 journalctl(上次改
  日志输出到 stdout 后,日志文件已不存在)
- init_env 模板: User=root → User=rust-backend(匹配最小权限原则)

lib/test.sh:
- test_notify_url_domain: 添加自定义 Host 头(TEST_DOMAIN),模拟
  真实外部请求场景。之前测试走 127.0.0.1 直连,Host 头为 localhost
  导致 notify_url 校验永远通过但实际配置可能是错误的
2026-07-23 12:25:55 +08:00
2026-07-23 12:25:55 +08:00
2026-05-26 15:20:50 +08:00
2026-07-23 12:25:55 +08:00

ASD Rust Backend

大气稳定度判定系统的后端服务,基于 Rust + actix-web 4。

快速开始

# 1. 复制环境配置模板
cp .env.example .env
# 编辑 .env 填入实际值(数据库连接、微信凭证等)

# 2. 运行开发服务器
APP_ENV=development cargo run

# 3. 运行测试
cargo test

技术栈

技术 用途
Rust (edition 2024) 主力语言
actix-web 4.11 Web 框架
sqlx 0.8.6 PostgreSQL 数据库驱动
jsonwebtoken 9.3 JWT 认证
reqwest 0.12 HTTP 客户端
chrono 0.4 时间处理

项目结构

src/
├── main.rs            # 入口、服务器配置、路由注册
├── auth.rs            # JWT 中间件、令牌生成/验证
├── db.rs              # 数据库操作
├── models.rs          # 数据结构
├── config.rs          # 多环境配置加载
├── error.rs           # 错误处理
├── rate_limiter.rs    # 滑动窗口 Rate Limiter
└── handlers/          # 路由处理器
    ├── mod.rs
    ├── meta.rs        # 服务状态页
    ├── auth.rs        # 登录/注册
    ├── weather.rs     # 天气数据 CRUD
    ├── user.rs        # 用户信息
    ├── admin.rs       # 管理员功能
    ├── payment.rs     # 支付(支付宝/Mock
    ├── favorites.rs   # 收藏
    ├── health.rs      # 健康检查
    └── static_files.rs # 静态文件服务

config/                # 环境配置文件
migrations/            # 数据库迁移
scripts/               # 运维脚本
tests/                 # 集成测试

环境管理

配置文件

通过 APP_ENV 环境变量选择配置:

APP_ENV=development cargo run   # 本地开发
APP_ENV=production cargo run    # 生产环境

环境变量(.env

敏感信息仅通过 .env 文件加载,不出现在 Git 跟踪的配置文件中:

DATABASE_URL=postgres://user:pass@host:5432/dbname
WECHAT_APPID=wx...
WECHAT_SECRET=xxx
JWT_SECRET=openssl rand -base64 32 生成的随机密钥

部署

# 部署到开发服务器
./deploy.sh development

# 部署到生产服务器
./deploy.sh production

# 初始化服务器 .env生成随机 JWT_SECRET
./deploy.sh production --init-env

# 更多选项
./deploy.sh --help

关键 API

端点 说明
GET /health 健康检查
POST /api/login 微信登录
POST /api/post-weather-data 上传天气数据
GET /weather 分页查询天气数据
GET /payment 套餐选择页
POST /api/payment/sync-order 同步会员状态

完整 API 文档见 AGENTS.md

运维

# 数据库备份
./scripts/backup-db.sh

# 清理过期 refresh_token
./scripts/cleanup_refresh_tokens.sh

# 查看日志
journalctl -u rust-backend.service -n 100

开发规范

  • 所有提交使用 jjjujutsu v0.41+),详见 AGENTS.md
  • 支付宝沙箱测试使用 MOCK_LOGIN_ENABLED=true
  • 无支付宝配置时自动启用 Mock 支付模式
Description
ASD Rust Backend
Readme 2.7 MiB
Languages
JavaScript 77%
Rust 12.1%
Shell 6.9%
CSS 3.7%
HTML 0.2%
Other 0.1%