zoukankan      html  css  js  c++  java
  • 详解Windows Service Wrapper(winsw.exe)及应用场景

    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

    软件截图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: ginx-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: ginx-0.9.4 ginx.exe</executable>

    <logpath>F: ginx-0.9.4</logpath>

    <logmode>roll</logmode>

    <depend></depend>

    <startargument>-p F: ginx-0.9.4</startargument>

    <stopargument>-p F: ginx-0.9.4 -s stop</stopargument>

    </service>

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

    F: ginx-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

    截图2

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

    截图3

    软件截图3

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

  • 相关阅读:
    java hashmap 缓存
    android 界面刷新 post send
    android 五种 布局文件
    通过枚举窗口,实现最小化到托盘中程序的窗口显示
    转 String,CString,TCHAR*,char*之间区别和联系
    标准C++ 时间日期函数
    话说程序员的职业生涯
    李开复:创业必备
    职业化的软件工程师
    让高版本ie兼容低版本
  • 原文地址:https://www.cnblogs.com/qianzf/p/6807486.html
Copyright © 2011-2022 走看看