From 88837924f25fb126ad05eb5c8103ee875dbd560f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Thu, 26 Mar 2026 19:38:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E7=BB=93=E6=9E=84=E4=BB=A5=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E5=AE=B9=E5=99=A8=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重新组织部署目录结构: - DEPLOY_ROOT: /home/novalon/docker-app (多容器管理根目录) - PROJECT_NAME: novalon-website (项目名称) - PROJECT_DIR: /home/novalon/docker-app/novalon-website (项目目录) - CONTAINER_NAME: novalon-website (容器名称) - 修复heredoc变量展开问题,使用双引号ENDSSH - 在上传文件前创建项目目录 - 更新所有容器相关命令使用正确的变量 - 更新部署文档,添加多容器管理结构说明 - 添加运维告警邮箱信息到项目信息 --- DEPLOYMENT.md | 24 +++++++++++++++++++++++- deploy.sh | 26 +++++++++++++++----------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 03ce2d6..16bf75a 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -6,9 +6,31 @@ - **域名**: novalon.cn - **服务器IP**: 139.155.109.62 - **ICP备案号**: 蜀ICP备2026013658号 -- **部署目录**: /home/novalon/docker-app +- **部署根目录**: /home/novalon/docker-app (多容器管理根目录) +- **项目目录**: /home/novalon/docker-app/novalon-website (当前项目) - **容器名称**: novalon-website - **版本号**: 1.0.0 +- **运维告警邮箱**: ops@novalon.cn + +## 多容器管理结构 + +``` +/home/novalon/docker-app/ # 部署根目录 +├── novalon-website/ # Novalon官网项目 +│ ├── docker-compose.yml +│ ├── Dockerfile +│ ├── nginx.conf +│ ├── .env +│ └── setup-ssl.sh +├── other-project-1/ # 其他项目1(示例) +│ ├── docker-compose.yml +│ └── ... +└── other-project-2/ # 其他项目2(示例) + ├── docker-compose.yml + └── ... +``` + +每个项目在 `/home/novalon/docker-app` 根目录下有独立的项目目录,包含各自的配置文件和Docker容器。 ## 部署架构 diff --git a/deploy.sh b/deploy.sh index 861110b..88533fb 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,12 +4,15 @@ set -e SERVER_IP="139.155.109.62" SERVER_USER="root" -DEPLOY_DIR="/home/novalon/docker-app" -PROJECT_DIR="novalon-website" +DEPLOY_ROOT="/home/novalon/docker-app" +PROJECT_NAME="novalon-website" +PROJECT_DIR="$DEPLOY_ROOT/$PROJECT_NAME" +CONTAINER_NAME="novalon-website" echo "🚀 开始部署Novalon网站到服务器 $SERVER_IP" -echo "📁 部署目录: $DEPLOY_DIR" -echo "🐳 容器名称: $PROJECT_DIR" +echo "📁 部署根目录: $DEPLOY_ROOT" +echo "📁 项目目录: $PROJECT_DIR" +echo "🐳 容器名称: $CONTAINER_NAME" echo "📦 版本号: 1.0.0" echo "" @@ -22,13 +25,14 @@ echo "✅ SSH连接验证成功" echo "" echo "📋 步骤2: 上传部署文件..." -scp -r docker-compose.yml Dockerfile nginx.conf .env.example setup-ssl.sh "$SERVER_USER@$SERVER_IP:$DEPLOY_DIR/" +ssh "$SERVER_USER@$SERVER_IP" "mkdir -p '$PROJECT_DIR'" +scp -r docker-compose.yml Dockerfile nginx.conf .env.example setup-ssl.sh "$SERVER_USER@$SERVER_IP:$PROJECT_DIR/" echo "✅ 部署文件已上传" echo "" echo "📋 步骤3: 在服务器上执行部署..." -ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH' -cd '$DEPLOY_DIR' +ssh "$SERVER_USER@$SERVER_IP" << ENDSSH +cd '$PROJECT_DIR' echo "🔒 配置SSL证书..." chmod +x setup-ssl.sh @@ -52,7 +56,7 @@ echo "📋 等待服务启动..." timeout=60 elapsed=0 while [ $elapsed -lt $timeout ]; do - if docker ps | grep -q "novalon-website"; then + if docker ps | grep -q "$CONTAINER_NAME"; then echo "✅ 服务已启动" break fi @@ -65,10 +69,10 @@ if [ $elapsed -ge $timeout ]; then fi echo "📋 检查容器状态..." -docker ps | grep "$PROJECT_DIR" +docker ps | grep "$CONTAINER_NAME" echo "📋 检查容器日志..." -docker logs novalon-website --tail 50 +docker logs "$CONTAINER_NAME" --tail 50 echo "📋 配置SSL证书自动续期..." # 添加certbot自动续期cron任务 @@ -95,7 +99,7 @@ echo "" echo "📋 后续步骤:" echo " 1. 验证网站可访问性" echo " 2. 检查容器运行状态: docker ps" -echo " 3. 查看容器日志: docker logs $PROJECT_DIR" +echo " 3. 查看容器日志: docker logs $CONTAINER_NAME" echo " 4. 验证HTTPS配置" echo " 5. 测试网站主要功能" echo " 6. 检查SSL证书自动续期: crontab -l" \ No newline at end of file