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的配置主要可以分為以下三步:
IIS 的作用是發(fā)布網(wǎng)站,首先要將虛擬的網(wǎng)絡(luò)空間映射到物理目錄,也可用添加虛擬目錄,如下圖所示在 IIS 中選擇默認網(wǎng)站,右鍵高級設(shè)置可修改站點物理路徑。如下圖:
虛擬目錄就是站點物理路徑下的一個文件夾,同一站點可以創(chuàng)建多個虛擬目錄,分別存放不同內(nèi)容的文件。虛擬目錄的物理目錄不一定要在站點的物理路徑下,這就是虛擬目錄達到的效果。
IIS中選擇默認網(wǎng)站,右鍵添加虛擬目錄。如下圖所示:
別名是虛擬目錄在IIS中站點的物理路徑下顯示的名稱,可以與物理路徑的名稱不同,別名的功能更有利于IIS站點下目錄的管理。
在物理路徑的文件夾內(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配置完畢。
在Windows中IIS配置PHP,通常有CGI、ISAPI和FastCGI三種接口,檢查php目錄下的文件以確認是那種接口。配置的方法有兩種,phpmanager的配置與手動配置。
在默認網(wǎng)站右面的程序選項中選擇處理程序映射,新增模塊映射,如果在低版本IIS,則在默認網(wǎng)站-屬性-配置,然后新增處理程序,新增模塊映射,對四個選擇框進行設(shè)置即可,其中第一個選擇框為映射程序格式,第二個選擇框為接口方式,第三個選擇框為處理程序,exe文件在php的安裝目錄下。
在iis.net找到對應(yīng)IIS版本的phpmanager,安裝后在在IIS的功能視圖中能找到該服務(wù),打開后點擊register new PHP version,填入php-cgi.exe的位置,確定后點擊Check phpinfo(),選擇默認網(wǎng)站,點擊確定可驗證php是否配置成功。
手動配置和自動配置的差異是phpmanager可以自動為用戶配置模塊映射。
在默認網(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