Full-Stack Development
生产部署
将 RaisFast 部署到生产环境 — 单服务器、Docker、TLS、CI/CD 和监控。
部署方式
| 方式 | 适用场景 | 复杂度 |
|---|---|---|
| 单二进制 + systemd | 小型应用、VPS | 低 |
| Docker | 团队协作、CI/CD | 中 |
| Docker Compose | 全栈(后端 + 前端) | 中 |
方式一 — 单二进制
最简单的部署。复制即可运行。
下载或编译
# 下载最新版本
curl -fsSL https://raisfast.com/install.sh | sh
# 或从源码编译
git clone https://github.com/RaisFast/raisfast.git
cd raisfast
cargo build --release --no-default-features --features db-sqlite生产环境 .env
APP_ENV=production
APP_HOST=0.0.0.0
APP_PORT=9898
DATABASE_URL=sqlite:./storage/db/raisfast.db?mode=rwc
JWT_SECRET=<你的强密钥至少32字符>
JWT_ACCESS_EXPIRES=900
JWT_REFRESH_EXPIRES=604800
CORS_ORIGINS=https://yourdomain.com
BASE_URL=https://api.yourdomain.com
STORAGE_DRIVER=local
UPLOAD_DIR=./storage/uploads
MAX_UPLOAD_SIZE=104857600systemd 服务
[Unit]
Description=RaisFast Server
After=network.target
[Service]
Type=simple
User=raisfast
WorkingDirectory=/opt/raisfast
ExecStart=/opt/raisfast/raisfast
Restart=always
RestartSec=5
EnvironmentFile=/opt/raisfast/.env
[Install]
WantedBy=multi-user.targetsudo systemctl enable raisfast
sudo systemctl start raisfast方式二 — Docker
Dockerfile
FROM debian:bookworm-slim
COPY target/release/raisfast /usr/local/bin/raisfast
COPY .env /app/.env
WORKDIR /app
EXPOSE 9898
CMD ["raisfast"]构建并运行
docker build -t raisfast .
docker run -d \
--name raisfast \
-p 9898:9898 \
-v raisfast-data:/app/storage \
--env-file .env \
raisfastDocker Compose(后端 + 前端)
services:
backend:
build: .
ports:
- "9898:9898"
volumes:
- ./storage:/app/storage
env_file: .env
frontend:
build: ./frontend
ports:
- "3000:3000"
environment:
- RAISFAST_URL=http://backend:9898
caddy:
image: caddy:2
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
- caddy-config:/config
volumes:
caddy-data:
caddy-config:TLS / HTTPS
方案 A — Caddy(自动 HTTPS)
yourdomain.com {
reverse_proxy localhost:3000
}
api.yourdomain.com {
reverse_proxy localhost:9898
}Caddy 自动申请和续期 Let's Encrypt 证书。
方案 B — Nginx + Certbot
server {
listen 443 ssl http2;
server_name api.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:9898;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}方案 C — 内置 TLS
TLS_CERT_PATH=/etc/ssl/certs/yourdomain.pem
TLS_KEY_PATH=/etc/ssl/private/yourdomain.key健康监控
健康检查端点
curl http://localhost:9898/health服务信息
curl http://localhost:9898/api/v1/info备份
# 手动备份
raisfast db backup
# 定时任务(每天凌晨 2 点)
0 2 * * * /usr/local/bin/raisfast db backup >> /var/log/raisfast-backup.log 2>&1CI/CD(GitHub Actions 示例)
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build frontend
run: |
cd frontend
npm ci
npm run build
- name: Deploy
run: |
rsync -avz frontend/dist/ server:/var/www/frontend/
ssh server "cd /opt/raisfast && git pull && sudo systemctl restart raisfast"生产检查清单
- 已设置
APP_ENV=production JWT_SECRET是强随机字符串(32+ 字符)CORS_ORIGINS列出了前端域名BASE_URL匹配公开 URL- TLS 已启用(Caddy/Nginx/内置)
- 数据库备份已配置定时任务
- 上传目录可写
- 健康检查端点已监控
