Nginx安装为Windows服务

nginx 常用操作命令
 

start nginx
 
tasklist /fi "imagename eq nginx.exe"
 
nginx -s stop	fast shutdown
nginx -s quit	graceful shutdown
nginx -s reload	changing configuration,starting new worker processes with a new configuration,graceful shutdown of old worker processes
nginx -s reopen	re-opening log files

nginx 安装为windows服务
下载Windows Service Wrapper工具,选择合适版本下载,该工具可设置nginx为windows服务。

下载后把下载的winsw-2.1.2-bin.exe 文件放在Nginx安装目录(C:\Program Files\Nginx),并修改名称为nginx-service.exe,然后分别创建nginx-service.exe.config,nginx-service.xml文件,把这两个文件放在Nginx安装目录下。

nginx-service.exe.config内容如下:
 

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
  <runtime>
    <generatePublisherEvidence enabled="false"/> 
  </runtime>
</configuration>

nginx-service.xml内容如下(根据实际情况对路径进行调整):
 

<service>
  <id>nginx</id>
  <name>Nginx Service</name>
  <description>High Performance Nginx Service</description>
  <logpath>C:\Program Files\Nginx\logs</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  <executable>C:\Program Files\Nginx\nginx.exe</executable>
  <startarguments>-p C:\Program Files\Nginx</startarguments>
  <stopexecutable>C:\Program Files\Nginx\nginx.exe</stopexecutable>
  <stoparguments>-p C:\Program Files\Nginx -s stop</stoparguments>
</service>

安装nginx服务 nginx-service.exe install

删除nginx服务 sc delete 服务名
 

卸载nginx服务,在cmd命令窗口下执行:nginx-service.exe uninstall。

一,NSSM

首先介绍一个NSSM这个小工具,将exe做成系统服务,非常方便实用。

官网:NSSM - the Non-Sucking Service Manager

直接下载:nssm-2-24

NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:

  1. 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)

  2. 安装简单,修改方便

  3. 可以重定向输出(并且支持Rotation)

  4. 可以自动守护封装了的服务,程序挂掉了后可以自动重启

  5. 可以自定义环境变量

这里面的每一个功能都非常实用,使用NSSM来封装服务可以大大简化我们的开发流程了。

  • 开发的时候是一个普通程序,降低了开发难度,调试起来非常方便

  • 安装简单,并且可以随时修改服务属性,更新也更加方便

  • 可以利用控制台输出直接实现一个简单的日志系统

  • 不用考虑再加一个服务实现服务守护功能

我觉得它还可以需要增加的一个功能是将输入输出重定向为一个tcp连接,这样可以通过telnet的方式实现程序的交互了,那样就更加好用了。

下面就简单的介绍一下如何使用这个工具。

首先去nssm的官网下载

服务安装:

服务安装可以使用如下命令: nssm install <servicename>

执行此命令后,会出现一个界面,基本上看着就知道怎么用了,大多数情况下,只需要填第一个界面的程序路径就可以了。

其它界面的是高级参数的配置,可以根据需要自行选择。

参数填完后执行"install service"按钮即可将服务安装到系统,可以使用系统的服务管理工具查看了。

当然,如果要自动化安装,可以直接带上程序路径: nssm install <servicename> <program> [<arguments>]

NSSM本身win7及以上的系统基本都是支持的,我测试过win7,2008,2016系统,都是没有问题的,如果安装失败,请首先检查是否装了某国产管家或国产杀毒软件。

安装完成后,服务还没有启动,需要通过下面的服务管理的命令启动服务。

服务管理:

服务管理主要有启动、停止和重启,其命令如下:

  • 启动服务: nssm start <servicename>

  • 停止服务: nssm stop <servicename>

  • 重启服务:    nssm restart <servicename>

当然,也可以使用系统自带的服务管理器操作和使用系统的命令。

修改参数:

