共计 1821 个字符,预计需要花费 5 分钟才能阅读完成。
前言
在 Windows 下载安装了 Nginx,配置了环境变量全局应用 Nginx。然而 Nginx 在应用时 conf-path 是依据相对路径来找的(能够依据 nginx -V
命令看进去)。这样的话,你进入 cmd 后,要想 启动 Nginx(或者其余管制 Nginx 的命令选项),就必须切换到 Nginx 所在目录,或者在启动时指定 conf-path 的绝对路径,亦或是从新编译 Nginx 来指定 conf-path(Linux 下挺不便,Win 也能够),不然 cmd 会报错 而无奈启动 Nginx。这样应用起来并不难受,毕竟你要打一大串门路字符:(。因为不想重编译,于是想了另一种形式——应用 bat 文件。
留神点:
- 你须要先配置环境变量来全局应用 nginx 这个命令
- nginx 的命令选项中,除了须要用到配置文件的 start stop reload 等管制命令在非装置门路下应用时会报错外(前言讲到了),其余都可间接应用。比方 nginx -v 查看版本
解决方案
创立一个 bat 文件(我的是 nginxd.bat),应用 bat 来运行 nginx 命令。创立了之后,就能够应用如下命令:
`nginxd [-h,help] [-v,version] [start] [stop] [stop -a] [reload] [reopen] [find]`
* 1
具体应用 nginxd -h 查看,当然 nginxd 命令依据 bat 文件名来定的。文件地位随便,然而要能全局应用(即指定环境变量)。代码如下:
`@echo off
if "%1"=="help" (goto help) else (if "%1"=="-h" goto help)
if "%1"=="version" (goto version) else (if "%1"=="-v" goto version)
if "%1"=="start" goto start
if "%1"=="stop" goto stop
if "%1"=="reload" goto reloadmd
if "%1"=="reopen" goto reopen
if "%1"=="find" goto find
goto error
:help
nginx -v
echo Usage: nginxd [-h,help] [-v,version] [start] [stop] [stop -a] [reload] [reopen] [find]
echo=
echo Options:
echo help,-h : this help
echo version,-v : show current nginx version
echo start : start nginx master process
echo stop : stop the newest nginx master process
echo stop -a : stop all nginx master processes
echo reload : reload configuration
echo reopen : reopen nginx
echo find : show the nginx master process list
echo=
exit /B
:version
nginx -v
exit /B
:start
start nginx -p D:Softwarenginx
exit /B
:stop
if "%2"=="-a" (taskkill /F /IM nginx.exe) else (if "%2"=="" (nginx -s stop -p D:Softwarenginx) else goto error)
exit /B
:reload
nginx -s reload -p D:Softwarenginx
exit /B
:find
tasklist /fi "imagename eq nginx.exe"
exit /B
:error
echo nginxd: invalid option: "%1 %2"
echo=
exit /B`
简略解释
这是给小白看的,当然还有更好的实现,我也是刚接触,不足之处还请谅解。另外,以下是我本人的了解,可能有出入,请见谅
- @echo off:此命令分 @ 和 echo off 看。@让跟在其前面的命令的执行过程不打印进去,echo off 则让所有命令的执行过程不打印进去(本人测试,看后果就明确)。
- goto 与
:
: 两个命令配套应用,:
相当于标签,goto 则指定跳到那个标签前面执行。- echo:向命令窗口打印一行指定的字符创,
echo=
打印空的字符串,后果相当于换行。- exit: 该命令是退出程序,并且会敞开命令窗口(这不是我想要的)。指定
/B
则退出程序后不会敞开命窗口。/B 是说退回前一个命令所在窗口。
正文完