windows伺服器使用nginx來部署web環境,棄用iis支持php的方法

2020-12-17 陸柏熺

Windows上使用nginx作為web伺服器時,我們的php環境就需要藉助第三方的插件來啟動,在windows伺服器上nginx現在還沒有啟動php的功能,nginx不像iis那樣只要iis和php綁定成功,iis啟動時php也就會跟著啟動,nginx現在支持單獨在windows系統上獨立啟動,但是還不支持啟動php,我們今天的課題就是在Windows系統上獨立啟動php。

nginx

開始之前首先必須要確認:

①php已經正確的安裝,php.ini已經正確配置完成;②nginx已經正確安裝並且nginx.conf正確配置完畢。說明:nginx安裝路徑為D:\nginx,php安裝路徑為D:\php(根據您自己的路徑進入php的安裝目錄),我的php和nginx均安裝在D盤根目錄。

需要的插件有①RunHiddenConsole和②xxfpm這兩個,RunHiddenConsole用來啟動Windows系統下的php,即啟動php的fastcgi.xe程序;xxfpm則用來維持php進程不會自動退出,使php保持在後臺穩定運行。RunHiddenConsole下載地址:

RunHiddenConsole下載

xxfpm下載地址:

xxfpm下載

下載完畢後將這2個插件上傳到伺服器,解壓縮RunHiddenConsole得到RunHiddenConsole.exe文件,將RunHiddenConsole.exe拷貝到nginx安裝目錄D:\nginx文件夾裡面;在nginx的安裝目錄(D:\nginx)下新建名為xxfpm的文件夾,解壓縮xxfpm,將解壓得到xxfpm文件夾裡面的bin和src文件夾這2個文件夾拷貝到D:\nginx\xxfpm文件夾內,xxfpm文件夾內的東西如下圖:

文件結構

編寫啟動php代碼

打開記事本,輸入以下代碼,將其以bat格式保存到nginx的安裝目錄D:\nginx文件夾內,名稱為start_php.bat,注意格式一定是.bat的。

@echo offREM Windows 下無效REM set PHP_FCGI_CHILDREN=2REM 每個進程處理的最大請求數,或設置為 Windows 環境變量set PHP_FCGI_MAX_REQUESTS=1000echo Starting PHP FastCGI……RunHiddenConsole D:/nginx/xxfpm/bin/xxfpm.exe "D:/php/php-cgi.exe -c D:/php/php.ini" -n 2 -i 127.0.0.1 -p 9000exit

上面代碼截圖如下,需要注意最後一行exit前面一行不是兩行代碼,代碼截圖顯示:

代碼截圖

將上面代碼保後截圖:

start_php

到此啟動php的程序安裝就全部結束了,雙擊nginx安裝目錄下我們編寫的start_php.bat即可啟動php,打開任務管理器,可以看到有2個CGI/fastcgi進程。下圖所示的進程你使用右鍵結束的方式是關閉不了的,點其中一個結束進程,你會發現立即又自動除了一個,這樣就可以保證fastcgi在伺服器上穩定運行不會自動退出了。

php進程

fastcgi進程個數修改

這個在前面我們的啟動代碼裡面有REM set PHP_FCGI_CHILDREN=2,其中的數字2是啟動2個php進程的意思,和後面的-n 2 要保持數字一致。只需將這兩處的數字修改為你想要的即可,截圖顯示更明確:

修改cgi進程個數

D:/nginx/xxfpm/bin/xxfpm.exe 這是xxfpm的路徑。D:/php/php-cgi.exe -c D:/php/php.ini這是php的安裝路徑和php.ini的路徑,如果您的路徑不是這樣的記得修改為對應的路徑即可。那個數字9000是監聽php埠,不要做修改。這樣保證了php可以在後臺穩定運行了,有時候需要結束怎麼辦,我們繼續編寫一個結束運行的的代碼。

編寫退出nginx+php代碼

但是這樣關閉不了一直運行也不是絕對的好事,如果想要關閉怎麼辦,請打開記事本輸入以下代碼,將其以bat格式保存到nginx的安裝目錄D:\nginx文件夾內,命名為stop_php+nginx.bat文件,需要關閉php的時候雙擊這個文件即可退出php和nginx了。為了方便,結束php進程時同時把nginx也關閉掉,方便一鍵啟動,代碼如下。

echo Stopping nginx... taskkill /F /IM nginx.exe > nulecho Stopping PHP FastCGI...taskkill /F /IM php-cgi.exe > nultaskkill /F /IM xxfpm.exe > nulexit

