说明

  • 适用于windows开发环境下,启动/重新加载nginx使用
  • windows环境下,多次执行nginx.bat会启动多个,很容造成混乱
  • 将脚本添加到系统环境变量中
  • windows10一般按WinKey键(开始菜单键), 输入脚本名称即可执行

nginx启动脚本(Windows)

  • 如果nginx未启动则启动
  • 如果nginx已启动则重新加载配置
  • 如果出现校验异常(nginx路径不对/配置文件错误),会终止执行并提示
@echo off

:: 设置nginx目录路径, 目录目录目录
:: 注意 不带路径最后的 \
:: set NGINX_BIN_DIR=D:\programFiles\nginx-1.14.0
set NGINX_BIN_DIR=D:\programFiles\nginx-1.14.0


:: nginx -t 结果输出的临时文件
set nginxConfigTestResutFileName=4f86beed99ac_testNginxConfigResult.txt

:: nginx的配置文件
set NGINX_CONFIG_FILE_PATH=%NGINX_BIN_DIR%\conf\nginx.conf
:: nginx的配置文件备份
set NGINX_CONFIG_FILE_PATH_BAK=%NGINX_BIN_DIR%\conf\nginx.conf.bak

:: nginx启动文件
set NGINX_BIN_PATH=%NGINX_BIN_DIR%\nginx.exe
set TEST_RESULT_FILE=%NGINX_BIN_DIR%\%nginxConfigTestResutFileName%

if /i "%NGINX_BIN_DIR%"=="" (
    echo 【错误】NGINX_BIN_DIR 没有配置
    pause 
    exit
)
if not exist %NGINX_BIN_DIR% (
    echo 【错误】%NGINX_BIN_DIR% 不存在
    pause 
    exit
)
if not exist %NGINX_BIN_PATH% (
    echo 【错误】%NGINX_BIN_PATH% 不存在
    pause 
    exit
)
if not exist %NGINX_CONFIG_FILE_PATH% (
    echo 【错误】%NGINX_CONFIG_FILE_PATH% 不存在
    pause 
    exit
)

cd /d %NGINX_BIN_DIR%

## 备份保平安
copy %NGINX_CONFIG_FILE_PATH%  %NGINX_CONFIG_FILE_PATH_BAK% /y

:: nginx -t 输出为stderr 先输出到临时文件
%NGINX_BIN_PATH% -t -c %NGINX_CONFIG_FILE_PATH% > %TEST_RESULT_FILE% 2>&1

:: 校验测试结果,如有failed即为失败
set testSuccess=true
for /f "delims=" %%i in (%TEST_RESULT_FILE%) do (
    echo %%i
    echo %%i|find /i "failed">nul 2>nul && set testSuccess=false
)

del /f /s /q %TEST_RESULT_FILE% > nul

if /i "%testSuccess%"=="false" (
    echo 【错误】请检查配置文件: %NGINX_CONFIG_FILE_PATH%
    pause
    exit
)

:: 判断运行情况
set running=false
for /f "delims=" %%i in ( 'tasklist /fi "imagename eq nginx.exe" ^| find /i "nginx"') do (
    set running=true
)

if /i "%running%"=="true" (
    %NGINX_BIN_PATH% -s reload
) else (
    start %NGINX_BIN_PATH%
)
文档更新时间: 2020-05-04 22:36   作者:sapluk