IIS+PHP安裝與配置

IIS安裝

IIS是Internet Information Services的縮寫,意為互聯(lián)網(wǎng)信息服務(wù),是由微軟公司提供的基于運行Microsoft Windows的互聯(lián)網(wǎng)基本服務(wù)。IIS是一種Web(網(wǎng)頁)服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器,分別用于網(wǎng)頁瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。

接下來介紹如何在Win10下安裝IIS服務(wù)。打開控制面板,選擇程序-程序和功能,選擇左邊的“啟用或關(guān)閉Windows功能”,勾選Internet Information Service的內(nèi)容,其中Web管理工具和萬維網(wǎng)服務(wù)必須勾選,且需要勾選萬維網(wǎng)服務(wù)-應(yīng)用程序開發(fā)功能中的CGI,IASAPI項目。

值得注意的是,默認選擇Web管理工具和萬維網(wǎng)服務(wù)時,系統(tǒng)不會選擇IIS管理控制臺,這會影響到后面對IIS的配置,需要手動勾選。需保證萬維網(wǎng)服務(wù)中“安全性-請求篩選”,“常見HTTP功能”中除了“重定向”和“WebDAV”發(fā)布之外的內(nèi)容以及“應(yīng)用程序開發(fā)功能”中的CGI和ISAPI擴展,其他功能可以按需要添加。

除此之外,要確認.Net Framework 3.5已經(jīng)成功安裝,否則IIS無法正常工作。確定后等待安裝完成。

打開IIS有兩種方法:一是直接使用Cortana搜索管理工具,打開選擇Internet Information Services(IIS)管理器,或者直接搜索IIS;二是用組合鍵win+R打開運行,輸入inetmgr打開。

IIS配置

IIS是集成于Windows操作系統(tǒng)中的web服務(wù)器。Win10下IIS的配置主要可以分為以下三步:

1.? 設(shè)置站點物理路徑

IIS 的作用是發(fā)布網(wǎng)站,首先要將虛擬的網(wǎng)絡(luò)空間映射到物理目錄,也可用添加虛擬目錄,如下圖所示在 IIS 中選擇默認網(wǎng)站,右鍵高級設(shè)置可修改站點物理路徑。如下圖:


2.? 添加虛擬目錄

虛擬目錄就是站點物理路徑下的一個文件夾,同一站點可以創(chuàng)建多個虛擬目錄,分別存放不同內(nèi)容的文件。虛擬目錄的物理目錄不一定要在站點的物理路徑下,這就是虛擬目錄達到的效果。

IIS中選擇默認網(wǎng)站,右鍵添加虛擬目錄。如下圖所示:


別名是虛擬目錄在IIS中站點的物理路徑下顯示的名稱,可以與物理路徑的名稱不同,別名的功能更有利于IIS站點下目錄的管理。

3. 測試IIS的html文件發(fā)布與虛擬目錄

在物理路徑的文件夾內(nèi)新建test.html,寫入內(nèi)容并保存:

`<html>

???DOM Tutorial?

Hello world!

</html>`

此時在網(wǎng)頁中輸入127.0.0.1/test/test.html,會提示錯誤:HTTP 錯誤 401.3 – Unauthorized。

錯誤的原因是test文件夾的權(quán)限沒有開放。找到目錄,右鍵->安全->添加->查找 :找到everyone ,然后設(shè)置其權(quán)限,完全開放,相當于Linux設(shè)置權(quán)限為777。

其實不一定要選擇所有人的權(quán)限,如果因為安全的需要,可以選擇IUSR用戶組,這樣可以保證網(wǎng)頁能夠正常訪問,而不會開放過多權(quán)限給其他人。

此時再輸入127.0.0.1/test/test.html,結(jié)果如下圖,測試IIS的html文件發(fā)布與虛擬目錄成功。

PHP 安裝與配置

PHP 是一種創(chuàng)建動態(tài)交互性站點的強有力的服務(wù)器端腳本語言。PHP在Apache服務(wù)器上簡便易用,開發(fā)效率非常高,但是在IIS服務(wù)器上則需要進行一定的安裝和配置。

1. ISAPI和FastCGI

在WindowsIIS6.0下配置PHP,通常有CGI、ISAPI和FastCGI三種配置方式,這三種方式均可以實現(xiàn)IIS對PHP的支持,但這三種方式對應(yīng)于不同的PHP版本,在性能上也存在差異。

CGI即通用網(wǎng)關(guān)接口(Common Gateway

Interface),它是一段程序,運行在服務(wù)器上,提供同客戶端HTML頁面的交互,通俗的講CGI就像是一座橋,把網(wǎng)頁和WEB服務(wù)器中的執(zhí)行程序連接起來,它把HTML接收的指令傳遞給服務(wù)器的執(zhí)行程序,再把服務(wù)器執(zhí)行程序的結(jié)果返還給HTML頁。

CGI程序一般是個可執(zhí)行程序。編譯好的CGI程序一般要集中放在一個目錄下。具體存放的位置隨操作系統(tǒng)的不同而不同。CGI程序的執(zhí)行一般有兩種調(diào)用方式:第一種是通過URL直接調(diào)用,如:“http://202.114.2.182/cgi-win/cgi.exe”,在瀏覽器的URL欄里直接寫入上述描述就可以調(diào)用該程序;另一種方式,也是主要的方式,是通過交互式主頁里的FORM欄調(diào)用,通常都是用戶在填完一張輸入信息Form后按確認按鈕啟動CGI程序。

CGI工作的主要流程是:1.一個用戶請求激活一個CGI應(yīng)用程序;2.CGI應(yīng)用程序?qū)⒔换ブ黜摾锏挠脩糨斎胄畔⑻崛〕鰜恚?.將用戶輸入的信息傳給服務(wù)器主機應(yīng)用程序(如數(shù)據(jù)庫查詢);4.將服務(wù)器處理結(jié)果通過HTML文件返回給用戶;5.CGI進程結(jié)束。

CGI的跨平臺性能極佳,幾乎可以在任何操作系統(tǒng)上實現(xiàn),如DOS、WINDOWS、UNIX、OS/2、Macintosh等。實現(xiàn)CGI的編程語言也有很多選擇。CGI的應(yīng)用程序一般都是一個獨立的可執(zhí)行程序,和WWW服務(wù)器各自占據(jù)著不同的進程,而且一般一個CGI程序只能處理一個用戶請求。這樣,每有一個用戶請求,都會激活一個CGI進程,當用戶請求數(shù)量非常多時,會大量擠占系統(tǒng)的資源如內(nèi)存,CPU時間等,造成效能低下。

FastCGI像是一個常駐(long-live)型的CGI,它可以一直執(zhí)行著,只要激活后,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute模式)。它還支持分布式的運算,即FastCGI程序可以在網(wǎng)站服務(wù)器以外的主機上執(zhí)行并且接受來自其它網(wǎng)站服務(wù)器來的請求。

FastCGI是語言無關(guān)的、可伸縮架構(gòu)的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內(nèi)存中并因此獲得較高的性能。眾所周知,CGI解釋器的反復(fù)加載是CGI性能低下的主要原因,如果CGI解釋器保持在內(nèi)存中并接受FastCGI進程管理器調(diào)度,則可以提供良好的性能、伸縮性、Fail-Over特性等等。

ISAPI即Internet Server

Application Program Interface,是微軟提供的一套面向Internet服務(wù)的API接口,它能實現(xiàn)CGI能提供的全部功能,并在此基礎(chǔ)上進行了擴展,如提供了過濾器應(yīng)用程序接口。ISAPI服務(wù)器擴展是可以被HTTP服務(wù)器加載和調(diào)用的DLL。Internet服務(wù)器擴展也稱為Internet服務(wù)器應(yīng)用程序(ISA),用于增強符合Internet服務(wù)器API(ISAPI)的服務(wù)器的功能。ISA通過瀏覽器應(yīng)用程序調(diào)用,并且將相似的功能提供給通用網(wǎng)關(guān)接口(CGI)應(yīng)用程序。

ISAPI的工作原理和CGI大體上是相同的,都是通過交互式主頁取得用戶輸入信息,然后交服務(wù)器后臺處理。但是二者在實現(xiàn)機制上大相庭徑。ISAPI與CGI最大的區(qū)別在于:不同于CGI,在ISAPI下建立的應(yīng)用程序是以動態(tài)連接庫的形式存在;而CGI的應(yīng)用程序一般都是可執(zhí)行程序。

ISAPI應(yīng)用的工作流程與CGI有一些不同。ISAPI應(yīng)用的DLL不僅可以像CGI程序一樣被用戶請求激活,還可以被系統(tǒng)預(yù)先激活來監(jiān)視用戶輸入;對于被用戶激活的DLL,在處理完一個用戶請求后不會馬上消失,而是繼續(xù)駐留在內(nèi)存中等待處理別的用戶輸入,直到過了一段時間后一直沒有用戶輸入。

一個ISAPI的DLL,可以在被用戶請求激活后長駐內(nèi)存,等待用戶的另一個請求,還可以在一個DLL里設(shè)置多個用戶請求處理函數(shù),此外,ISAPI的DLL應(yīng)用程序和WWW服務(wù)器處于同一個進程中,效率要顯著高于CGI。不過ISAPI的平臺兼容性較差,目前只能用于微軟自己的Windows95和NT操作系統(tǒng)上,服務(wù)器平臺也僅限于IIS(Internet Information Server)和MSpersonalwebserver以及Workstation上的peer webserver。

以ISAPI模式運行PHP的,這種方式最大的缺點就是穩(wěn)定性不好,當PHP出錯的時候,Apache進程也死掉。

FastCGI模式運行PHP的優(yōu)點很多,首先就是PHP出錯的時候不會搞垮Apache,只是PHP自己的進程當?shù)簦ǖ獸astCGI會立即重新啟動一個新PHP進程來代替當?shù)舻倪M程);其次FastCGI模式運行PHP比ISAPI模式性能更好;最后,就是可以同時運行PHP5和PHP4。FastCGI模式也有一些缺點,用FastCGI模式更適合生產(chǎn)環(huán)境的服務(wù)器,但對于開發(fā)用機器來說就不太合適。因為當使用Zend

Studio調(diào)試程序時,由于FastCGI會認為PHP進程超時,從而在頁面返回500錯誤。

2. PHP安裝與配置

PHP是基于Linux/Unix系統(tǒng)的一款編程語言,最初的版本不支持windows。從2000年10月20日發(fā)布的第一個Windows版的PHP3.0.17開始,PHP都具有線程安全,這是因為Linux/Unix系統(tǒng)是采用多進程的工作方式,而Windows系統(tǒng)是采用多線程的工作方式。如果IIS以CGI方式運行PHP,效率將會較低,原因是CGI模式是多進程,而windows則是多線程。如果將PHP配置成以ISAPI的方式來運行,ISAPI是多線程的,效率會提高較大,但存在一個問題,很多常用的PHP擴展是以Linux/Unix多進程思想來開發(fā)的,這些擴展在以ISAPI的方式運行時就會出錯,很可能將IIS進程搞崩潰,因此對于IIS來說,CGI模式才是PHP運行的最安全的方式,只不過CGI模式對于每個HTTP請求都需要重新加載和卸載整個PHP環(huán)境,消耗巨大。為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進程重復(fù)利用而不是每一個新的請求重新加載,同時FastCGI也可以允許幾個進程同時執(zhí)行。這樣既解決了CGI進程模式消耗太大的問題,又利用上了CGI進程模式的線程安全優(yōu)勢。

