- 更新chapter/[id]/route.ts使用Promise params (Next.js 16要求) - 删除过时的app/api/db目录下的旧API文件(bookDB/userDB等不存在的导出) - 添加部署脚本deploy-to-server.sh - 添加章节迁移脚本migrate-chapters-to-db.ts
75 lines
2.3 KiB
Bash
Executable File
75 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
||
# Soul项目一键部署到宝塔服务器
|
||
# 使用方法: ./deploy-to-server.sh [SSH密码]
|
||
|
||
# 服务器配置
|
||
SERVER_IP="42.194.232.22"
|
||
SERVER_USER="root"
|
||
PROJECT_PATH="/www/wwwroot/soul"
|
||
BRANCH="soul-content"
|
||
|
||
# 颜色输出
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m'
|
||
|
||
echo "======================================="
|
||
echo " Soul项目 - 宝塔服务器一键部署"
|
||
echo "======================================="
|
||
echo ""
|
||
|
||
# 检查sshpass是否安装
|
||
if ! command -v sshpass &> /dev/null; then
|
||
echo -e "${YELLOW}正在安装sshpass...${NC}"
|
||
brew install hudochenkov/sshpass/sshpass 2>/dev/null || {
|
||
echo -e "${RED}请手动安装sshpass: brew install hudochenkov/sshpass/sshpass${NC}"
|
||
exit 1
|
||
}
|
||
fi
|
||
|
||
# 获取SSH密码
|
||
if [ -z "$1" ]; then
|
||
echo -n "请输入SSH密码: "
|
||
read -s SSH_PASSWORD
|
||
echo ""
|
||
else
|
||
SSH_PASSWORD="$1"
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${GREEN}[1/5]${NC} 连接服务器..."
|
||
|
||
# 测试连接
|
||
sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 $SERVER_USER@$SERVER_IP "echo '连接成功'" 2>/dev/null
|
||
if [ $? -ne 0 ]; then
|
||
echo -e "${RED}连接失败,请检查密码是否正确${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${GREEN}[2/5]${NC} 拉取最新代码..."
|
||
sshpass -p "$SSH_PASSWORD" ssh $SERVER_USER@$SERVER_IP "cd $PROJECT_PATH && git fetch origin && git reset --hard origin/$BRANCH"
|
||
|
||
echo -e "${GREEN}[3/5]${NC} 安装依赖..."
|
||
sshpass -p "$SSH_PASSWORD" ssh $SERVER_USER@$SERVER_IP "cd $PROJECT_PATH && pnpm install --frozen-lockfile 2>/dev/null || npm install"
|
||
|
||
echo -e "${GREEN}[4/5]${NC} 构建项目..."
|
||
sshpass -p "$SSH_PASSWORD" ssh $SERVER_USER@$SERVER_IP "cd $PROJECT_PATH && pnpm build 2>/dev/null || npm run build"
|
||
|
||
echo -e "${GREEN}[5/5]${NC} 重启服务..."
|
||
# 使用www用户的PM2(宝塔方式)
|
||
sshpass -p "$SSH_PASSWORD" ssh $SERVER_USER@$SERVER_IP "sudo -u www /www/server/nvm/versions/node/*/bin/pm2 restart soul 2>/dev/null || pm2 restart soul"
|
||
|
||
echo ""
|
||
echo "======================================="
|
||
echo -e "${GREEN}✅ 部署完成!${NC}"
|
||
echo "======================================="
|
||
echo ""
|
||
echo "访问地址: https://soul.quwanzhi.com"
|
||
echo ""
|
||
|
||
# 测试API
|
||
echo "正在验证部署..."
|
||
sleep 3
|
||
curl -s "https://soul.quwanzhi.com/api/book/chapter/1.1" | head -100
|