Skip to content

Windows10下将Nginx注册为服务

约 911 字大约 3 分钟

NginxWindows

2022-01-22

前言

由于开发需要,我这台小米笔记本的性能和配置已经不够用了,索性上了台式主机。笔记本用来打开 IDEA 用够了,开发会用到的服务都在台式机上跑。

但年关将近,笔记本是可以轻松带回去,台式主机却不好拿,虽然我的主机体积不大,但重量还是不轻,非必要我是不会拎着到处跑。

所以就需要能够远程访问到我这台主机,这样一来主机自动开机、内网穿透就是必须的了。好在内网穿透服务很早就购买了,只是用的比较少,向日葵开机插座也已经下单,万事具备。不过内网穿透的允许映射的端口数量有限,那就只能通过 Nginx 来转发端口了,因此想到了在 Windows 上将 Nginx 注册为服务,并设置开机自启。

1. 下载并安装 Nginx

访问 Nginx 下载 页面,选择 Stable version 标签下的 nginx/Windows-1.20.2 下载完成后得到一个 nginx-1.20.1.zip 的压缩包,解压至合适的目录,这里我解压在了 C:\Config\nginx-1.20.1 目录下,此目录即为 Nginx 的安装目录,此时 Nginx 就已经安装好了。

Nginx 常用命令(cmd/powershell):

  • 启动:start nginx.exe
  • 快速停止:nginx.exe -s stop
  • 正常停止:nginx.exe -s quit
  • 重载配置:nginx.exe -s reload
  • 检查配置文件:nginx.exe -t -c conf/nginx.conf

因为 Nginx 可以被启动多次,因此可能存在多个 Nginx 进程,而 nginx.exe -s stop 只能停止一个 Nginx 进程,因此:

  • 查看有多少 Nginx 在运行:tasklist /fi "imagename eq nginx.exe"
  • 停止多个 Nginx 进程:taskkill /fi "imagename eq nginx.exe" /f 或 taskkill /f /t /im nginx.exe

2. 下载并安装 Windows Service Wrapper

Windows Service Wrapper 是 Github 上一个开源软件,可以将任意可执行文件注册为 Windows 服务,例如:*.bat, *.jar, *.py 等。

下载 页面找到最新版本,根据自己系统是 32 位还是 64 位选择 WinSW-x64.exeWinSW-x86.exe,此程序即为 Windows Service Wrapper。

例如我的 Windows 系统是 64 位,下载 WinSW-x64.exe,下载完成后放入 Nginx 安装目录 C:\Config\nginx-1.20.1 下,重命名为 nginx-service.exe,再创建两个文件:nginx-service.exe.confignginx-service.xml

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
<service>
  <id>nginx</id>
  <name>Nginx Service</name>
  <description>High Performance Nginx Service</description>
  <logpath>C:\Config\nginx-1.20.1\logs</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  <executable>C:\Config\nginx-1.20.1\nginx.exe</executable>
  <startarguments>-p C:\Config\nginx-1.20.1</startarguments>
  <stopexecutable>C:\Config\nginx-1.20.1\nginx.exe</stopexecutable>
  <stoparguments>-p C:\Config\nginx-1.20.1 -s stop</stoparguments>
</service>

注意,文件内容中的 Nginx 目录需要替换为自己的实际目录。

3. 将 Nginx 注册为服务

以管理员权限打开命令行工具,并进入到 Nginx 的安装目录。

  1. 按下键盘上的 windows 键,接着输入 cmd,找到 命令提示符,然后右键单击 以管理员身份运行
  2. 输入 nginx-service.exe install 安装服务;

正常执行完上面两步操作即可注册成功,然后返回桌面右键单击 此电脑,选择 管理。接着在左侧的菜单树选择 服务和应用程序 -> 服务,在右侧的服务列表中找到 Nginx Service,此时可以通过点击服务来启动、停止、重启 Nginx。


补充 Windows Servcie Wrapper的命令格式如下:

  • 安装服务:winsw-wrapper.exe install
  • 卸载服务:winsw-wrapper.exe uninstall
  • 启动服务:winsw-wrapper.exe start
  • 停止服务:winsw-wrapper.exe stop