在官方網(wǎng)站上下載PHP并安裝后,安裝目錄下若有php-cgi.exe則支持FastCGI。

PHP目錄下有兩個.ini文件,二者不同之處在于 php.ini-development 適合開發(fā)程式使用(測試用),而php.ini-production 擁有較高的安全性設(shè)定,則適合上線當產(chǎn)品使用。本次實驗使用php.ini-production。將其備份后,修改文件的內(nèi)容。將extension=curl前的分號去掉。然后修改date.timezone=PRC。

值得注意的是,新版的php是默認開啟curl模塊的,這種情況下去掉分號會導(dǎo)致反復(fù)加載curl的報錯。這時把分號加回即可。

CURL是一個非常強大的開源庫,支持很多協(xié)議,包括HTTP、FTP、TELNET等,我們使用它來發(fā)送HTTP請求。它給我 們帶來的好處是可以通過靈活的選項設(shè)置不同的HTTP協(xié)議參數(shù),并且支持HTTPS。CURL可以根據(jù)URL前綴是“HTTP” 還是“HTTPS”自動選擇是否加密發(fā)送內(nèi)容。

此時運行php.exe會出現(xiàn)找不到curl模塊的錯誤。

這是因為extension_dir默認在根目錄下,而Windows的版本中extension_dir在.\ext中。打開找到"extension_dir",去掉注釋符,將值改為"PHP安裝路徑\ext",修改完成后,將其保存為php.ini。PHP配置完畢。

3. 配置 IIS 支持PHP

在Windows中IIS配置PHP,通常有CGI、ISAPI和FastCGI三種接口,檢查php目錄下的文件以確認是那種接口。配置的方法有兩種,phpmanager的配置與手動配置。

(1)手動配置

在默認網(wǎng)站右面的程序選項中選擇處理程序映射,新增模塊映射,如果在低版本IIS,則在默認網(wǎng)站-屬性-配置,然后新增處理程序,新增模塊映射,對四個選擇框進行設(shè)置即可,其中第一個選擇框為映射程序格式,第二個選擇框為接口方式,第三個選擇框為處理程序,exe文件在php的安裝目錄下。

(2) 自動配置

在iis.net找到對應(yīng)IIS版本的phpmanager,安裝后在在IIS的功能視圖中能找到該服務(wù),打開后點擊register new PHP version,填入php-cgi.exe的位置,確定后點擊Check phpinfo(),選擇默認網(wǎng)站,點擊確定可驗證php是否配置成功。

手動配置和自動配置的差異是phpmanager可以自動為用戶配置模塊映射。

4. 驗證 IIS 支持PHP

在默認網(wǎng)站所影射的目錄中新建文件index.php(與index.html在相同目錄)。在瀏覽器輸入localhost/index.php(新建的文件),或者直接輸入localhost。

將index.php改為index.html也能被解析,說明curl模塊已成功安裝。

在計算機網(wǎng)絡(luò)中,localhost(意為“本地主機”,指“這臺計算機”)是給回路網(wǎng)絡(luò)接口(loopback)的一個標準主機名,相對應(yīng)的IP地址為127.0.0.1(IPv4)和[::1](IPv6)。

拓展

除了IIS以外,流行的web服務(wù)器還有Apache和Nginx。IIS是集成于Windows操作系統(tǒng)中的組件,只能在windows操作系統(tǒng)上使用IIS搭建服務(wù)器;而Apache和Nginx可以支持Linux等各類操作系統(tǒng)。

Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務(wù)器中。

Nginx("enginex")是一款是由俄羅斯的程序設(shè)計師IgorSysoev所開發(fā)高性能的Web和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP代理服務(wù)器。在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯的替代品。

參考:

https://blog.csdn.net/hhy_9288/article/details/80540057

http://www.cnblogs.com/itech/archive/2009/05/06/1450811.html

https://baike.baidu.com/item/PHP/9337

https://baike.baidu.com/item/apache/6265

https://baike.baidu.com/item/nginx

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容