为Windows安装系统服务,Nginx

在上文中,我们使用了nginx+php-cgi来配置thinkphp的运行环境,项目已成功运行,可以很开心的开发php项目了。nginx、php-cgi服务注册但是也并不是高枕无忧了,此时的项目环境存在着以下几个问题:每次开机,都要把所有的软件环境重新运行一遍,因为软件的运行在关机后就停止了,重新开机的时候并没随操作系统的启动重新启动起来;每次都要把重新这些软件运行一遍,过于繁琐;如果在本地开发,尚且可以忍忍,但是部署到服务器上,还能忍?显然是不能的。项目运行中一旦发生异常,就会导致php-cgi停止运行;这对无论是开发中的,还是上线运行中的项目,都是一个阻碍,必须要克服;对于php.ini修改无法平滑重启,每次修改php配置,都得重启php-cgi;

01解决方案

如果把nginx和php-cgi注册为windows系统服务,设置开机启动;这样nginx和php-cgi便能作为系统服务,持续运行,并且在开机时就能随系统一起启动;然后在windows任务管理器中就能对nginx服务和php-cgi服务进行管理。把nginx和php-cgi注册为windows系统服务需要WinSW和xxfpm的支持;所以,我们首先要来下载这两个程序,下载地址如下:WinSW和xxfpm

02下载WinSW和xxfpm

下载选择的时候根据自己的操作系统,选择对应的安装包即可;对于xxfpm,直接下载就好,因为只有windows版;下载xxfpm对于WinSW,针对不同的.net版本,提供了不同的安装包,这里选择.NET4版本的就好;下载WinSW然后,把下载好的文件解压,以待下一步使用;

03WinSW

WinSW是一个可用于包装和管理作为Windows服务的自定义进程的工具,可以对windows中的服务程序进行管理(注册、卸载、启动、停止、重启等操作),其本质上就是一个可执行的二进制文件,运行于windows系统下。WinSW对系统服务的管理功能和在windows任务管理器中的操作是一样的;从WinSW2.x开始,WinSW托管于github平台;在下载完成解压后,其可执行的操作命令如下所示:install将服务安装到Windows服务控制器中;uninstallWindows服务控制器中卸载服务;start启动已经安装的服务;stop停止已经启动的服务;restart重新启动服务;如果该服务当前未运行,则此命令会将服务启动;status检查服务的当前状态;命令的运行格式命令需要在WinSW.exe所在的目录下才能执行,由于WinSW初始的名称是WinSW.exe,所以要在命令前加上进程名称,比如:安装服务的完整命令就是:winswinstall;(后缀.exe是可以省略的)支持修改名称WinSW.exe支持修改名称,比如在nginx中,其名称可修改为:nginx-service.exe;在php中,名称则可修改为php-cgi-service.exe;xml配置文件WinSW的服务管理的配置功能需要xml文件来完成,每个进程的xml文件的名称需要和WinSW进程的名称一样;如果WinSW.exe修改成了nginx-service.exe,对应的xml文件名称就要修改为nginx-service.xml。WinSW提供了初始的xml文件示例,有mini版和完整版,名称分别是sample-minimal.xml和sample-allOptions.xml;WinSWxml的示例文件如下:WinSWxml的示例文件xml配置条目id用于标识Windows内服务的ID,这个值在系统中安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成。name服务的显示名称,可以包含空格和其他字符,不过名称不宜太长。description服务的介绍描述,它会将显示在Windows服务管理器中。executable指定要启动的可执行文件,文件路径可以是绝对路径,也可以只指定可执行文件名称并从中搜索PATHstartmode该元素指定Windows服务的启动模式,默认值是Automatic,它可以是以下值之一:Boot,System,Automatic或Manual。delayedAutoStart如果Automatic定义了启动模式,则此布尔选项启用延迟启动模式。请注意,此启动模式将不适用于早于Windows7和WindowsServer的旧Windows版本。depend指定此服务依赖的其他服务的ID,可以使用多个元素来指定多个依赖项。比如:dependEventlog/dependdependW32Time/dependlogging此项是可选的,可用于设置日志路径,比如:logpath日志路径/logpathargument指定要传递给可执行文件的参数,Winsw会在必要时用引号将每个引号argument引起来,因此请勿在引号中加引号,以避免产生双引号。stopargument/stopexecutable用于指定停止参数和停止时执行的操作。

04注册nginx服务

在对WinSW有了足够的了解之后,就可以开始着手开始把nginx注册为Windows服务。以下是详细步骤:1.把下载的WinSW.exe复制到Nginx根目录下,并重命名为nginx-service.exe;2.在同级目录下,新建一个xml文件,命名为nginx-service.xml,在nginx-service.xml文件中输入以下内容,并保存;nginx-service.xml文件内容3.在nginx-service.exe所在的目录下运行cmd,依次输入命令:nginx-service.exeinstallnetstartnginx-service.exe至此,nginx-service.exe不仅成功注册,还能成功运行。

05注册php-cgi服务

注册php-cgi服务不仅需要WinSW.exe的支持,还需要xxfpm的支持。因此,之前下载的xxfpm便是在这里使用的;注册php-cgi服务详细步骤如下:1.在下载的xxfpm的bin目录下,有三个文件,分别是pthreadGC2.dll、xxfpm和xxfpm.exe,需要的是pthreadGC2.dll、xxfpm.exe;xxfpm目录2.把pthreadGC2.dll、xxfpm.exe复制到php语言的根目录下,与php-cgi.exe同级;3.把下载的WinSW.exe复制到Nginx根目录下,并重命名为php-cgi-service.exe;4.在同级目录下,新建一个xml文件,命名为php-cgi-service.xml,在php-cgi-service.xml文件中输入以下内容,并保存;php-cgi-service.xml文件内容3.在php-cgi-service.exe所在的目录下运行cmd,依次输入命令:php-cgi-service.exeinstallnetstartphp-cgi-service.exe至此,php-cgi-service.exe不仅成功注册,还能成功运行。完结。老夫虽不正经,但老夫一身的才华¥5深入理解Nginx:模块开发与架构解析(第2版)京东月销量好评率98%无理由退换京东配送¥72.6购买


转载请注明:http://www.aierlanlan.com/rzdk/9001.html

  • 上一篇文章:
  •   
  • 下一篇文章: