Files
chengshishouce/deploy_to_server.sh

115 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 城市手册项目 - 本地构建并部署到服务器
set -e
SERVER_USER="ubuntu"
SERVER_HOST="cssc.datalibstar.com"
SERVER_PASS="825670@MashenClaw"
SERVER_DIR="/home/ubuntu/city-manual"
LOCAL_DIR="/root/.openclaw/workspace"
echo "========================================"
echo " 城市手册项目部署到云服务器"
echo "========================================"
echo ""
# 1. 在服务器上创建目录
echo "1. 准备服务器目录..."
sshpass -p "$SERVER_PASS" ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_HOST" "
if [ -d '$SERVER_DIR' ]; then
echo '备份旧版本...'
mv $SERVER_DIR ${SERVER_DIR}.backup.\$(date +%Y%m%d_%H%M%S)
fi
mkdir -p $SERVER_DIR
"
# 2. 使用 rsync 同步代码
echo "2. 同步代码到服务器..."
rsync -avz --delete \
--exclude '.git' \
--exclude 'node_modules' \
--exclude 'backend/venv' \
--exclude '__pycache__' \
--exclude '*.pyc' \
--exclude '.env' \
--exclude 'db.sqlite3' \
--exclude 'media' \
--exclude 'staticfiles' \
--exclude '.docker' \
"$LOCAL_DIR/" \
"sshpass -p '$SERVER_PASS' rsync --rsh=ssh -avz $SERVER_USER@$SERVER_HOST:$SERVER_DIR/"
echo "✓ 代码同步完成"
# 3. 在服务器上执行部署
echo "3. 在服务器上执行部署..."
sshpass -p "$SERVER_PASS" ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_HOST" "
cd $SERVER_DIR
# 创建 .env 文件
echo '创建环境配置...'
cat > .env << 'EOF'
DJANGO_SECRET_KEY=CityWiki2024SecretKey825670
DJANGO_DEBUG=False
DB_NAME=citywiki
DB_USER=citywiki
DB_PASSWORD=CityWiki2024!
DB_HOST=db
DB_PORT=5432
ALLOWED_HOSTS=localhost,cssc.datalibstar.com,127.0.0.1
CORS_ALLOWED_ORIGINS=http://localhost,http://cssc.datalibstar.com,http://127.0.0.1
EOF
# 安装前端依赖
echo '安装前端依赖...'
cd frontend
npm install --production
cd ..
# 构建并启动 Docker
echo '构建 Docker 镜像...'
docker-compose build
echo '启动服务...'
docker-compose up -d
# 等待服务启动
echo '等待服务启动...'
sleep 15
# 运行数据库迁移
echo '运行数据库迁移...'
docker-compose exec -T backend python manage.py migrate --noinput
# 导入省份数据
echo '导入省份数据...'
docker-compose exec -T backend python manage.py seed_provinces
# 创建超级用户
echo '创建管理员账户...'
docker-compose exec -T backend python manage.py shell << 'PYTHON'
from django.contrib.auth import get_user_model
User = get_user_model()
if not User.objects.filter(username='admin').exists():
User.objects.create_superuser('admin', 'admin@citywiki.com', 'Admin123!')
print('✓ 管理员账户已创建')
print(' 用户名admin')
print(' 密码Admin123!')
else:
print('✓ 管理员账户已存在')
PYTHON
echo ''
echo '========================================'
echo ' 部署完成!'
echo '========================================'
echo ''
echo '访问地址http://cssc.datalibstar.com'
echo '管理员admin / Admin123!'
echo ''
"
echo ""
echo "✅ 部署完成!"