「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,也可做相似的操做,將其安裝系統服務,實現開機自啓動。

完結,老夫雖不正經,但老夫一身的才華!關注我,獲取更多編程科技知識。

相關文章
相關標籤/搜索