auto-deploy-demo/deploy/deploy.ps1

114 lines
3.7 KiB
PowerShell
Raw Normal View History

2026-02-23 06:31:59 +00:00
$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"
Write-Host "=========================================="
Write-Host " 自动部署脚本 - 快速Demo演示系统"
Write-Host "=========================================="
Write-Host ""
Write-Host "[提示] 请确保已安装OpenSSH客户端"
Write-Host "Windows 10/11 可在 '设置 > 应用 > 可选功能' 中安装"
Write-Host ""
Write-Host "即将开始部署,请准备好输入服务器密码: $SERVER_PASS"
Write-Host ""
Read-Host "按Enter键继续..."
$projectRoot = Split-Path -Parent $PSScriptRoot
Set-Location $projectRoot
Write-Host ""
Write-Host "[1/8] 测试SSH连接..."
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "$SERVER_USER@$SERVER_IP" "echo 'SSH连接成功'"
if ($LASTEXITCODE -ne 0) {
Write-Host "[错误] 无法连接到服务器" -ForegroundColor Red
Read-Host "按Enter键退出"
exit 1
}
Write-Host ""
Write-Host "[2/8] 安装Node.js环境..."
ssh "$SERVER_USER@$SERVER_IP" @"
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)
"@
Write-Host ""
Write-Host "[3/8] 安装PM2进程管理器..."
ssh "$SERVER_USER@$SERVER_IP" @"
if ! command -v pm2 &> /dev/null; then
sudo npm install -g pm2
fi
echo 'PM2版本:' `$(pm2 -v)
"@
Write-Host ""
Write-Host "[4/8] 创建项目目录..."
ssh "$SERVER_USER@$SERVER_IP" "mkdir -p $DEPLOY_DIR"
Write-Host ""
Write-Host "[5/8] 上传项目文件..."
Write-Host "上传server目录..."
scp -r "$projectRoot\server" "$SERVER_USER@$SERVER_IP`:$DEPLOY_DIR/"
Write-Host "上传projects目录..."
scp -r "$projectRoot\projects" "$SERVER_USER@$SERVER_IP`:$DEPLOY_DIR/"
Write-Host "上传client/dist目录..."
ssh "$SERVER_USER@$SERVER_IP" "mkdir -p $DEPLOY_DIR/client"
scp -r "$projectRoot\client\dist\*" "$SERVER_USER@$SERVER_IP`:$DEPLOY_DIR/client/dist/"
Write-Host "上传配置文件..."
scp "$projectRoot\package.json" "$SERVER_USER@$SERVER_IP`:$DEPLOY_DIR/"
scp "$projectRoot\package-lock.json" "$SERVER_USER@$SERVER_IP`:$DEPLOY_DIR/"
scp "$projectRoot\.env" "$SERVER_USER@$SERVER_IP`:$DEPLOY_DIR/"
Write-Host ""
Write-Host "[6/8] 安装项目依赖..."
ssh "$SERVER_USER@$SERVER_IP" "cd $DEPLOY_DIR && npm install --production"
Write-Host ""
Write-Host "[7/8] 配置防火墙..."
ssh "$SERVER_USER@$SERVER_IP" @"
sudo firewall-cmd --permanent --add-port=8888/tcp
sudo firewall-cmd --permanent --add-port=9000-9100/tcp
sudo firewall-cmd --reload
echo '防火墙配置完成'
"@
Write-Host ""
Write-Host "[8/8] 启动服务..."
ssh "$SERVER_USER@$SERVER_IP" @"
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 2>/dev/null || true
echo '服务启动完成'
"@
Write-Host ""
Write-Host "=========================================="
Write-Host " 部署完成!"
Write-Host "=========================================="
Write-Host ""
Write-Host "访问地址: http://$DOMAIN`:8888" -ForegroundColor Green
Write-Host "或者: http://$SERVER_IP`:8888" -ForegroundColor Green
Write-Host ""
Write-Host "默认账号: admin"
Write-Host "默认密码: admin123"
Write-Host ""
Write-Host "常用命令:"
Write-Host " 查看日志: ssh $SERVER_USER@$SERVER_IP 'pm2 logs auto-deploy-demo'"
Write-Host " 重启服务: ssh $SERVER_USER@$SERVER_IP 'pm2 restart auto-deploy-demo'"
Write-Host " 停止服务: ssh $SERVER_USER@$SERVER_IP 'pm2 stop auto-deploy-demo'"
Write-Host ""
Read-Host "按Enter键退出"