#!/bin/bash # 城市手册项目一键部署脚本 # 在服务器上运行: bash one_click_deploy.sh set -e echo "========================================" echo " 城市手册项目一键部署" echo "========================================" echo "" # 检查是否有 root 权限 if [ "$EUID" -ne 0 ]; then echo "需要 root 权限,使用 sudo 运行" echo "命令: sudo bash one_click_deploy.sh" exit 1 fi # 更新系统 echo "1. 更新系统..." apt-get update -qq # 安装基础工具 echo "2. 安装基础工具..." apt-get install -y curl git # 安装 Docker echo "3. 安装 Docker..." if ! command -v docker &> /dev/null; then curl -fsSL https://get.docker.com | sh usermod -aG docker ubuntu echo "✓ Docker 已安装" else echo "✓ Docker 已存在,跳过安装" fi # 安装 Docker Compose echo "4. 安装 Docker Compose..." if ! command -v docker-compose &> /dev/null; then curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose echo "✓ Docker Compose 已安装" else echo "✓ Docker Compose 已存在,跳过安装" fi # 创建项目目录 echo "5. 创建项目目录..." mkdir -p /opt/chengshishouce cd /opt/chengshishouce # 克隆项目代码 echo "6. 克隆项目代码..." if [ -d ".git" ]; then echo "✓ 项目已存在,拉取最新代码" git pull else # 使用 datalib 远程仓库 git clone https://mashen:825670%40MashenClaw@xjp.datalibstar.com/mashen/chengshishouce.git . echo "✓ 项目代码已下载" fi # 生成 .env 文件 echo "7. 配置环境变量..." cat > .env << 'EOF' DJANGO_SECRET_KEY=$(openssl rand -hex 32) DJANGO_DEBUG=False DB_NAME=citywiki DB_USER=citywiki DB_PASSWORD=CityWiki2024! DB_HOST=db DB_PORT=5432 ALLOWED_HOSTS=localhost,cssc.datalibstar.com CORS_ALLOWED_ORIGINS=http://localhost,http://cssc.datalibstar.com EOF echo "✓ 环境配置已创建" # 启动服务 echo "8. 构建并启动 Docker 服务..." docker-compose build docker-compose up -d echo "✓ 服务已启动" # 等待数据库启动 echo "9. 等待数据库启动..." sleep 10 # 运行数据库迁移 echo "10. 运行数据库迁移..." docker-compose exec -T backend python manage.py migrate --noinput # 创建超级用户(使用脚本) echo "11. 创建管理员账户..." 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 "访问地址:" echo " http://cssc.datalibstar.com" echo "" echo "管理员登录:" echo " 用户名: admin" echo " 密码: Admin123!" echo "" echo "常用命令:" echo " 查看日志: cd /opt/chengshishouce && docker-compose logs -f" echo " 停止服务: cd /opt/chengshishouce && docker-compose stop" echo " 重启服务: cd /opt/chengshishouce && docker-compose restart" echo " 更新代码: cd /opt/chengshishouce && git pull && docker-compose up -d --build" echo "" echo "========================================" echo ""