Skip to content

前端自动化部署方案---windows环境

背景

  • 后端技术栈为JAVA,前端为Vue
  • 客户数量超过20000+
  • 系统要求兼容Windows Server 2008以上版本

方案

VBS脚本

  1. 获取并以管理员权限启动
  2. 静默运行BAT脚本

BAT脚本

  1. 主要逻辑处理

PowerShell脚本

  1. 创建配置文件
  2. 读取配置文件
  3. 发送GET、POST请求
  4. 安装IIS插件
  5. 调用IIS接口部署IIS站点

反向代理

  1. 使用URL Rewrite + ARR,适用于独立部署场景
  2. 基于已有的.NET环境,采用.NET程序实现转发功能

开发过程中遇到并解决的问题

1. 以管理员权限启动

batch
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",0)(window.close)&&exit
exit /B
:UACAdmin
cd /d "%~dp0"
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",0)(window.close)&&exit
exit /B
:UACAdmin
cd /d "%~dp0"

2. 静默运行BAT脚本

  • shellexecute("""%~0""","::",,"runas",0) 中,0代表静默运行,1代表非静默运行

3. 短路径问题处理

  • 针对部分系统自动使用短路径,配置到IIS中可能导致404错误,需提前转换成长路径:
batch
set "SHORT_PATH=%~dp0"
for /f "usebackq delims=" %%a in (`powershell -Command "Get-Item '%SHORT_PATH%' | Select-Object -ExpandProperty FullName"`) do (
    set "LONG_PATH=%%a"
)
echo Long Path: %LONG_PATH%
set "SHORT_PATH=%~dp0"
for /f "usebackq delims=" %%a in (`powershell -Command "Get-Item '%SHORT_PATH%' | Select-Object -ExpandProperty FullName"`) do (
    set "LONG_PATH=%%a"
)
echo Long Path: %LONG_PATH%

4. 路径问题

  • 当路径包含空格、中文或括号等特殊字符时,需要用双引号包裹路径,例如:
batch
set "LOG_FILE="%LONG_PATH%front-end\InstallLog.log""
set "LOG_FILE="%LONG_PATH%front-end\InstallLog.log""

5. 编码格式问题

  • 使用CMD命令行执行脚本时,确保脚本文件编码格式为UTF-8,避免乱码:
batch
chcp 65001 > nul 2>&1
chcp 65001 > nul 2>&1

6. IIS获取站点路径丢失中文的问题

  • 使用FOR /F命令获取站点路径时的中文丢失问题,注释掉编码格式切换命令即可:
batch
@REM chcp 65001 > nul 2>&1
@REM chcp 65001 > nul 2>&1

7. 反向代理——Rewrite在Windows Server 2012上的问题:修复安装后的Rewrite可正常使用。

8. PowerShell使用requests模块的问题:在Windows Server 2008上需先将PowerShell升级至3.0以上版本。

总结

  • 需掌握的技术包括VBS脚本、BAT脚本、PowerShell脚本、IIS配置方法、HTTP请求和反向代理原理。
  • 考虑到BAT脚本在不同系统环境下可能存在较大不稳定性,建议优先使用PowerShell脚本,对于Windows Server 2008系统,可先行升级PowerShell至3.0以上版本。

上次更新于: