RaisFastRaisFast
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=104857600

systemd 服务

[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.target
sudo 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 \
  raisfast

Docker 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>&1

CI/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"

生产检查清单

  1. 已设置 APP_ENV=production
  2. JWT_SECRET 是强随机字符串(32+ 字符)
  3. CORS_ORIGINS 列出了前端域名
  4. BASE_URL 匹配公开 URL
  5. TLS 已启用(Caddy/Nginx/内置)
  6. 数据库备份已配置定时任务
  7. 上传目录可写
  8. 健康检查端点已监控

On this page