- 新增 CLOUD_DEPLOYMENT.md 详细部署文档 - 新增 deploy-to-cloud.sh 自动化部署脚本 - 包含 SSH 配置、环境要求、部署步骤 - 包含故障排除和监控指南
8.5 KiB
8.5 KiB
云服务器部署指南
目标服务器
- 主机: cssc.datalibstar.com
- 用户: mashen
- 项目路径: /root/.openclaw/workspace/city-manual
部署前准备
1. 解决 SSH 连接问题
当前 SSH 认证失败,需要:
方案 A: 使用密码登录
# 在本地测试
ssh mashen@cssc.datalibstar.com
# 输入密码:825670@MashenClaw
方案 B: 配置 SSH 密钥
# 在服务器上添加公钥
ssh-copy-id mashen@cssc.datalibstar.com
# 或手动添加
cat ~/.ssh/id_ed25519.pub | ssh mashen@cssc.datalibstar.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
2. 服务器环境要求
必需软件:
- Python 3.8+
- Node.js 16+
- PostgreSQL 12+
- Nginx
- Gunicorn
检查命令:
python3 --version
node --version
psql --version
nginx -v
部署步骤
步骤 1: 克隆项目
# SSH 到服务器
ssh mashen@cssc.datalibstar.com
# 进入工作目录
cd /root/.openclaw/workspace
# 克隆最新代码
git clone http://10.2.0.100:8989/mashen/chengshishouce.git city-manual-temp
cd city-manual-temp
git checkout master
步骤 2: 安装后端依赖
cd /root/.openclaw/workspace/city-manual-temp/backend
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
pip install gunicorn
步骤 3: 配置环境变量
cd /root/.openclaw/workspace/city-manual-temp
# 创建 .env 文件
cat > .env << EOF
# Django 配置
DJANGO_SETTINGS_MODULE=config.settings.production
DJANGO_SECRET_KEY=your-secret-key-change-this
DEBUG=False
ALLOWED_HOSTS=cssc.datalibstar.com,127.0.0.1,localhost
# 数据库配置
DATABASE_URL=postgres://coder:825670wl@10.2.0.100:5432/cssc
# 媒体文件
MEDIA_ROOT=/root/.openclaw/workspace/city-manual-temp/backend/media
STATIC_ROOT=/root/.openclaw/workspace/city-manual-temp/backend/static
EOF
步骤 4: 数据库迁移
cd /root/.openclaw/workspace/city-manual-temp/backend
source ../venv/bin/activate
# 执行迁移
python manage.py migrate
# 收集静态文件
python manage.py collectstatic --noinput
# 创建超级用户(可选)
python manage.py createsuperuser
步骤 5: 配置 Gunicorn
# 创建 systemd 服务文件
sudo cat > /etc/systemd/system/city-manual.service << 'EOF'
[Unit]
Description=City Manual Gunicorn Service
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/root/.openclaw/workspace/city-manual-temp/backend
ExecStart=/root/.openclaw/workspace/city-manual-temp/backend/venv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/city-manual.sock \
city_manual.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable city-manual
sudo systemctl start city-manual
# 检查状态
sudo systemctl status city-manual
步骤 6: 配置 Nginx
# 创建 Nginx 配置
sudo cat > /etc/nginx/sites-available/city-manual << 'EOF'
server {
listen 80;
server_name cssc.datalibstar.com;
# 日志
access_log /var/log/nginx/city-manual-access.log;
error_log /var/log/nginx/city-manual-error.log;
# 静态文件
location /static/ {
alias /root/.openclaw/workspace/city-manual-temp/backend/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}
# 媒体文件
location /media/ {
alias /root/.openclaw/workspace/city-manual-temp/backend/media/;
expires 7d;
}
# Django 应用
location / {
include proxy_params;
proxy_pass http://unix:/run/city-manual.sock;
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;
}
# 客户端最大上传大小
client_max_body_size 10M;
}
EOF
# 启用配置
sudo ln -sf /etc/nginx/sites-available/city-manual /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx
步骤 7: 配置防火墙
# 开放 HTTP 端口
sudo ufw allow 80/tcp
# 开放 HTTPS 端口(如果启用 SSL)
sudo ufw allow 443/tcp
# 检查防火墙状态
sudo ufw status
步骤 8: 部署前端(可选)
如果使用前后端分离部署:
cd /root/.openclaw/workspace/city-manual-temp/frontend
# 安装依赖
npm install
# 构建生产版本
npm run build
# 配置 Nginx 服务构建文件
# (需要额外配置 Nginx 路由)
步骤 9: 验证部署
# 检查 Gunicorn 状态
sudo systemctl status city-manual
# 检查 Nginx 状态
sudo systemctl status nginx
# 测试访问
curl http://cssc.datalibstar.com/
curl http://cssc.datalibstar.com/admin/
# 查看日志
sudo tail -f /var/log/nginx/city-manual-access.log
sudo tail -f /var/log/nginx/city-manual-error.log
自动化部署脚本
创建 deploy.sh 脚本:
#!/bin/bash
set -e
echo "🚀 开始部署城市手册..."
PROJECT_DIR="/root/.openclaw/workspace/city-manual"
VENV_DIR="$PROJECT_DIR/backend/venv"
# 1. 拉取最新代码
cd $PROJECT_DIR
git pull origin master
# 2. 安装依赖
source $VENV_DIR/bin/activate
pip install -r requirements.txt -q
# 3. 数据库迁移
cd $PROJECT_DIR/backend
python manage.py migrate --noinput
# 4. 收集静态文件
python manage.py collectstatic --noinput
# 5. 重启 Gunicorn
sudo systemctl restart city-manual
# 6. 检查状态
sleep 2
if sudo systemctl is-active --quiet city-manual; then
echo "✅ 部署成功!"
echo "📍 访问地址:http://cssc.datalibstar.com"
else
echo "❌ 部署失败,请检查日志"
exit 1
fi
使用:
chmod +x deploy.sh
./deploy.sh
HTTPS 配置(推荐)
使用 Let's Encrypt
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d cssc.datalibstar.com
# 自动续期
sudo certbot renew --dry-run
配置自动 HTTPS 重定向
Nginx 配置会自动添加 301 重定向。
监控和维护
日志查看
# Nginx 日志
sudo tail -f /var/log/nginx/city-manual-access.log
sudo tail -f /var/log/nginx/city-manual-error.log
# Gunicorn 日志
sudo journalctl -u city-manual -f
性能监控
# 查看进程
ps aux | grep gunicorn
# 查看连接
sudo netstat -nltp | grep city-manual
# 查看资源使用
htop
备份数据库
# 备份
pg_dump -h 10.2.0.100 -U coder cssc > backup_$(date +%Y%m%d).sql
# 恢复
psql -h 10.2.0.100 -U coder cssc < backup_20260412.sql
故障排除
问题 1: Gunicorn 启动失败
# 查看详细错误
sudo journalctl -u city-manual -n 50
# 检查端口占用
sudo lsof -i :8000
# 手动测试
cd /root/.openclaw/workspace/city-manual/backend
source venv/bin/activate
python manage.py runserver
问题 2: Nginx 502 Bad Gateway
# 检查 Gunicorn socket
ls -la /run/city-manual.sock
# 检查权限
sudo chmod 666 /run/city-manual.sock
# 重启服务
sudo systemctl restart city-manual
sudo systemctl restart nginx
问题 3: 静态文件 404
# 重新收集
cd /root/.openclaw/workspace/city-manual/backend
source venv/bin/activate
python manage.py collectstatic --noinput
# 检查 Nginx 配置路径
sudo nginx -t
问题 4: 数据库连接失败
# 测试连接
psql -h 10.2.0.100 -U coder -d cssc
# 检查 .env 配置
cat /root/.openclaw/workspace/city-manual/.env
回滚方案
# 1. 切换到上一个版本
cd /root/.openclaw/workspace/city-manual
git checkout <previous-commit>
# 2. 重新部署
./deploy.sh
# 3. 验证
curl http://cssc.datalibstar.com/
部署检查清单
- SSH 可以正常连接
- Python 和 Node.js 版本正确
- PostgreSQL 可连接
- 代码已拉取到最新
- 依赖已安装
- 数据库迁移完成
- 静态文件已收集
- Gunicorn 服务运行正常
- Nginx 配置正确
- 防火墙已配置
- 可以通过浏览器访问
- Admin 后台可以登录
- 日志正常无错误
参考链接
版本信息
- 文档版本: 1.0
- 创建日期: 2026-04-12
- 项目版本: 2026.4.12
- 作者: 码神 ⚡