关于php:PHP以nginxphpcgi为例把nginxphpcgi安装为Windows系统服务

34次阅读

共计 2925 个字符,预计需要花费 8 分钟才能阅读完成。

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

然而也并不是居安思危了,此时的我的项目环境存在着以下几个 问题

  1. 每次开机,都要把所有的软件环境从新运行一遍,因为软件的运行在关机后就进行了,从新开机的时候并没随操作系统的启动重新启动起来;
  2. 每次都要把从新这些软件运行一遍,过于繁琐;如果在本地开发,尚且能够忍忍,然而部署到服务器上,还能忍?显然是不能的。
  3. 我的项目运行中一旦产生异样,就会导致 php-cgi 进行运行;这对无论是开发中的,还是上线运行中的我的项目,都是一个妨碍,必须要克服;
  4. 对于 php.ini 批改无奈平滑重启,每次批改 php 配置,都得重启php-cgi

解决方案

如果把 nginxphp-cgi 注册为 windows 零碎服务,设置开机启动;这样 nginxphp-cgi便能作为零碎服务,继续运行,并且在开机时就能随零碎一起启动;而后在 windows 工作管理器中就能对 nginx 服务和php-cgi 服务进行治理。

nginxphp-cgi 注册为 windows 零碎服务须要 WinSWxxfpm的反对;所以,咱们 首先 要来下载这两个程序,下载地址如下:

下载 WinSW 和 xxfpm

下载 抉择的时候依据本人的操作系统,抉择对应的安装包即可;对于 xxfpm,间接下载就好,因为只有windows 版;

对于 WinSW,针对不同的.net 版本,提供了不同的安装包,这里抉择 .NET4 版本的就好;

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

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.xmlsample-allOptions.xmlWinSW 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 文件中输出以下内容,并保留;

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

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.exe install
  • net start php-cgi-service.exe

至此,php-cgi-service.exe 不仅胜利注册,还能胜利运行。对于nginx,也可作相似的操作,将其装置零碎服务,实现开机自启动。

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

正文完
 0