当前位置: 首页 > 后端技术 > PHP

《PHP》以nginx和php-cgi为例,安装nginx和php-cgi作为Windows系统服务

时间:2023-03-29 18:24:19 PHP

上面我们使用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。可以使用多个元素来指定多个依赖项。例如:EventlogW32Timelogging是可选的,可以用来设置日志路径,例如:logpath参数指定传递给available要执行文件的参数,WinSW会在必要时用引号将每个引号括起来,所以不要在引号中加上引号,以免出现双引号。stopargument/stopexecutable用于指定停止参数和停止时要执行的操作。注册nginx服务在对WinSW有了足够的了解之后,就可以开始将nginx注册为Windows服务了。详细步骤如下:1.将下载的WinSW.exe复制到Nginx根目录下,重命名为nginx-service.exe;2、在同级目录下新建一个xml文件,命名为nginx-service.xml,在nginx-service.xml文件中输入以下内容并保存;3、在nginx-service.exe所在目录运行cmd,依次输入命令:nginx-service.exeinstallnetstartnginx-service.exe至此,nginx-service.exe不仅注册成功,而且也运行成功。注册php-cgi服务注册php-cgi服务不仅需要WinSW.exe的支持,还需要xxfpm的支持。因此,这里使用之前下载的xxfpm;注册php-cgi服务的详细步骤如下:1、在下载的xxfpm的bin目录下,有三个文件,分别是pthreadGC2.dll、xxfpm和xxfpm.exe,这三个文件需要pthreadGC2.dll、xxfpm.exe;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文件中输入以下内容,保存;3、在php-cgi-service.exe所在目录运行cmd,依次输入命令:php-cgi-service.exeinstallnetstartphp-cgi-service.exe至此,php-cgi-service。exe不仅注册成功,而且运行成功。对于nginx,也可以做类似的操作,将其安装为系统服务,实现开机自启动。完了,老头子虽然不正经,但是老头子却是才华横溢啊!关注我获取更多编程技术知识。