NSSM安装的服务修改起来非常方便,命令如下:

nssm edit <servicename>

会自动启动操作界面,直接更改即可。

服务删除:

服务删除可以使用如下命令之一:

  • nssm remove <servicename>

  • nssm remove <servicename> confirm

功能没有大的区别,后面的命令是自动确认的,没有交互界面。

二,将nginx做成windows系统服务

我们很容易会产生这样的一个需求,如果在 Windows 上面有一个程序或者一段脚本,我们需要将其设置为一个可以自启动,断掉会重连的服务。

例如 Nginx 在 windows 上面并没有安装服务,那么我们如何将其作为服务运行呢?

例如 windows 下面的 nginx,我们安装好之后,执行 nginx.exe 这个文件,然后通过 nginx -s ???? 来启停这个服务。

但是这样明显不好,至少挂掉之后就不会再起来了,而且怎么自启动还是个问题。

那么我们很自然会想到将其搞成一个服务。

创建服务

nssm install <Service Name>

然后就会弹出一个交互的对话框用于输入服务的信息。

举个栗子

然后点 Install service,服务就安装成功了。

搞我们的 Nginx

同样,执行安装语句:

nssm install Nginx

第一个 Tab 里面我们输入一下我们需要执行的命令,在这里我们输入 C:\nginx\nginx.exe,其他两项都为空。

另外,我们希望这个服务用 Administrator 来执行,我们选择 Log on 这个 Tab

在这里填入 Administrator 的用户名密码,就可以完成了。

然后点击 Install service,去服务管理那里启动,大功告成,So easy。

当然还有很多配置,需要学习的请直接看官网介绍:NSSM - the Non-Sucking Service Manager

修改服务

如果创建的时候填错了怎么办?简单:

nssm edit Nginx

删除服务

要卸载服务也简单,可以用系统自带的 sc 命令:

sc delete Nginx

也可以用我们的 NSSM:

nssm remove Nginx

 运行效果图

 

1、测试版本

  nginx版本:nginx-1.10.2;windows版本:win10

2、下载winsw。

  当前最新版本为:winsw-2.0.1-bin.exe。下载地址:http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/2.0.1/winsw-2.0.1-bin.exe。

3、将winsw-2.0.1-bin.exe复制到nginx目录下(保证nginx的目录不含空格),并重命名为nginx-service.exe。

4、在nginx目录下新增文件nginx-service.xml。

<?xml version="1.0" encoding="UTF-8" ?>
<service>
    <id>nginx</id>
    <name>nginx</name>
    <description>High Performance Nginx Service</description>
    <logpath>D:\nginx-1.10.2\logs</logpath>
    <log mode="roll-by-size">
        <sizeThreshold>10240</sizeThreshold>
        <keepFiles>8</keepFiles>
    </log>
    <executable>D:\nginx-1.10.2\nginx.exe</executable>
    <startarguments>-p D:\nginx-1.10.2</startarguments>
    <stopexecutable>D:\nginx-1.10.2\nginx.exe</stopexecutable>
    <stoparguments>-p D:\nginx-1.10.2 -s stop</stoparguments>
</service>

5、在nginx目录下新增文件nginx-service.exe.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v2.0.50727" />
        <supportedRuntime version="v4.0" />
    </startup>
    <runtime>
        <generatePublisherEvidence enabled="false" />
    </runtime>
</configuration>

6、文件结构如下:

7、启用windows自带的.Net Framework服务。

8、使用管理员身份运行cmd。

  右键“C:\Windows\System32\cmd.exe”,选择“已管理员身份运行”。

9、运行命令:nginx-service.exe install。

执行完成后可以查看nginx服务

10、启动nginx,访问nginx成功。

11、卸载nginx服务,在cmd命令窗口下执行:nginx-service.exe uninstall。

提示:1、若出现“WMI.WmiException: AccessDenied”错误,请检测cmd命令是否以管理员身份打开的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值