TOP

Windows命令行在任意位置启动和退出nginx

写在前面

本文给出Windows系统中能在任意路径下通过命令行启动和退出nginx的方法。不想看过程的读者可以直接跳转到结论,一样能解决问题。

正文

过程

很多Windows下的nginx教程都教我们先cd到nginx安装目录(即nginx.exe所在目录),再执行 start nginx 和 nginx -s quit 来分别启动和退出nginx。但实测发现,在非安装目录下,执行这两条命令会失败,即使你已经为nginx.exe配置了环境变量。

本文中,nginx安装目录如下图所示:

 

注意,除非特别说明,否则后文中nginx的安装目录一律用 D:\software\nginx 表示。

非安装目录下使用 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 。

注意:

  1. 推荐使用Windows PowerShell而非cmd。亲测,cmd下启动、退出nginx后,再次启动,会失败,目前还未搞清原因(这里恳请了解原因的读者不吝赐教),但Windows PowerShell下不会出现该问题。
  2. 启动命令中, -p D:/software/nginx 必须用英文双引号括起来。
  3. Windows PowerShell下可直接使用 D:/software/nginx ,当然, D:\\software\\nginx 或 D:\software\nginx 也可以。

结论

第一步:将nginx.exe所在目录加入环境变量的Path中,不会操作的读者请自行学习。

第二步:在任意目录下,按如下方式启动或退出nginx:

启动使用

start nginx "-p xxx"

 

退出使用

nginx -p xxx -s quit

 

注意:

  1.  xxx 表示 nginx.exe 所在的绝对路径。
  2. 启动命令中记得加英文双引号。
  3. 推荐使用 Windows PowerShell 而非 cmd 。

写在后面

在下刚接触nginx,文中错误疏漏之处在所难免,欢迎广大读者批评指正,您的批评是在下前进的不竭动力。

posted @ 2021-09-26 17:13  同勉共进  阅读(1909)  评论(0编辑  收藏  举报