93 lines
2.8 KiB
Bash
93 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
SERVER_IP="49.232.209.156"
|
|
SERVER_USER="ai-auto"
|
|
SERVER_PASS="ashai@X1an"
|
|
DEPLOY_DIR="/home/ai-auto/auto-deploy-demo"
|
|
DOMAIN="ashai.com.cn"
|
|
|
|
echo "=========================================="
|
|
echo " 自动部署脚本 - 快速Demo演示系统"
|
|
echo "=========================================="
|
|
|
|
echo ""
|
|
echo "[1/7] 检查服务器连接..."
|
|
sshpass -p "$SERVER_PASS" ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "echo '服务器连接成功'"
|
|
|
|
echo ""
|
|
echo "[2/7] 安装Node.js环境..."
|
|
sshpass -p "$SERVER_PASS" ssh $SERVER_USER@$SERVER_IP << 'EOF'
|
|
if ! command -v node &> /dev/null; then
|
|
echo "正在安装Node.js..."
|
|
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
|
|
sudo yum install -y nodejs
|
|
fi
|
|
echo "Node.js版本: $(node -v)"
|
|
echo "NPM版本: $(npm -v)"
|
|
EOF
|
|
|
|
echo ""
|
|
echo "[3/7] 安装PM2进程管理器..."
|
|
sshpass -p "$SERVER_PASS" ssh $SERVER_USER@$SERVER_IP << 'EOF'
|
|
if ! command -v pm2 &> /dev/null; then
|
|
sudo npm install -g pm2
|
|
fi
|
|
echo "PM2版本: $(pm2 -v)"
|
|
EOF
|
|
|
|
echo ""
|
|
echo "[4/7] 创建项目目录并传输文件..."
|
|
sshpass -p "$SERVER_PASS" ssh $SERVER_USER@$SERVER_IP "mkdir -p $DEPLOY_DIR"
|
|
|
|
sshpass -p "$SERVER_PASS" scp -r ../server $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/
|
|
sshpass -p "$SERVER_PASS" scp -r ../projects $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/
|
|
sshpass -p "$SERVER_PASS" scp -r ../client/dist $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/client/
|
|
sshpass -p "$SERVER_PASS" scp ../package.json $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/
|
|
sshpass -p "$SERVER_PASS" scp ../package-lock.json $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/
|
|
sshpass -p "$SERVER_PASS" scp ../.env $SERVER_USER@$SERVER_IP:$DEPLOY_DIR/
|
|
|
|
echo ""
|
|
echo "[5/7] 安装项目依赖..."
|
|
sshpass -p "$SERVER_PASS" ssh $SERVER_USER@$SERVER_IP << EOF
|
|
cd $DEPLOY_DIR
|
|
npm install --production
|
|
EOF
|
|
|
|
echo ""
|
|
echo "[6/7] 配置防火墙..."
|
|
sshpass -p "$SERVER_PASS" ssh $SERVER_USER@$SERVER_IP << 'EOF'
|
|
sudo firewall-cmd --permanent --add-port=8888/tcp
|
|
sudo firewall-cmd --permanent --add-port=9000-9100/tcp
|
|
sudo firewall-cmd --reload
|
|
echo "防火墙配置完成"
|
|
EOF
|
|
|
|
echo ""
|
|
echo "[7/7] 启动服务..."
|
|
sshpass -p "$SERVER_PASS" ssh $SERVER_USER@$SERVER_IP << EOF
|
|
cd $DEPLOY_DIR
|
|
pm2 delete all 2>/dev/null || true
|
|
pm2 start server/index.js --name "auto-deploy-demo"
|
|
pm2 save
|
|
pm2 startup | tail -n 1 | sudo bash || true
|
|
EOF
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " 部署完成!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "访问地址: http://$DOMAIN:8888"
|
|
echo "或者: http://$SERVER_IP:8888"
|
|
echo ""
|
|
echo "默认账号: admin"
|
|
echo "默认密码: admin123"
|
|
echo ""
|
|
echo "常用命令:"
|
|
echo " 查看日志: ssh $SERVER_USER@$SERVER_IP 'pm2 logs auto-deploy-demo'"
|
|
echo " 重启服务: ssh $SERVER_USER@$SERVER_IP 'pm2 restart auto-deploy-demo'"
|
|
echo " 停止服务: ssh $SERVER_USER@$SERVER_IP 'pm2 stop auto-deploy-demo'"
|
|
echo ""
|