Nginx/Win32是运行在一个控制台程序,而非windows服务方式的。
Nginx/Win32可以使用以下开关来管理它:
1 2 3 4
| Nginx -s stop Nginx -s quit Nginx -s reload Nginx -s reopen
|
使用nssm安装
软件下载:https://nssm.cc/release/nssm-2.24.zip
下载完解压,cmd执行:
1 2 3 4 5 6
| PS C:\Users\test\Downloads\Compressed\nssm-2.24\win64> cmd Microsoft Windows [版本 10.0.18363.1734] (c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\test\Downloads\Compressed\nssm-2.24\win64>nssm install nginx Administrator access is needed to install a service.
|
windows服务管理器停止Nginx服务后,访问浏览器仍然能看到网站。查看进程,你会发现,Nginx的其中一个进程还在运行!nginx进程(根据nginx.conf的配置worker_processes 1;),Fork出来的进程显然没有被停止,结果就是nginx永远关不掉。因此彻底关闭nginx请使用taskkill命令!
那么我们只好做个stop_nginx
脚本来处理nginx停止的所有操作:
1 2 3
| @echo off net stop nginx taskkill /F /IM nginx.exe>nul
|
参考:
将nginx安装为Windows服务
使用Windows Service Wrapper安装
项目地址:https://github.com/kohsuke/winsw
下载后把下载的文件放在 Nginx
安装目录,并修改名称为 nginx-service.exe
,然后分别创建 nginx-service.exe.config
,nginx-service.xml
文件,把这两个文件放在Nginx安装目录下。
nginx-service.exe.config
内容如下:
1 2 3 4 5 6 7 8 9
| <configuration> <startup> <supportedRuntime version="v2.0.50727" /> <supportedRuntime version="v4.0" /> </startup> <runtime> <generatePublisherEvidence enabled="false"/> </runtime> </configuration>
|
nginx-service.xml
内容如下(根据实际情况对路径进行调整):
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <service> <id>nginx-service</id> <name>Nginx Service</name> <description>High Performance Nginx Service</description> <logpath>C:\Program Files\Nginx\logs</logpath> <log mode="roll-by-size"> <sizeThreshold>10240</sizeThreshold> <keepFiles>8</keepFiles> </log> <executable>C:\Program Files\Nginx\nginx.exe</executable> <startarguments>-p C:\Program Files\Nginx</startarguments> <stopexecutable>C:\Program Files\Nginx\nginx.exe</stopexecutable> <stoparguments>-p C:\Program Files\Nginx -s stop</stoparguments> </service>
|
安装nginx
服务 nginx-service.exe install
删除nginx
服务 sc delete nginx-service
参考:
Windows中将nginx添加到服务