最近需要部署一个前端项目,用到了nginx。正常情况是:需要使用时nginx服务时,进入到nginx.exe所在目录,然后执行:start nginx.exe,但是线上环境这样搞的话还是不太科学。由于好奇心(懒),想一个nginx服务自动启动。参考了下windows自带的sc命令,发现如果不按照一定的规则编写程序是不能用的,永远都是1053错误。然后切换第二条路:用以前搞过的instsrv和srvany。直接开干。
@echo off
echo nginx services install start
set curPath=%~dp0
set commonHC=%~dp0common\hc.exe
set instsrv=%~dp0common\instsrv.exe
set srvany=%~dp0common\srvany.exe
set NGINX_SERVICE_NAME=LMS_NGINX_SERVER
set nginxPath=%curPath%nginx\nginx.exe
set regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%NGINX_SERVICE_NAME%\Parameters\
@REM echo %instsrv% %srvany% %commonHC%
%instsrv% %NGINX_SERVICE_NAME% %srvany%
reg add %regPath% /v AppDirectory /t REG_SZ /d %curPath%nginx /f
reg add %regPath% /v Application /t REG_SZ /d "%nginxPath%" /f?
reg add %regPath% /v AppParameters /t REG_SZ /f
net start %NGINX_SERVICE_NAME%
echo nginx services install end
@REM pause
?
其中服务相关的代码是。先将srvany?注册成服务,然后添加注册表。
%instsrv% %NGINX_SERVICE_NAME% %srvany%
reg add %regPath% /v AppDirectory /t REG_SZ /d %curPath%nginx /f
reg add %regPath% /v Application /t REG_SZ /d "%nginxPath%" /f?
reg add %regPath% /v AppParameters /t REG_SZ /f
nginx已经启动了