將上面的代碼按照前面說的路徑保存後,雙擊此文件即可結束php和nginx進程。完整文件如下圖所示,我們將啟動和結束代碼和放在nginx文件夾內,主要是為了啟動和結束都方便。

啟動結束

結束代碼解釋:這個stop_php+nginx.bat文件裡面的taskkill /F /IM nginx.exe > nul這一行是退出nginx的意思,後面分別是退出fastcgi,關閉php-cgi.exe進程,關閉xxfpm.exe進程,直接複製過去就可以不用做修改,放在nginx安裝目錄下的原因是方便使用,啟動nginx只需要雙擊nginx.exe即可。

到此Windows系統上安裝php+nginx的環境部署和相關配置算是真正的完成了,本文相關軟體和配置文件沒有的話可以問我。使用nginx而不用iis的原因是iis不安全,太容易被掛馬。

相關焦點

  • 新手小白如何部署伺服器,讓你的個人電腦成為網站伺服器
    近期有粉絲問到從伺服器部署到網站上線的細節操作流程要怎麼辦,本文進行相關的說明,由於方法很多,文本著重以小白比較容易入手的方式來進行介紹,同時文末會對如何將自己的電腦變成伺服器進行簡單的說明,便於小白零成本學習。一、環境部署的小知識關於如何選擇及購買伺服器由於我有另外的文章進行了說明,本文不重複介紹。
  • 11 月 Web 伺服器市場:Apache與nginx競爭,Microsoft IIS 觀戰
    其中 nginx 在三項指標中都處於領先地位,但全球前百萬網站、以及活躍網站方面,Apache仍佔據主導地位。Apache、Nginx、Microsoft IIS是web伺服器領域使用最多的軟體,佔據了80%以上的份額。
  • 如何使用windows雲伺服器
    如何使用windows雲伺服器?購買了雲伺服器之後,我們首先需要找到安全設置,重置密碼、設置安全組,以保證後續的伺服器正常穩定使用。windows雲伺服器配置網站1、在計算機運行處,輸入mstsc 打開遠程連接,輸入重置密碼處的用戶名和密碼,IP即公網IP位址,一般雲主機購買後就有公網IP。2、進入雲伺服器之後,準備配置伺服器的IIS,用於搭建web服務、web項目等。選擇管理,選擇添加角色和功能。
  • Nginx---高性能的HTTP和反向代理web伺服器
    #補充說明: #與apache相類,nginx針對不同的作業系統,有不同的事件模型 #A)標準事件模型 #Select、poll屬於標準事件模型,如果當前系統不存在更有效的方法,nginx會選擇select或poll #B)高效事件模型 #Kqueue:使用於FreeBSD 4.1+, OpenBSD 2.9+,
  • Nginx負載均衡使用心得
    Nginx負載均衡使用心得 前一段時間在負責實施一個項目,利用nginx的七層負載均衡的良好性能做調度器,後端兩臺PHP應用伺服器,實現靜動態分離處理,在整個系統環境全部部署完後,把應用程式放上去測試時,發現一個問題,現把問題和解決辦法寫出來,與大家一起分享和討論。
  • nginxWebUI 1.0.5 發布,nginx 可視化網頁配置工具
    部署此項目後, 配置nginx再也不用上網各種搜索, 再也不用手動申請和配置ssl證書, 只需要在本項目中進行增刪改查就可方便的配置nginx。nginx本身功能複雜, 本項目並不能涵蓋nginx所有功能, 但支持配置的功能已經涵蓋90%的nginx使用, 更高級的功能配置可根據需要在最終生成的nginx.conf中進行手動編寫。
  • Web伺服器有哪些類型?
    IIS是Internet Information Server(信息服務)的縮寫,也是微軟主推的web伺服器產品,適用於windows系統,很多著名網站都採用IIS搭建,ASP、.net開發的程序一般也只能在IIS上運行。
  • 如何利用PHP-FPM實現open_basedir繞過
    CGI模式CGI是通用網關接口,HTTP伺服器使用這樣的接口程序來調用外部程序,外部程序可以使用任何計算機語言來編寫,例如C,C++,Perl,Visual Basic,Shell等等,歷史上用來編寫CGI程序使用最廣泛的是Perl語言。
  • java和php在web開發方面對比分析
    java的web開發首先最容易想到的就是jsp(現在已經到jsp2.0),原來的java的web開發都是用servlet來實現的,用servlet來開發需要程式設計師在java的源文件中嵌入大量的html代碼。所以後來就出現了jsp,jsp可以方便的嵌入到html文件當中,其實jsp文件在伺服器上執行的時候首先會被應用伺服器轉換成servlet,然後再編譯執行。
  • Centos上搭建Nginx方法詳解
    在上面這兩種情況下,nginx伺服器的作用都只是作為分發伺服器,真正的內容,我們可以放在其他的伺服器上,這樣來,還能起到一層安全隔壁的作用,nginx作為隔離層。 其次,nginx還能解決跨域的問題。 之前我們搭建網站的時候,把war包放到tomcat下就能運行起來了,為什麼部署上線的時候,又用到了nginx呢?
  • php獲取web伺服器數據的快捷方法:post和get的區別與聯繫
    但是,在人人都離不開網際網路的時代,你知道網際網路是如何通過代碼獲取web伺服器上的數據嗎?下面,就來聊聊網際網路獲取數據的常用方法——get和post方法。這兩種方法都可以獲取web伺服器上的數據。不過,他們既有相同點,也有不同點。下面我們一起來看看這兩種方法的詳細情況吧。
  • WebHook 自動化部署和運維工具 git-webhook
    WebHook 自動化部署和運維工具 git-webhook 一個使用 Python Flask + SQLAchemy + Celery + Redis + React 開發的用於迅速搭建並使用 WebHook 進行自動化部署和運維系統,支持:Github / GitLab / GitOsc。
  • 網站伺服器總是經常出現500報錯,找不到原因?500錯誤解決方法
    一般給站長展現出的問題分為兩種情況,一是伺服器環境或者不支持的組件等原因導致的500錯誤,這種情況下即使建立一個靜態頁面也會出現500錯誤;另一種情況情況是因為伺服器環境不穩定時不時的出現500錯誤,並不是每次必現,難以找到原因。因此相面我就必現的500錯誤和時不時的500錯誤給出解決辦法。
  • 五分鐘9步搞定nginx正向代理配置方法
    nginx在絕大數的場景中我們使用其用於做web中間件或反向代理使用,但是nginx實際上也提供了正向代理的功能。下面我們來進行nginx正向代理配置操作,以便大家能夠掌握nginx正向代理配置方法。nginx.org/download/nginx-1.9.12.tar.gz# tar xf nginx-1.9.12.tar.gz第三步:通過補丁方法把上述下載的正向代理模塊導入到nginx模塊存儲目錄# cd nginx-1.9.12/
  • Nginx 極簡教程(快速入門)
    反向代理(Reverse Proxy)方式是指以代理伺服器來接受 internet 上的連接請求,然後將請求轉發給內部網絡上的伺服器,並將從伺服器上得到的結果返回給 internet 上請求連接的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。
  • PHP 文件包含漏洞姿勢總結
    :需要知道伺服器日誌的存儲路徑,且日誌文件可讀。很多時候,web 伺服器會將請求寫入到日誌文件中,比如說 apache。在用戶發起請求時,會將請求寫入 access.log,當發生錯誤時將錯誤寫入 error.log。默認情況下,日誌保存路徑在 /var/log/apache2/。?file=../../../../../../../../..
  • Nginx主配置文件nginx.conf史上超細中文詳解
    .. 1第2章 nginx配置解釋圖解... 1第3章 Nginx核心配置文件nginx.conf史上最細中文詳解... 23.1 定義Nginx運行的用戶和用戶組... 23.2 nginxworker進程數,即處理請求的進程(熟稱負責接客的服務員)... 23.3 cpu親和力配置,讓不同的進程使用不同的cpu. 2
  • IIS開啟GZIP壓縮效率對比及部署方法
    首頁 > 系統 > 關鍵詞 > IIS最新資訊 > 正文 IIS開啟GZIP壓縮效率對比及部署方法
  • 一次有趣的 Kubernetes 面試:如何在一小時內完成 WordPress 部署!
    CentOS7,nginx 最新版,php 7.x,mysql 不做要求 + wordpress2. 以文件的方式創建並掛載 2G 的 swap 分區請把學習記錄以 URL、截圖等方式保留。最終,我在手機上可以看到 wordpress 站點就好。時間 1 小時以內,方法方式不限。雖然內容看似簡單,比如用 docker-compose 一鍵就能完成部署。
  • 熟練使用各類敏感目錄文件掃描工具
    埠,因為有些web服務並非工作在默認的80或者8080                    上,需要手工指定目標的web服務埠2、-m  指定掃描使用的最大線程,不要太大,實際中15到20就差不多了3、-t  指定請求的超時時間4、--ssl  掃描https站點時記得加上此選項5、 -r  指定網站根目錄,有些站點程序是放在web目錄下的一個子目錄中的