114 lines
3.7 KiB
PowerShell
114 lines
3.7 KiB
PowerShell
$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键退出"
|