From d16b29ace5d561395ca4b0bfe282899e138a1fbf Mon Sep 17 00:00:00 2001 From: mashen Date: Fri, 10 Apr 2026 09:52:30 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E9=94=AE=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- one_click_deploy.sh | 126 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100755 one_click_deploy.sh diff --git a/one_click_deploy.sh b/one_click_deploy.sh new file mode 100755 index 0000000..7c5d4cc --- /dev/null +++ b/one_click_deploy.sh @@ -0,0 +1,126 @@ +#!/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 "" \ No newline at end of file