144 lines
4.0 KiB
Bash
Executable File
144 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 销售官网更新部署脚本(使用密码认证)
|
||
# 使用方法:bash deploy-website-update-with-password.sh
|
||
|
||
set -e
|
||
|
||
echo "🚀 部署销售官网更新(密码认证)..."
|
||
echo ""
|
||
|
||
# 服务器信息
|
||
SERVER="root@45.249.208.118"
|
||
SERVER_IP="45.249.208.118"
|
||
REMOTE_DIR="/opt/flnxi-website"
|
||
|
||
# 服务器密码(从之前的脚本中获取)
|
||
SERVER_PASSWORD="lxvhNYFZ4160"
|
||
|
||
# 颜色定义
|
||
GREEN='\033[0;32m'
|
||
BLUE='\033[0;34m'
|
||
YELLOW='\033[1;33m'
|
||
RED='\033[0;31m'
|
||
NC='\033[0m'
|
||
|
||
# 检查sshpass是否安装
|
||
if ! command -v sshpass &> /dev/null; then
|
||
echo -e "${RED}❌ sshpass 未安装${NC}"
|
||
echo ""
|
||
echo "请安装 sshpass:"
|
||
echo ""
|
||
echo "macOS:"
|
||
echo " brew install hudochenkov/sshpass/sshpass"
|
||
echo ""
|
||
echo "或使用无密码方案(配置SSH密钥):"
|
||
echo " 参考 立即部署指南.md"
|
||
echo ""
|
||
exit 1
|
||
fi
|
||
|
||
# SSH执行函数
|
||
ssh_exec() {
|
||
sshpass -p "$SERVER_PASSWORD" ssh -o StrictHostKeyChecking=no $SERVER "$1"
|
||
}
|
||
|
||
# SCP上传函数
|
||
scp_upload() {
|
||
sshpass -p "$SERVER_PASSWORD" scp -o StrictHostKeyChecking=no "$1" "$2"
|
||
}
|
||
|
||
# 检查服务器连接
|
||
echo -e "${BLUE}检查服务器连接...${NC}"
|
||
if ! ssh_exec "echo '连接成功'" 2>/dev/null; then
|
||
echo -e "${RED}❌ 无法连接到服务器 $SERVER_IP${NC}"
|
||
echo "请检查:"
|
||
echo "1. 服务器是否在线"
|
||
echo "2. 密码是否正确"
|
||
echo "3. 网络连接是否正常"
|
||
exit 1
|
||
fi
|
||
echo -e "${GREEN}✅ 服务器连接成功${NC}"
|
||
echo ""
|
||
|
||
# 步骤1:打包更新文件
|
||
echo -e "${BLUE}步骤 1/6: 打包更新文件...${NC}"
|
||
rm -f website-update.tar.gz
|
||
|
||
tar -czf website-update.tar.gz \
|
||
components/Hero.tsx \
|
||
components/Pricing.tsx \
|
||
components/Features.tsx \
|
||
components/SystemFeatures.tsx \
|
||
app/page.tsx \
|
||
package.json
|
||
|
||
echo -e "${GREEN}✅ 文件打包完成${NC}"
|
||
echo ""
|
||
|
||
# 步骤2:上传到服务器
|
||
echo -e "${BLUE}步骤 2/6: 上传到服务器...${NC}"
|
||
scp_upload website-update.tar.gz $SERVER:$REMOTE_DIR/
|
||
echo -e "${GREEN}✅ 上传完成${NC}"
|
||
echo ""
|
||
|
||
# 步骤3:解压文件
|
||
echo -e "${BLUE}步骤 3/6: 解压更新文件...${NC}"
|
||
ssh_exec "cd $REMOTE_DIR && tar -xzf website-update.tar.gz && rm website-update.tar.gz"
|
||
echo -e "${GREEN}✅ 解压完成${NC}"
|
||
echo ""
|
||
|
||
# 步骤4:重新构建Docker镜像
|
||
echo -e "${BLUE}步骤 4/6: 重新构建Docker镜像...${NC}"
|
||
echo -e "${YELLOW}⏳ 这可能需要2-3分钟,请稍候...${NC}"
|
||
ssh_exec "cd $REMOTE_DIR && docker-compose down && docker-compose build --no-cache"
|
||
echo -e "${GREEN}✅ Docker镜像已重新构建${NC}"
|
||
echo ""
|
||
|
||
# 步骤5:启动服务
|
||
echo -e "${BLUE}步骤 5/6: 启动服务...${NC}"
|
||
ssh_exec "cd $REMOTE_DIR && docker-compose up -d && sleep 30"
|
||
echo -e "${GREEN}✅ 服务已启动${NC}"
|
||
echo ""
|
||
|
||
# 步骤6:验证部署
|
||
echo -e "${BLUE}步骤 6/6: 验证部署...${NC}"
|
||
|
||
# 检查容器状态
|
||
echo "检查容器状态..."
|
||
ssh_exec "cd $REMOTE_DIR && docker-compose ps"
|
||
|
||
# 检查网站响应
|
||
echo ""
|
||
echo "检查网站响应..."
|
||
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://$SERVER_IP:3000 || echo "000")
|
||
|
||
if [ "$RESPONSE" = "200" ]; then
|
||
echo -e "${GREEN}✅ 网站响应正常 (HTTP $RESPONSE)${NC}"
|
||
else
|
||
echo -e "${YELLOW}⚠️ 网站响应异常 (HTTP $RESPONSE)${NC}"
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||
echo -e "${GREEN}🎉 销售官网更新部署完成!${NC}"
|
||
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||
echo ""
|
||
|
||
echo -e "${YELLOW}📝 更新内容:${NC}"
|
||
echo "✅ Hero首页组件 - 推广期特惠¥599"
|
||
echo "✅ Pricing价格组件 - 三级版本+远程部署服务"
|
||
echo "✅ SystemFeatures系统功能 - 12大核心功能"
|
||
echo "✅ Features核心优势 - 免费版vs付费版对比"
|
||
echo ""
|
||
|
||
echo -e "${YELLOW}🌐 访问地址:${NC}"
|
||
echo "http://$SERVER_IP:3000"
|
||
echo ""
|
||
|
||
# 清理本地临时文件
|
||
rm -f website-update.tar.gz
|
||
|
||
echo -e "${GREEN}✨ 部署成功!${NC}"
|
||
|