winsw.exe可以帮助nginx作为windows服务自启动,不需要每次都输入命令,很方便,使用到目前为止这种做法的效果很完美。你得到了 Windows 服务的支持,而且在服务重启时没有遗留孤立的 "nginx.exe"。两全其美。

Nginx启动:

Nginx 是一个 web 服务器。它类似于 Lighttpd,作为轻量级的 web server,可以替代重量级的 Apache/IIS。Nginx 专为性能优化而开发,是一个快速且能经受高负载考验的 web server。它来自于 Linux 世界但同样可以运行在 Windows 上面(由本地语言构建)。唯一的问题就是它不支持 Windows Services。

Nginx 是绿色免安装的。这里我不去介绍它的管理配置,官方已经提供了一个很棒的 wiki,上面有丰富的服务器相关信息(参考文后链接)。可以使用默认的配置,它会使用 Nginx 目录下的 html 文件夹服务于端口 80。

只需简单地执行 nginx.exe 即可启动 Nginx。但你想要停止它的时候问题来了,你需要执行以下命令:

nginx.exe -s stop

其他方法自启动:

虽然这很简单,但是如果它能够像 apache 或 IIS 那样作为一个服务工作的话会更漂亮。那样的话,我们就可以设置机器启动时 Nginx 自动启动,还可以方便地启动、停止或者重启服务,设置恢复选项、依赖的服务,等等。

为什么不使用 instsrv/servany、FireDaemon 或者其他办法呢

已经有介绍如何通过 FireDaemon 使用 Nginx,但它有一个很重要的问题。Nginx 启动以后,它会创建一个次级进程。所以会有两个 nginx.exe 在运行。对于这个官方可能有一个很合理的理由,但你最好到 Nginx 论坛去问为什么:-)

通过 instsrv/srvany(微软官方创建服务的方法) 或者 FireDaemon 的方式(来创建 Nginx 为服务),只是启动进程,当你想要停止它时,将关闭这个进程。但这些方式都无法关闭多余的那个 nginx.exe 进程。所以每次你停止/启动/重启服务都会产生一个多余的 nginx.exe 进程。不怎么好!

启动、停止和重新加载服务:通过cmd以守护进程方式启动nginx.exe:start nginx.exe,停止服务:nginx -s stop,重新加载配置:nginx -s reload;

软件截图1

每次以cmd方式启动Nginx服务不符合实际要求,于是我们想到将其注册为Windows服务,并设置为自动启动模式。这里,我们使用一个不错的小程序:“Windows Service Wrapper”,将nginx.exe注册为Windows服务!

winsw.exe让Nginx作为Windows服务开机自启动:

使用方法:

1、下载最新版的 Windows Service Wrapper 程序,比如我下载的名称是 "winsw-1.9-bin.exe",

然后,把它命名成你想要的名字(比如: "myapp.exe",当然,你也可以不改名)

2、将重命名后的 myapp.exe 复制到 nginx 的安装目录(我这里是 "F:\nginx-0.9.4")

3、在同一个目录下创建一个Windows Service Wrapper的XML配置文件,名称必须与第一步重命名时使用的名称一致(比如我这里是 "myapp.xml", 如果,你没有重命名,则应该是 "winsw-1.9-bin.xml")

文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>

<service>

<id>nginx</id>

<name>nginx</name>

<description>nginx</description>

<executable>F:\nginx-0.9.4\nginx.exe</executable>

<logpath>F:\nginx-0.9.4\</logpath>

<logmode>roll</logmode>

<depend></depend>

<startargument>-p F:\nginx-0.9.4</startargument>

<stopargument>-p F:\nginx-0.9.4 -s stop</stopargument>

</service>

4、命令行下执行以下命令,以便将其安装成Windows服务。

F:\nginx-0.9.4> myapp.exe install

OK,至此,完工,确认一下:我的电脑
右键 -> 管理 -> 服务 -> 是否有了个 nginx 呢?启动起来,在浏览器中 访问 http://localhost
确认一下,再 停止服务,再访问一下 http://localhost 确认一下。

补充:

Windows Servcie Wrapper的命令格式如下:

# 安装服务

