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更加简单易用,并且功能强大。它的特点如下:
-
支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
-
安装简单,修改方便
-
可以重定向输出(并且支持Rotation)
-
可以自动守护封装了的服务,程序挂掉了后可以自动重启
-
可以自定义环境变量
这里面的每一个功能都非常实用,使用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命令是否以管理员身份打开的。