上面我们使用nginx+php-cgi配置thinkphp的运行环境,项目已经完成成功运行。可以愉快的开发php项目了。然而,高枕无忧并不容易。此时项目环境存在以下问题:每次开机都要重新运行所有的软件环境,因为关机后软件运行停止,重启时不重启。它不会随着操作系统的启动而重新启动;每次都重新运行这些软件太麻烦了;如果是在本地开发,还可以忍,但是如果部署在服务器上,就不能忍了吗?很明显不是。一旦项目运行出现异常,将导致php-cgi停止运行;这对在建项目和上线运营都是一个障碍,必须克服;对于php.ini的修改不能顺利重启,每次修改php配置,都要重启php-cgi;解决方法是将nginx和php-cgi注册为windows系统服务,并设置为开机启动;这样nginx和php-cgi就可以作为系统服务继续运行,开机时可以和系统一起启动;然后就可以在windows任务管理器中管理nginx服务和php-cgi服务了。将nginx和php-cgi注册为windows系统服务需要WinSW和xxfpm的支持;因此,我们首先需要下载这两个程序。下载地址如下:选择下载时根据自己的操作系统下载WinSW和xxfpm。安装包就够了;对于xxfpm,直接下载即可,因为只有windows版本;对于WinSW,不同的.net版本提供了不同的安装包,这里选择.NET4版本即可;然后,下载该文件解压以备下一步使用。WinSWWinSW是一个可用于将自定义进程打包和管理为Windows服务的工具。它可以管理Windows中的服务程序(注册、卸载、启动、停止、重启等),本质上是一个可执行的二进制文件,运行在windows系统下。WinSW对系统服务的管理功能与windows任务管理器中的操作相同;从2.x开始,WinSW托管在github平台上;下载完成并解压后,可执行的操作命令如下:installinstalltheserviceInstallintotheWindowsServiceController;uninstall从已安装的Windows服务控制器中卸载服务;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文件示例,有迷你版和完整版,名称分别为sample-minimal.xml和sample-allOptions.xml;WinSWxml示例文件如下:xml配置项id用于标识服务在Windows中的ID,该值在系统安装的所有服务中必须是唯一的,且应全部由字母数字字符组成。name服务的显示名称,可以包含空格等字符,但名称不能太长。description服务的介绍描述,会显示在Windows服务管理器中。executable指定要启动的可执行文件。文件路径可以是绝对路径,也可以只指定可执行文件的名称并从中搜索。PATHstartmode此元素指定Windows服务的启动模式。默认值为Automatic,可以是以下值之一:Boot、System、Automatic或Manual。delayedAutoStart如果定义了自动,则此布尔选项启用延迟启动模式。请注意,此启动模式不适用于Windows7和WindowsServer2008之前的旧Windows版本。depend指定此服务所依赖的其他服务的ID。可以使用多个元素来指定多个依赖项。例如:
