fix: 修复部署脚本中的关键问题并添加运维告警邮箱配置
- 修复deploy.sh中的关键问题: - 删除本地创建远程目录的错误代码 - 修复SCP目标路径错误 - 修复grep中的变量展开问题 - 修复容器日志查看命令 - 实现健康检查机制替代硬编码等待时间 - 添加SSH连接验证 - 添加cron任务配置的错误处理 - 添加运维告警邮箱环境变量OPS_ALERT_EMAIL - 更新部署文档,添加SSL证书自动续期详细说明
This commit is contained in:
@@ -13,10 +13,12 @@ echo "🐳 容器名称: $PROJECT_DIR"
|
||||
echo "📦 版本号: 1.0.0"
|
||||
echo ""
|
||||
|
||||
echo "📋 步骤1: 准备部署文件..."
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
chmod 755 "$DEPLOY_DIR"
|
||||
echo "✅ 部署目录已准备"
|
||||
echo "📋 步骤1: 验证SSH连接..."
|
||||
if ! ssh -o ConnectTimeout=5 "$SERVER_USER@$SERVER_IP" exit; then
|
||||
echo "❌ 无法连接到服务器 $SERVER_IP"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ SSH连接验证成功"
|
||||
|
||||
echo ""
|
||||
echo "📋 步骤2: 上传部署文件..."
|
||||
@@ -37,7 +39,7 @@ if [ ! -f .env ]; then
|
||||
echo "📝 创建.env文件..."
|
||||
cp .env.example .env
|
||||
echo "⚠️ 请编辑.env文件,填入正确的环境变量"
|
||||
echo "⚠️ 必须配置: DATABASE_URL, NEXTAUTH_SECRET, NEXTAUTH_URL, RESEND_API_KEY"
|
||||
echo "⚠️ 必须配置: DATABASE_URL, NEXTAUTH_SECRET, NEXTAUTH_URL, RESEND_API_KEY, OPS_ALERT_EMAIL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -47,13 +49,38 @@ docker-compose pull
|
||||
docker-compose up -d
|
||||
|
||||
echo "📋 等待服务启动..."
|
||||
sleep 10
|
||||
timeout=60
|
||||
elapsed=0
|
||||
while [ $elapsed -lt $timeout ]; do
|
||||
if docker ps | grep -q "novalon-website"; then
|
||||
echo "✅ 服务已启动"
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
elapsed=$((elapsed + 2))
|
||||
done
|
||||
if [ $elapsed -ge $timeout ]; then
|
||||
echo "❌ 服务启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📋 检查容器状态..."
|
||||
docker ps | grep '$PROJECT_DIR'
|
||||
docker ps | grep "$PROJECT_DIR"
|
||||
|
||||
echo "📋 检查容器日志..."
|
||||
docker logs $PROJECT_DIR --tail 50
|
||||
docker logs novalon-website --tail 50
|
||||
|
||||
echo "📋 配置SSL证书自动续期..."
|
||||
# 添加certbot自动续期cron任务
|
||||
if ! crontab -l | grep -q "certbot renew"; then
|
||||
if ! (crontab -l 2>/dev/null; echo "0 0,12 * * * certbot renew --quiet --post-hook 'docker restart novalon-nginx'") | crontab -; then
|
||||
echo "❌ SSL证书自动续期任务配置失败"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ SSL证书自动续期任务已配置"
|
||||
else
|
||||
echo "✅ SSL证书自动续期任务已存在"
|
||||
fi
|
||||
|
||||
echo "✅ 部署完成!"
|
||||
ENDSSH
|
||||
@@ -70,4 +97,5 @@ echo " 1. 验证网站可访问性"
|
||||
echo " 2. 检查容器运行状态: docker ps"
|
||||
echo " 3. 查看容器日志: docker logs $PROJECT_DIR"
|
||||
echo " 4. 验证HTTPS配置"
|
||||
echo " 5. 测试网站主要功能"
|
||||
echo " 5. 测试网站主要功能"
|
||||
echo " 6. 检查SSL证书自动续期: crontab -l"
|
||||
Reference in New Issue
Block a user