在Windows Server執行個體上部署PHP應用時,為保障網站效能與安全,可利用IIS的FastCGI模組整合PHP(NTS版本),並為網站配置獨立的應用程式集區與目錄許可權。
方案架構
通過IIS的FastCGI模組與PHP解譯器整合,實現對PHP網頁的解析和服務。外部請求由Elastic Compute Service的安全性群組過濾後,由IIS處理常式映射,將.php請求轉寄給FastCGI進程池中的php-cgi.exe處理,最終將執行結果返回給用戶端。
核心組件說明
使用者的瀏覽器通過公網向ECS執行個體80連接埠發起HTTP請求。
IIS接收到HTTP請求。如果請求的是
.php檔案,IIS的處理常式映射規則會通過FastCGI協議將其轉寄給PHP的CGI執行程式(php-cgi.exe)。FastCGI模組管理一個
php-cgi.exe進程池,接收請求並執行相應的PHP指令碼。PHP解譯器執行商務邏輯,並將產生的HTML內容或其他資料返回給IIS。
IIS將最終的執行結果作為HTTP響應返回給用戶端。
實施步驟
以下步驟以Windows Server 2022為例。
步驟一:安裝IIS及CGI模組
登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。選擇串連方式為終端串連,輸入帳號和密碼,登入圖形化終端頁面。
在工作列的搜尋方塊中輸入伺服器管理員並開啟。
選擇添加角色和功能,在嚮導中單擊下一步直至進入伺服器角色頁面,勾選Web 服務器 (IIS)。
在彈出的對話方塊中,單擊添加功能。然後單擊下一步直至進入角色服務頁面。
在角色服務列表中,展開,勾選CGI。單擊下一步,然後單擊安裝。
等待安裝完成後,單擊關閉。
步驟二:安裝PHP運行環境
下載並安裝PHP需要的Microsoft Visual C++ Redistributable運行庫。
訪問PHP官網的下載頁面。選擇VS17 x64 Non Thread Safe版本的Zip壓縮包進行下載。
IIS的FastCGI採用多進程模型,每個進程獨立運行,不存在多線程共用資源的情況。NTS版本去除了安全執行緒檢查,在IIS環境下效能更高且更穩定。
將下載的壓縮包解壓到路徑簡單且無空格的目錄,例如
C:\php。此路徑將作為PHP的安裝根目錄。
步驟三:配置PHP與IIS整合
通過FastCGI協議調用PHP解譯器,使IIS能夠識別.php檔案請求,並將這些請求交由PHP解譯器處理。
在工作列的搜尋方塊中輸入Internet Information Services並開啟。
在左側串連窗格中,單擊伺服器主機名稱,進入伺服器功能視圖。
雙擊開啟處理常式映射,在右側操作窗格中,單擊添加模組映射。
在彈出的對話方塊中,配置以下參數:
請求路徑:
*.php模組:
FastCgiModule可執行檔:
C:\php\php-cgi.exe在檔案選擇對話方塊中,將檔案類型從
.dll切換為.exe以找到php-cgi.exe。名稱:
PHP via FastCGI
單擊確定。在彈出的確認對話方塊中,單擊是,建立對應的FastCGI應用程式。
步驟四:建立並配置網站
建立一個新的網站,並為其配置獨立的應用程式集區和目錄許可權。
建立目錄並配置許可權
為遵循最小許可權原則,IIS不會自動為新目錄授予許可權。需要手動為
IIS_IUSRS組授予讀取許可權,否則訪問網站時將返回403或500錯誤。在工作列的搜尋方塊中輸入檔案總管並開啟。
建立網站根目錄,例如
C:\myphp。按右鍵網站根目錄,選擇。
在輸入對象名稱來選擇框中,輸入
IIS_IUSRS,單擊檢查名稱並確定。選中新添加的
IIS_IUSRS組,為其授予讀取和執行、列出檔案夾內容和讀取許可權。單擊確定儲存使用權限設定。
修改IIS樣本網站連接埠
建立的網站需要使用80連接埠,而IIS樣本網站(Default Web Site)已佔用該連接埠。
在工作列的搜尋方塊中輸入Internet Information Services並開啟。
在左側串連窗格中,展開伺服器主機名稱,單擊網站。
選中Default Web Site,在右側操作窗格中,單擊綁定。
選中目標連接埠記錄單擊編輯,修改為其他連接埠(如8080),單擊確定,單擊關閉。
添加網站
在左側串連窗格中,按右鍵網站節點,選擇添加網站。
配置網站資訊:
網站名稱:例如
MyPHP。實體路徑:指向網站檔案的根目錄,例如
C:\myphp。連接埠:
80。
單擊確定。
步驟五:配置安全性群組並驗證
通過建立測試網頁,驗證環境是否配置成功。
配置安全性群組規則
為使網站能被公網訪問,需在執行個體的安全性群組中允許存取Web服務連接埠。
前往ECS控制台-執行個體單擊目標執行個體ID,進入執行個體詳情頁。
在執行個體詳情頁,單擊安全性群組頁簽,然後單擊目標安全性群組ID進入其詳情頁。
在入方向規則列表中,單擊添加規則,配置以下參數後儲存。
授權策略:允許
協議:自訂 TCP
訪問來源:
0.0.0.0/0訪問目的(本執行個體):
80/80
建立測試頁面
在網站的根目錄下(例如
C:\myphp),建立一個名為index.php的檔案,並填入以下內容:<?php phpinfo(); ?>訪問測試頁面
開啟瀏覽器,訪問
http://<執行個體公網IP地址>/index.php,如果頁面成功顯示PHP的詳細資料,則表示環境已成功搭建。