「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务

在上文中,咱们使用了nginx + php-cgi 来配置thinkphp的运行环境,项目已成功运行,能够很开心的开发php项目了。php

以Nginx、php-cgi为例,为Windows安装系统服务

可是也并非高枕无忧了,此时的项目环境存在着如下几个问题nginx

  1. 每次开机,都要把全部的软件环境从新运行一遍,由于软件的运行在关机后就中止了,从新开机的时候并没随操做系统的启动从新启动起来;
  2. 每次都要把从新这些软件运行一遍,过于繁琐;若是在本地开发,尚且能够忍忍,可是部署到服务器上,还能忍?显然是不能的。
  3. 项目运行中一旦发生异常,就会致使php-cgi中止运行;这对不管是开发中的,仍是上线运行中的项目,都是一个阻碍,必需要克服;
  4. 对于php.ini修改没法平滑重启,每次修改php配置,都得重启php-cgi

解决方案

若是把nginxphp-cgi注册为windows系统服务,设置开机启动;这样nginxphp-cgi便能做为系统服务,持续运行,而且在开机时就能随系统一块儿启动;而后在windows任务管理器中就能对nginx 服务和php-cgi服务进行管理。git

nginxphp-cgi注册为windows系统服务须要WinSWxxfpm的支持;因此,咱们首先要来下载这两个程序,下载地址以下:github

WinSW和xxfpm 下载地址

下载WinSW和xxfpm

下载选择的时候根据本身的操做系统,选择对应的安装包便可;对于xxfpm,直接下载就好,由于只有windows版;thinkphp

下载 xxfpm

对于WinSW,针对不一样的.net版本,提供了不一样的安装包,这里选择.NET4版本的就好;编程

下载 WinSW

而后,把下载好的文件解压,以待下一步使用。windows

WinSW

WinSW是一个可用于包装和管理做为Windows服务的自定义进程的工具,能够对windows中的服务程序进行管理(注册、卸载、启动、中止、重启等操做),其本质上就是一个可执行的二进制文件,运行于windows系统下。服务器

WinSW对系统服务的管理功能和在windows任务管理器中的操做是同样的;从2.x开始WinSW 托管于github平台;在下载完成解压后,其可执行的操做命令以下所示:工具

  • install将服务安装到Windows服务控制器中;
  • uninstall从已安装的Windows服务控制器中卸载服务;
  • start启动已经安装的服务;
  • stop中止已经启动的服务;
  • restart从新启动服务;若是该服务当前未运行,则此命令会将服务启动;
  • status检查服务的当前状态;

命令的运行格式spa

命令须要在WinSW.exe 所在的目录下才能执行,因为WinSW初始的名称是WinSW.exe,因此要在命令前加上进程名称,好比:安装服务的完整命令就是:winsw install;(后缀.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.xmlsample-allOptions.xmlWinSW xml的示例文件以下:

WinSW xml的示例文件

xml 配置条目

  • id 用于标识Windows内服务的ID,这个值在系统中安装的全部服务中必须是惟一的,而且应彻底由字母数字字符组成。
  • name服务的显示名称,能够包含空格和其余字符,不过名称不宜太长。
  • description服务的介绍描述,它会将显示在Windows服务管理器中。
  • executable指定要启动的可执行文件,文件路径能够是绝对路径,也能够只指定可执行文件名称并从中搜索PATH
  • startmode该元素指定Windows服务的启动模式,默认值是Automatic,它能够是如下值之一:Boot,System,AutomaticManual
  • delayedAutoStart若是Automatic定义了启动模式,则此布尔选项启用延迟启动模式。请注意,此启动模式将不适用于早于Windows 7Windows Server 2008的旧Windows版本。
  • depend指定此服务依赖的其余服务的ID,可使用多个元素来指定多个依赖项。好比:<depend>Eventlog</depend><depend>W32Time</depend>
  • logging此项是可选的,可用于设置日志路径, ​好比:<logpath>日志路径</logpath>
  • argument指定要传递给可执行文件的参数,WinSW会在必要时用引号将每一个引号<argument>引发来,所以请勿在引号中加引号,以免产生双引号。
  • stopargument/stopexecutable用于指定中止参数和中止时执行的操做。

注册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.exe install
  • net start nginx-service.exe

至此,nginx-service.exe 不只成功注册,还能成功运行。

注册php-cgi服务

注册php-cgi服务不只须要WinSW.exe的支持,还须要xxfpm的支持。所以,以前下载的xxfpm即是在这里使用的;注册php-cgi服务详细步骤以下:

1.在下载的xxfpmbin目录下,有三个文件,分别是pthreadGC2.dll、xxfpmxxfpm.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.exe install
  • net start php-cgi-service.exe

至此,php-cgi-service.exe 不只成功注册,还能成功运行。对于nginx,也可做相似的操做,将其安装系统服务,实现开机自启动。

完结,老夫虽不正经,但老夫一身的才华!关注我,获取更多编程科技知识。

相关文章
相关标签/搜索