「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务
在上文中,我们使用了nginx + php-cgi
来配置thinkphp
的运行环境,项目已成功运行,可以很开心的开发php
项目了。
文章图片
以Nginx、php-cgi为例,为Windows安装系统服务 【「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务】但是也并不是高枕无忧了,此时的项目环境存在着以下几个问题:
- 每次开机,都要把所有的软件环境重新运行一遍,因为软件的运行在关机后就停止了,重新开机的时候并没随操作系统的启动重新启动起来;
- 每次都要把重新这些软件运行一遍,过于繁琐;如果在本地开发,尚且可以忍忍,但是部署到服务器上,还能忍?显然是不能的。
- 项目运行中一旦发生异常,就会导致
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 下载地址 下载WinSW和xxfpm 下载选择的时候根据自己的操作系统,选择对应的安装包即可;对于
xxfpm
,直接下载就好,因为只有windows
版;文章图片
下载 xxfpm 对于
WinSW
,针对不同的.net
版本,提供了不同的安装包,这里选择.NET4
版本的就好;文章图片
下载 WinSW 然后,把下载好的文件解压,以待下一步使用。
WinSW
WinSW
是一个可用于包装和管理作为Windows
服务的自定义进程的工具,可以对windows
中的服务程序进行管理(注册、卸载、启动、停止、重启等操作),其本质上就是一个可执行的二进制文件,运行于windows
系统下。WinSW
对系统服务的管理功能和在windows任务管理器中的操作是一样的;从2.x
开始WinSW
托管于github
平台;在下载完成解压后,其可执行的操作命令如下所示:- install将服务安装到
Windows
服务控制器中; - uninstall从已安装的
Windows
服务控制器中卸载服务; - start启动已经安装的服务;
- stop停止已经启动的服务;
- restart重新启动服务;如果该服务当前未运行,则此命令会将服务启动;
- status检查服务的当前状态;
命令需要在
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.xml
和sample-allOptions.xml
;WinSW xml
的示例文件如下:文章图片
WinSW xml的示例文件 xml 配置条目
- id 用于标识
Windows
内服务的ID
,这个值在系统中安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成。 - name服务的显示名称,可以包含空格和其他字符,不过名称不宜太长。
- description服务的介绍描述,它会将显示在
Windows
服务管理器中。 - executable指定要启动的可执行文件,文件路径可以是绝对路径,也可以只指定可执行文件名称并从中搜索
PATH
- startmode该元素指定
Windows
服务的启动模式,默认值是Automatic
,它可以是以下值之一:Boot,System,Automatic
或Manual
。 - delayedAutoStart如果
Automatic
定义了启动模式,则此布尔选项启用延迟启动模式。请注意,此启动模式将不适用于早于Windows 7
和Windows Server 2008
的旧Windows
版本。 - depend指定此服务依赖的其他服务的
ID
,可以使用多个元素来指定多个依赖项。比如:Eventlog W32Time - logging此项是可选的,可用于设置日志路径, ?比如:
日志路径 - argument指定要传递给可执行文件的参数,
WinSW
会在必要时用引号将每个引号引起来,因此请勿在引号中加引号,以避免产生双引号。
- stopargument/stopexecutable用于指定停止参数和停止时执行的操作。
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.在下载的
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.exe install
net start php-cgi-service.exe
php-cgi-service.exe
不仅成功注册,还能成功运行。对于nginx
,也可作类似的操作,将其安装系统服务,实现开机自启动。完结,老夫虽不正经,但老夫一身的才华!关注我,获取更多编程科技知识。
推荐阅读
- 八、「料理风云」
- 「#1-颜龙武」区块链的价值是什么()
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- thinkphp|thinkphp 3.2 如何调用第三方类库
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 「我的2017」——2017|「我的2017」——2017,大事件盘点
- 「适合发朋友圈的可爱短句文案」
- 「漫威之父」斯坦·李去世,回味老爷子在漫威中客串的各种角色
- 史前艺术的审美类型「清央美术」