0、需求背景
每次启动 Nginx 都要去到 Nginx 安装目录下寻找 nginx-server.exe 文件点击,很是麻烦。并且要命令行启动,一般解决方案可能是批处理文件,但是仍要点击。假如确定服务要经常开启的情况下可以设置为服务。
于是思考到可不可以跟其它服务一样能够开机自启?显然是可以的。
把 Nginx 设置为一个 windows 服务便可以解决此问题。
下文环境为Windows11。
1、Nginx 设置为服务
主要分为两大步骤,其一准备好设置为服务的文件,其二安装为服务。
设置为服务后参考目录如下:
其一,文件准备
- 准备nginx-service.exe
nginx 安装下载默认已知。接下来首先选择合适版本下载Windows Service Wrapper工具,该工具可设置nginx为windows服务。
下载后把下载的winsw-x.x.x-bin.exe 文件放在Nginx安装目录(D:\Environment\nginx-1.22.0),修改名称为nginx-service.exe,然后分别创建nginx-service.exe.config,nginx-service.xml文件,把这两个文件也放在Nginx安装目录下。
注意安装目录不要带有空格,比如放在Program Files,可能会报错 - 准备nginx-service.exe.config文件
nginx-service.exe.config内容如下:
<configuration> | |
<startup> | |
<supportedRuntime version="v2.0.50727" /> | |
<supportedRuntime version="v4.0" /> | |
</startup> | |
<runtime> | |
<generatePublisherEvidence enabled="false"/> | |
</runtime> | |
</configuration> |
- 准备nginx-service.xml文件
nginx-service.xml内容如下(根据实际情况对路径进行调整,路径不要含有空格):
<service> | |
<id>nginx</id> | |
<name>Nginx Service</name> | |
<description>High Performance Nginx Service</description> | |
<logpath>D:\Environment\nginx-1.22.0\logs</logpath> | |
<log mode="roll-by-size"> | |
<sizeThreshold>10240</sizeThreshold> | |
<keepFiles>8</keepFiles> | |
</log> | |
<executable>D:\Environment\nginx-1.22.0\nginx.exe</executable> | |
<startarguments>-p D:\Environment\nginx-1.22.0</startarguments> | |
<stopexecutable>D:\Environment\nginx-1.22.0\nginx.exe</stopexecutable> | |
<stoparguments>-p D:\Environment\nginx-1.22.0 -s stop</stoparguments> | |
</service> |
其二,安装 Nginx 服务
(1、安装服务)
进入cmd命令行到nginx目录下输入下行命令安装服务
nginx-service.exe install | |
新电脑可能会遇到此问题,下载并安装即可。未出现忽略即可。
(2、设置开机自启)
然后去服务查看。默认是停止状态。
可点击启动,或者右击打开服务。
3、扩展
- 删除nginx服务
sc delete 服务名 - 可能遇到的其他问题
Niginx Service服务无法启动 如错误1067 进程意外终止
可能是端口监听代理出现冲突 - Nginx-xxx\logs下查看错误日志,然后根据错误日志查找解决方案。
注意:每次修改完nginx.conf文件,需重新启动Niginx Service服务,方可生效。 - 启动 nginx 脚本
@echo off ::set location="D:\Environment\nginx-1.22.0" cd /d %~dp0 start nginx - 关闭 nginx 脚本
@echo off ::set location="D:\Environment\nginx-1.22.0" cd /d %~dp0 nginx.exe -s stop