把 Nginx 创建为 Windows 的一个服务(一个较好的做法)
多亏了一个叫做 "Windows Service Wrapper" 的小项目,我们有了一个办法来恰当地启动和停止 Nginx。
然后是告诉 WinSw 我们想要它做什么。这将使用一个 XML 配置文件,我们将在文件中指出 Nginx 需要一个 shutdown 命令。
(在 Nginx 安装目录下)新建一个名为 myapp.xml 的文件,编辑其内容如下:
1
2
3
4
5
6
7
8
9
10
11
|
<
id
>nginx<
/
id
>
nginx<
/
name>
nginx<
/
description>
C:\nginx\nginx.exe<
/
executable>
C:\nginx\<
/
logpath>
roll<
/
logmode>
<
/
depend>
-
p C:\nginx\<
/
startargument>
-
p C:\nginx\
-
s stop<
/
stopargument>
<
/
service>
|
很明显,你应该稍微更改文件,这取决于你自己的文件路径。对于有更多技术需求的朋友,你也可以在该文件中设置 Nginx 依赖的服务。
有一点需要注意的,路径最好不要带空格的,否则会启动失败。
nginx默认是使用80端口的,如果该端口已被别的服务(如iis)占用了,那需要修改conf/nginx.conf文件,把80改为8000或其他的。
最后,我们要安装服务了。只需要简单地执行以下语句,你将在你的服务列表里找到 "Nginx" 服务:
1
2
3
4
5
|
安装服务
c:\nginx\myapp.exe install
卸载服务
c:\nginx\myapp.exe uninstall
|
就这些!
之后,命令行输入,或自行从控制面板找到服务列表。
1
2
|
打开服务列表
services.msc
|
在里面可以找到nginx的服务,设置为自动启动就行了。
如果启动失败了,可以在事件管理器里找到日志(控制面板-管理工具-事件查看器-应用程序)
结束语
根据我的经验,到目前为止这种做法的效果很完美。你得到了 Windows 服务的支持,而且在服务重启时没有遗留孤立的 "nginx.exe"。两全其美。
如果 Nginx 自己可以做到这样的话会更好,但 Nginx 的作者当下正在专注于其他更重要的开发。我敢肯定还有其他人有足够的编程知识来贡献这块所需的代码,所以,如果你是这样的一个人,请尽力来帮助大家。