bcf16fe53d
- 新增 docker-compose.prod.yml / docker-compose.test.yml 双环境配置 - 新增 docker-compose.gateway.yml Nginx 网关按域名路由 - 新增 Dockerfile.website 官网镜像构建 - 新增 gateway.conf 支持 8 个域名路由 - 更新 .gitlab-ci.yml 支持 prod/test 双分支自动部署 - 更新 Makefile 新增 prod-/test-/gateway- 快捷命令 - 新增 scripts/setup-server.sh 服务器一键初始化脚本 - 修复 Nginx 配置服务名不匹配问题 - 修复前端 Dockerfile 缺少 packages/ 导致构建失败 - 删除旧的 docker-compose.yml Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
108 lines
3.3 KiB
Bash
108 lines
3.3 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "============================================"
|
|
echo " 品居会 - 服务器首次初始化"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
# ===== 1. 系统更新 =====
|
|
echo ">>> 更新系统包..."
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# ===== 2. 安装 Docker =====
|
|
if ! command -v docker &> /dev/null; then
|
|
echo ">>> 安装 Docker..."
|
|
curl -fsSL https://get.docker.com | sh
|
|
sudo usermod -aG docker $USER
|
|
echo "Docker 已安装。可能需要重新登录以生效。"
|
|
else
|
|
echo ">>> Docker 已安装,跳过。"
|
|
fi
|
|
|
|
# ===== 3. 验证 Docker Compose =====
|
|
if ! docker compose version &> /dev/null; then
|
|
echo ">>> 安装 Docker Compose 插件..."
|
|
sudo apt install -y docker-compose-plugin
|
|
else
|
|
echo ">>> Docker Compose 已安装,跳过。"
|
|
fi
|
|
|
|
# ===== 4. 安装 Git =====
|
|
if ! command -v git &> /dev/null; then
|
|
echo ">>> 安装 Git..."
|
|
sudo apt install -y git
|
|
else
|
|
echo ">>> Git 已安装,跳过。"
|
|
fi
|
|
|
|
# ===== 5. 安装 pnpm =====
|
|
if ! command -v pnpm &> /dev/null; then
|
|
echo ">>> 安装 pnpm..."
|
|
npm install -g pnpm 2>/dev/null || { echo "需要先安装 Node.js"; exit 1; }
|
|
else
|
|
echo ">>> pnpm 已安装,跳过。"
|
|
fi
|
|
|
|
# ===== 6. 配置环境变量 =====
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
ENV_FILE="$PROJECT_DIR/deploy/docker/.env"
|
|
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo ">>> 创建 .env 文件..."
|
|
cp "$PROJECT_DIR/deploy/docker/.env.example" "$ENV_FILE"
|
|
echo ""
|
|
echo " *** 重要 ***"
|
|
echo " 请编辑 $ENV_FILE 填入真实密码和密钥。"
|
|
echo " 必填变量:"
|
|
echo " - PROD_DB_PASSWORD 生产环境数据库密码"
|
|
echo " - PROD_JWT_SECRET 生产环境 JWT 密钥"
|
|
echo " - TEST_DB_PASSWORD 测试环境数据库密码"
|
|
echo " - TEST_JWT_SECRET 测试环境 JWT 密钥"
|
|
echo ""
|
|
read -p " 按 Enter 打开编辑器,或 Ctrl+C 退出手动编辑..."
|
|
${EDITOR:-vi} "$ENV_FILE"
|
|
else
|
|
echo ">>> .env 文件已存在,跳过。"
|
|
fi
|
|
|
|
# ===== 7. 创建 Docker 网络 =====
|
|
echo ">>> 创建 Docker 网络..."
|
|
docker network create rent-prod 2>/dev/null || echo " rent-prod 网络已存在。"
|
|
docker network create rent-test 2>/dev/null || echo " rent-test 网络已存在。"
|
|
|
|
# ===== 8. 启动网关 =====
|
|
echo ">>> 启动 Gateway Nginx..."
|
|
cd "$PROJECT_DIR"
|
|
docker compose -f deploy/docker/docker-compose.gateway.yml up -d
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo " 初始化完成!"
|
|
echo "============================================"
|
|
echo ""
|
|
echo "后续步骤:"
|
|
echo " 1. 确认 .env 中的密码已正确填写"
|
|
echo " 2. 部署生产环境:make prod-deploy"
|
|
echo " 3. 部署测试环境:make test-deploy"
|
|
echo ""
|
|
echo " 配置以下 DNS 记录指向本服务器 IP:"
|
|
echo ""
|
|
echo " 生产环境:"
|
|
echo " api.pinzhuhui.com"
|
|
echo " www.pinzhuhui.com"
|
|
echo " merchant.pinzhuhui.com"
|
|
echo " platform-admin.pinzhuhui.com"
|
|
echo ""
|
|
echo " 测试环境:"
|
|
echo " api-test.pinzhuhui.com"
|
|
echo " test.pinzhuhui.com"
|
|
echo " merchant-test.pinzhuhui.com"
|
|
echo " platform-admin-test.pinzhuhui.com"
|
|
echo ""
|
|
echo " 4. (可选)配置 SSL 证书:"
|
|
echo " sudo apt install certbot"
|
|
echo " sudo certbot certonly --standalone -d api.pinzhuhui.com -d www.pinzhuhui.com ..."
|
|
echo ""
|