把 Nginx 创建为 Windows 的一个服务

简介: 把 Nginx 创建为 Windows 的一个服务(一个较好的做法) 多亏了一个叫做 "Windows Service Wrapper" 的小项目,我们有了一个办法来恰当地启动和停止 Nginx。 首先从http://download.java.net/maven/2/com/sun/winsw/winsw/ 下载最新的 exe 程序(Misterdai 写本文时最新的是 "winsw

把 Nginx 创建为 Windows 的一个服务(一个较好的做法)
多亏了一个叫做 "Windows Service Wrapper" 的小项目,我们有了一个办法来恰当地启动和停止 Nginx。

首先从http://download.java.net/maven/2/com/sun/winsw/winsw/ 下载最新的 exe 程序(Misterdai 写本文时最新的是 "winsw-1.9-bin.exe")。

或者:http://download.java.net/maven/2/com/sun/winsw/winsw/1.9/winsw-1.9-bin.exe


得到该程序后,将其放在 Nginx 安装目录下,并重命名为 myapp.exe。
然后是告诉 WinSw 我们想要它做什么。这将使用一个 XML 配置文件,我们将在文件中指出 Nginx 需要一个 shutdown 命令。

 (在 Nginx 安装目录下)新建一个名为 myapp.xml 的文件,编辑其内容如下: 

?
1
2
3
4
5
6
7
8
9
10
11
<service>
  < id >nginx< / id >
  <name>nginx< / name>
  <description>nginx< / description>
  <executable>C:\nginx\nginx.exe< / executable>
  <logpath>C:\nginx\< / logpath>
  <logmode>roll< / logmode>
  <depend>< / depend>
  <startargument> - p C:\nginx\< / startargument>
  <stopargument> - 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 的作者当下正在专注于其他更重要的开发。我敢肯定还有其他人有足够的编程知识来贡献这块所需的代码,所以,如果你是这样的一个人,请尽力来帮助大家。

相关文章
|
24天前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
|
14天前
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
|
17天前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
31 2
|
20天前
|
安全 Windows
【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务
【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务
|
11天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
28 0
|
13天前
|
编解码 开发工具 数据安全/隐私保护
如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?
一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。
|
14天前
|
安全 JavaScript 前端开发
Nginx服务扫描漏洞修复
Nginx服务扫描漏洞修复
|
14天前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
37 0
|
14天前
|
网络安全 Windows
windows安装ssh服务
windows安装ssh服务
17 0
|
18天前
|
消息中间件 Kafka 网络安全
【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息
【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息