Files
soul/scripts/deploy-to-server.sh

75 lines
2.3 KiB
Bash
Raw Normal View History

#!/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