CMD:\> myapp.exe install

# 卸载服务

CMD:\> myapp.exe uninstall

# 启动服务

CMD:\> myapp.exe start

# 停止服务

CMD:\> myapp.exe stop

5、在命令行下执行以下命令,以便将其注册成Windows服务:nginx-service.exe install

  ⑤接下来就可以在Windows服务列表看到Nginx服务了,这里我们可以将其设置为自动启动了:

软件截图3

6、总结:在Windows环境中,要对外提供的Windows服务一般都要将其启动类型设置为自动

详解Windows Service Wrapper(winsw.exe)及应用场景的更多相关文章

  1. Ngnix服务器详解(Windows版本)(非原创)

    文章大纲 一.Ngnix简介二.Ngnix安装三.Ngnix之静态资源访问四.Ngnix正向代理与反向代理五.Ngnix之虚拟主机配置六.Ngnix之负载均衡七.Ngnix之访问控制八.Ngnix日志 ...

  2. 使用Windows Service Wrapper快速创建一个Windows Service

    前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...

  3. 使用Windows Service Wrapper快速创建一个Windows Service 如nginx

    前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...

  4. pscp使用详解 Windows与Linux文件互传工具

    pscp使用详解 Windows与Linux文件互传工具 pscp使用方法详解:pscp是putty安装包所带的远程文件传输工具,是一款十分常见windows与linux系统之间文件互传的工具,使用方 ...

  5. 【Android】详解Android Service

    目录结构: contents structure [+] Service简单概述 Service在清单文件中的声明 Service启动服务 Service绑定服务 扩展Binder类 使用Messen ...

  6. JAVA环境变量配置详解(Windows)

    JAVA环境变量配置详解(Windows)   JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解  Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLA ...

  7. MySQL 8.0.20 安装教程图文详解(windows 64位)

    MySQL 8.0.20 安装教程图文详解(windows 64位)  更新时间:2020年05月09日 15:09:04   转载 作者:瘦肉粥不加糖     这篇文章主要介绍了MySQL 8.0. ...

  8. Windows Service Wrapper

    This project creates a wrapper executable that can be used to host any executable as an Windows serv ...

  9. 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

    详解游戏辅助编程 [目录] 1-什么是Windows API 2-Windows进程 3-Windows 的内存的运行原理 4-windows 中句柄的概念 5-Windows的变量类型 6-辅助实现 ...

随机推荐

  1. leetcode100

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  2. 前端-CSS-介绍及三种引入方式

    我们为什么需要CSS? 使用css的目的就是让网页具有美观一致的页面,另外一个最重要的原因是内容与格式分离 在没有CSS之前,我们想要修改HTML元素的样式需要为每个HTML元素单独定义样式属性,当H ...

  3. 5 Python3 函数进阶&迭代器与生成器

    1.函数进阶 1.1.名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的 ...

  4. UI5-文档-4.33-Routing Back and History

    现在我们可以导航到细节页面并显示发票,但是还不能回到概览页面.我们将向细节页面添加一个back按钮,并实现一个函数,再次显示概述页面. Preview A back button is now dis ...

  5. centos升级python2.7

    http://meiyitianabc.blog.163.com/blog/static/10502212720133192489840/

  6. dmidecode详解

    1.DMI简介 DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行. SMBI ...

  7. 练习:自己写一个容器ArrayList集合 一一数组综合练习2

    package cn.bjsxt.collection; /** * 自己实现一个ArrayList */ import java.util.ArrayList; import java.util.L ...

  8. Mysql update 索引

    执行mysql update,或者delete的时候会遇到: You can't specify target table for update in FROM clause 相关的原因自不必说:下面 ...

  9. 大型运输行业实战_day04_1_搭建ssm框架最容易犯的错误

    错误1.MapperScannerConfigurer中应该去扫描包,而不是接口 如果出现上述错误,报错如下,注意我们在看报错日志的时候一点要从 后往前看 错误2.没有配置别名,又要使用别名 命名不规 ...

  10. Go语言中cannot convert adminname (type interface {}) to type *: need type assertion的解决办法

    解决的办法是把string(adminname)替换为adminname.(string).其它类型也是类似.