因为有项目使用Nginx来做负载均衡,但是Nginx的Windows版本是不提供安装成服务的,所以服务器重启后Nginx并不会伴随启动和恢复。网上查了下,这里记录下解决方法,防止遗忘。

**总之:用 nssm 比 srvany.exe 简便多了。

安装Nginx

下载windows版nginx

图片 1

准备

http://nginx.org
官网下载,例如
http://nginx.org/download/nginx-1.13.0.zip
,解压出来。例如 C:\Prorams\nginx-1.13.0

  第一步:下载Winsw工具,下载地址:

  1. 下载nginx windows版本**: 

将Nginx设置为Windows服务

需要借助”Windows Service
Wrapper”小工具,项目地址: 

下载地址: 

下载该工具后,将其放在
Nginx安装目录下,并重命名为nginx-service.exe,创建配置文件nginx-service.xml(名字要和工具名一样),

创建nginx-service.exe.config(为支持NET 4.0 runtime,默认只支持NET
2.0 runtime)

文件结构如下:

图片 2

nginx-service.xml 内容如下:

 

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

 

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

 

在cmd中运行如下命令安装windows服务

D:\xampp\nginx\nginx-service.exe install

之后就可以在Windows服务面板中启动服务了

图片 3

浏览器中就可以正常访问了

图片 4

 

 

 

 

 

 

 

使用

参照官网文档
http://nginx.org/en/docs/windows.html

cd C:\Prorams\nginx-1.13.0
start nginx

关闭等

cd C:\Prorams\nginx-1.13.0
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

  图片 5

2. 下载 nssm :

系统服务

Ngnix 本身不支持以 Windows 服务启动,官网上
http://nginx.org/en/docs/windows.html
有描述。

Possible future enhancements

  • Running as a service.
  • Using the I/O completion ports as a connection processing method.
  • Using multiple worker threads inside a single worker process.

  第二步:创建配置文件Winsw.xml

3. 安装
Nginx下载解压到一个目录,nssm下载后解压相应版本(32/64)到一个目录。
然后安装服务:
nssm install N1 “D:\N1\nginx.exe” 
即可安装成功最基本的服务,不过启动的是nssm,让后由nssm启动nginx。

准备工具

我们要把 Ngnix 安装为 Windows
服务,使用起来才方便。需要用到一个工具Windows Service Wrapper,先去下载它
https://github.com/kohsuke/winsw
目前的最新版本是
winsw-v2.1.0。其中
WinSW.NET2.exe

WinSW.NET4.exe
可根据 Windows 的 .Net
环境自己选择,另外还有两个配置示例文件可以下载下来参考(sample-minimal.xml

sample-allOptions.xml)。最后下载下来4个文件

  • WinSW.NET2.exe
  • WinSW.NET4.exe
  • sample-minimal.xml
  • sample-allOptions.xml

  xml配置示例:

现在就可以通过控制面板->管理员工具->服务中找到该服务,并启动和停止了。当然,net
start 和 net stop也是可以的。 
但是,当停止服务后,会发现网站仍在正常运转。查看进程会发现还有一个nginx进程存在。原来,nginx启动了两个nginx进程(根据nginx.conf的配置worker_processes 
1;),一个监控进程,一个工作进程。显然,停止的是监控进程,而工作进程没停,结果就是nginx仍在运行。因此彻底关闭nginx就需要别的手段,如任务管理器或者使用taskkill命令: 
taskkill /F /IM nginx.exe > nul  
当然,可以写一个脚本来处理nginx停止的所有操作:
@echo off  
echo Stopping nginx service…  
net stop N1  
echo Kill nginx process…  
taskkill /F /IM nginx.exe > nul  

安装为系统服务

将 WinSW.NET4.exe 放在 nginx-1.13.0 目录中,重命名为
nginx-service.exe,然后创建一个 nginx-service.xml 文件,内容如下:

<configuration>

  <!-- ID of the service. It should be unique accross the Windows system-->
  <id>Nginx</id>
  <!-- Display name of the service -->
  <name>Nginx</name>
  <!-- Service description -->
  <description>Nginx-1.13.0</description>

  <!-- Path to the executable, which should be started -->
  <executable>C:/Programs/nginx-1.13.0/nginx.exe</executable>

  <logpath>C:/Programs/nginx-1.13.0/logs</logpath>

  <workingdirectory>C:/Programs/nginx-1.13.0</workingdirectory>
  <stoparguments>-s stop</stoparguments>

</configuration>
  • 配置文件中目录按自己实际情况修改
  • 网上搜索到的讲 WinSW 安装 ngnix 为 Windows
    服务的方法都过时了(版本比较老),配置文件格式是不一样的,按网上的方法服务安装后启动不起来

配置文件写好保存后,安装服务,需要用管理员身份运行 cmd

cd C:\Prorams\nginx-1.13.0
nginx-service.exe install

C:\Programs\nginx-1.13.0>nginx-service.exe install
2017-04-26 22:27:39,145 INFO – Starting ServiceWrapper in the CLI
mode
2017-04-26 22:27:39,567 INFO – Completed. Exit code is 0

此时去查看 Windows 服务,可以看到服务已经安装成功。
我们的配置文件没有设置服务启动方式,默认就是开机自动启动。

  图片 6

想删除服务:  
sc delete Nginx  

  第三步:DOS窗口中用命令安装、卸载等

使用windows服务是为了:系统重启时,不用用户登录,可以自己在后台启动;在用户退出登陆后,仍然可以运行。这也是我们费时费力安装为windows服务的原因。

  图片 7

  当然Windows中安装成服务的方法还有其他的,只是觉得此种方法比较简单易于使用。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图