写在前面
本文给出Windows系统中能在任意路径下通过命令行启动和退出nginx的方法。不想看过程的读者可以直接跳转到结论,一样能解决问题。
正文
过程
很多Windows下的nginx教程都教我们先cd到nginx安装目录(即nginx.exe所在目录),再执行 start nginx 和 nginx -s quit 来分别启动和退出nginx。但实测发现,在非安装目录下,执行这两条命令会失败,即使你已经为nginx.exe配置了环境变量。
本文中,nginx安装目录如下图所示:
注意,除非特别说明,否则后文中nginx的安装目录一律用 D:software ginx 表示。
非安装目录下使用 start nginx 启动nginx的结果如下图所示:
注意,正常(即nginx能启动)情况下,执行 start nginx 后会有一个窗口一闪而过,这是正常的。在非安装目录下,执行 start nginx 后也会有一个窗口一闪而过,但nginx根本没起来(有上图为证),只不过是窗口闪退,我们没办法看清报错信息罢了。
同样,非安装目录下使用 nginx -s -quit 退出nginx也会失败,好在这次直接报错了,如下图:
事实上,nginx内部使用相对路径而非绝对路径,因此,在非安装目录下执行可执行文件 nginx.exe 就会出现找不到安装路径下的文件的情况,上图中划红线部分也证实了这一点。
找到了原因,就可以对症下药了。我们可以使用 - p 参数(使用 nginx -h 可以查看所有参数及含义)为nginx显式指出文件路径。具体地,启动时使用 start nginx "-p D:/software/nginx" ,停止时使用 nginx -p D:/software/nginx -s quit 。
注意:
- 推荐使用Windows PowerShell而非cmd。亲测,cmd下启动、退出nginx后,再次启动,会失败,目前还未搞清原因(这里恳请了解原因的读者不吝赐教),但Windows PowerShell下不会出现该问题。
- 启动命令中, -p D:/software/nginx 必须用英文双引号括起来。
- Windows PowerShell下可直接使用 D:/software/nginx ,当然, D:\software\nginx 或 D:software ginx 也可以。
结论
第一步:将nginx.exe所在目录加入环境变量的Path中,不会操作的读者请自行学习。
第二步:在任意目录下,按如下方式启动或退出nginx:
启动使用
start nginx "-p xxx"
退出使用
nginx -p xxx -s quit
注意:
- xxx 表示 nginx.exe 所在的绝对路径。
- 启动命令中记得加英文双引号。
- 推荐使用 Windows PowerShell 而非 cmd 。
写在后面
在下刚接触nginx,文中错误疏漏之处在所难免,欢迎广大读者批评指正,您的批评是在下前进的不竭动力。