详解Windows Service Wrapper(winsw.exe)及应用场景

时间:2022-09-10 08:31:07

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;

详解Windows Service Wrapper(winsw.exe)及应用场景

软件截图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 Service Wrapper(winsw.exe)及应用场景

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

详解Windows Service Wrapper(winsw.exe)及应用场景

软件截图3

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

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

  1. Ngnix服务器详解&lpar;Windows版本&rpar;&lpar;非原创&rpar;

    文章大纲 一.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环境变量配置详解&lpar;Windows&rpar;

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

  7. MySQL 8&period;0&period;20 安装教程图文详解&lpar;windows 64位&rpar;

    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运行原理&plus;游戏辅助编程 游戏外挂编程

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

随机推荐

  1. c 二叉树的使用

    简单的通过一个寻找嫌疑人的小程序 来演示二叉树的使用 #include <stdio.h> #include <stdlib.h> #include <string.h& ...

  2. C&num;学习笔记 -- Attribute

    学习参考: http://www.cnblogs.com/dudu/articles/4449.html http://www.cnblogs.com/anytao/archive/2007/04/1 ...

  3. ThoughtWorks&period;QRCode生成二维码

    首先引用需要的dll,此处使用的是ThoughtWorks.QRCode.dll,网上可以找到对应的,此处也有一份,点击下载 http://files.cnblogs.com/files/ives/T ...

  4. REDIS 在电商中的实际应用场景&lpar;转)

    1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc),Redis的命令都是原子性的,你可以轻松地利用INCR,DECR等 ...

  5. Spring 框架获取 datasource对象的方法

    1,使用org.springframework.jdbc.datasource.DriverManagerDataSource  2.使用org.apache.commons.dbcp.BasicDa ...

  6. CentOS 安装 Chrome

    cd  /etc/yum.repos.d/ vi  google.repo [gogle] name=Google-x86_64 baseurl=http://dl.google.com/linux/ ...

  7. POJ 1568 Find the Winning Move(极大极小搜索)

    题目链接:http://poj.org/problem?id=1568 题意:给出一个4*4的棋盘,x和o两人轮流放.先放够连续四个的赢.给定一个局面,下一个轮到x放.问x是否有必胜策略?若有,输出能 ...

  8. JDBC 常用驱动类及url格式

    1. oracle <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</ ...

  9. cookie模拟

    1        为什么要使用cookie模拟          从日常项目测试过程中的问题说起. 比如要进行论坛中的文件下载功能的测试.我们都知道只有登录用户才能进行下载操作,这样我们的测试过程可能 ...

  10. QR 编码原理(三)

    一.日本汉字(KANJI)是两个字节表示的字符码,编码的方式是将其转换为13字节的二进制码制. 转换步骤为: 1.对于JIS值为8140(hex) 到9FFC(hex)之间字符: a)将待转换的JIS ...