feat: 添加生产环境配置,重构 API 请求,更新部署脚本和配置
This commit is contained in:
47
deploy.sh
Executable file
47
deploy.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# ─── 配置 ───────────────────────────────────────────
|
||||
SERVER="root@119.91.211.52"
|
||||
REMOTE_DIR="/root/apps/meme-studio"
|
||||
APP_NAME="meme-studio"
|
||||
|
||||
# ─── 颜色 ───────────────────────────────────────────
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
step() { echo -e "\n${GREEN}▶ $1${NC}"; }
|
||||
warn() { echo -e "${YELLOW}⚠ $1${NC}"; }
|
||||
fail() { echo -e "${RED}✖ $1${NC}"; exit 1; }
|
||||
|
||||
START_TIME=$(date +%s)
|
||||
|
||||
# ─── 1. 本地构建 ────────────────────────────────────
|
||||
step "构建项目..."
|
||||
pnpm run build || fail "构建失败"
|
||||
|
||||
# ─── 2. 创建远程目录 ────────────────────────────────
|
||||
step "初始化远程目录..."
|
||||
ssh "$SERVER" "mkdir -p $REMOTE_DIR/.next/static $REMOTE_DIR/public"
|
||||
|
||||
# ─── 3. 同步文件(排除 node_modules,由服务器安装)───
|
||||
step "同步文件到服务器..."
|
||||
|
||||
rsync -az --delete --exclude='node_modules' .next/standalone/ "$SERVER:$REMOTE_DIR/"
|
||||
rsync -az .next/static/ "$SERVER:$REMOTE_DIR/.next/static/"
|
||||
rsync -az public/ "$SERVER:$REMOTE_DIR/public/"
|
||||
rsync -az prisma/ "$SERVER:$REMOTE_DIR/prisma/"
|
||||
rsync -az .env.production "$SERVER:$REMOTE_DIR/.env"
|
||||
rsync -az ecosystem.config.js "$SERVER:$REMOTE_DIR/"
|
||||
rsync -az package.json package-lock.json "$SERVER:$REMOTE_DIR/"
|
||||
|
||||
# ─── 4. 远程安装依赖 & 重启 ─────────────────────────
|
||||
step "安装依赖并重启服务..."
|
||||
ssh "$SERVER" "cd $REMOTE_DIR && npm install --production && npx prisma generate && (pm2 restart $APP_NAME 2>/dev/null || pm2 start ecosystem.config.js)"
|
||||
|
||||
# ─── 完成 ───────────────────────────────────────────
|
||||
END_TIME=$(date +%s)
|
||||
ELAPSED=$((END_TIME - START_TIME))
|
||||
echo -e "\n${GREEN}✔ 部署完成!耗时 ${ELAPSED}s${NC}"
|
||||
Reference in New Issue
Block a user