1.簡(jiǎn)單描述下web 服務(wù)器叨吮、PHP形纺、數(shù)據(jù)庫(kù)薇缅、瀏覽器是如何實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)站的?
客戶端輸入U(xiǎn)RL,DNS解析URL成IP地址
用戶在客戶端(瀏覽器)的地址欄輸入訪問資源所在的URL攒磨,然后本機(jī)(客戶機(jī))根據(jù)DNS特定的工作模式將URL解析成IP地址泳桦,從而通過IP地址尋址到對(duì)應(yīng)的服務(wù)器客戶機(jī)通過TCP/IP協(xié)議建立到服務(wù)器的TCP連接
客戶端向服務(wù)器發(fā)送HTTP協(xié)議請(qǐng)求包,請(qǐng)求服務(wù)器里的資源文檔
-
Web服務(wù)器向客戶機(jī)發(fā)送HTTP協(xié)議響應(yīng)包
如果請(qǐng)求的資源是html文檔娩缰,則Web服務(wù)器在受到用戶訪問請(qǐng)求后灸撰,在它管理的文檔目錄中找到并打開相應(yīng)的html文件(如index.htm),將文件內(nèi)容響應(yīng)給客戶端瀏覽器
如果請(qǐng)求的資源是php文件,那么Web服務(wù)器本身不能處理php動(dòng)態(tài)語(yǔ)言腳本文件浮毯,就尋找并委托PHP應(yīng)用服務(wù)器——將用戶請(qǐng)求訪問的php文件(如index.php)文件交給PHP應(yīng)用服務(wù)器來(lái)處理完疫;
php應(yīng)用服務(wù)器接收php文件,打開并解釋php文件并最終翻譯成html靜態(tài)代碼债蓝,再講html靜態(tài)代碼交還給Web服務(wù)器壳鹤,Web服務(wù)器將接收到的html靜態(tài)代碼發(fā)送到客戶端如果請(qǐng)求的資源是訪問數(shù)據(jù)庫(kù),那么Web服務(wù)器通過php應(yīng)用服務(wù)器間接訪問數(shù)據(jù)庫(kù)饰迹;
PHP應(yīng)用服務(wù)器打開php文件芳誓,在php文件中通過對(duì)數(shù)據(jù)庫(kù)連接的代碼來(lái)連接本機(jī)或者網(wǎng)絡(luò)上其他機(jī)器上的數(shù)據(jù)庫(kù),并在php程序中通過執(zhí)行標(biāo)準(zhǔn)的SQL查詢語(yǔ)句來(lái)獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)啊鸭,再通過PHP應(yīng)用服務(wù)器將數(shù)據(jù)生成html靜態(tài)代碼锹淌;
再將html靜態(tài)代碼交還給Web服務(wù)器,最后響應(yīng)請(qǐng)求
客戶端加載并解析文檔
由客戶端解釋HTML文檔赠制,在客戶端屏幕上渲染圖形結(jié)果赂摆,最終實(shí)現(xiàn)網(wǎng)頁(yè)在客戶端的呈現(xiàn)客戶機(jī)與服務(wù)器斷開
需要注意的是客戶機(jī)與服務(wù)器之間的通信是非持久連接的,也就是當(dāng)服務(wù)器發(fā)送了應(yīng)答后就與客戶機(jī)斷開連接钟些,等待下一次請(qǐng)求
2.常見的 WEB 服務(wù)器有哪些烟号?
Apache服務(wù)器
Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開放源代碼的網(wǎng)頁(yè)服務(wù)器軟件,可以在大多數(shù)電腦操作系統(tǒng)中運(yùn)行厘唾,由于其跨平臺(tái)和安全性被廣泛使用褥符,是最流行的Web服務(wù)器軟件之一。
它快速抚垃、可靠并且可通過簡(jiǎn)單的API擴(kuò)充喷楣,將Perl、Python等解釋器編譯到服務(wù)器中鹤树。Nginx服務(wù)器
Nginx(發(fā)音同engine x)是一個(gè)網(wǎng)頁(yè)服務(wù)器铣焊,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的協(xié)議鏈接,以及一個(gè)負(fù)載均衡器和一個(gè)HTTP緩存罕伯。
Nginx是一款面向性能設(shè)計(jì)的HTTP服務(wù)器曲伊,相較于Apache具有占有內(nèi)存少,穩(wěn)定性高等優(yōu)勢(shì)追他。與舊版本(<=2.2)的Apache不同坟募,并發(fā)服務(wù)能力更強(qiáng)。整體采用模塊化設(shè)計(jì)邑狸,有豐富的模塊庫(kù)和第三方模塊庫(kù)懈糯,配置靈活。IIS服務(wù)器
IIS是Internet Information Server的縮寫单雾。它是微軟公司主推的服務(wù)器赚哗。IIS的特點(diǎn)具有:安全性她紫,強(qiáng)大,靈活Lighttpd服務(wù)器
Lighttpd是一個(gè)德國(guó)人領(lǐng)導(dǎo)的開源Web服務(wù)器軟件,具有非常低的內(nèi)存開銷屿储、cpu占用率低贿讹、效能好以及豐富的模塊等特點(diǎn)。Lighttpd是眾多OpenSource輕量級(jí)的web server中較為優(yōu)秀的一個(gè)够掠。支持FastCGI民褂,CGI,Auth祖屏,輸出壓縮(output compress)助赞,URL重寫,Alias等重要功能Tomcat服務(wù)器
Tomcat是Apache軟件基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目袁勺,由Apache雹食、Sun和其他一些公司及個(gè)人共同開發(fā)而成。Tomcat技術(shù)先進(jìn)期丰、性能穩(wěn)定群叶,而且免費(fèi),因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可钝荡,成為目前比較流行的Web應(yīng)用服務(wù)器
3.打開瀏覽器街立,在地址欄輸入 http://jirengu.com
頁(yè)面展現(xiàn)了饑人谷官網(wǎng)的信息,整個(gè)過程發(fā)生了什么埠通?(饑人谷官網(wǎng)后臺(tái)語(yǔ)言 php,web服務(wù)器 nginx赎离,數(shù)據(jù)庫(kù) mysql)
- 瀏覽器地址欄輸入U(xiǎn)RL,DNS將URL解析成所訪問nginx服務(wù)器所在的IP地址端辱,通過IP地址在Internet上尋址到對(duì)應(yīng)的nginx服務(wù)器
-
客戶端打包http請(qǐng)求
請(qǐng)求報(bào)文結(jié)構(gòu)包括請(qǐng)求行(Request line)梁剔、請(qǐng)求頭(Request header)、空行和請(qǐng)求體(body)- 請(qǐng)求行規(guī)定請(qǐng)求的方法(GET舞蔽、POST荣病、PUT、DELETE等)渗柿,資源路徑个盆,HTTP協(xié)議/協(xié)議版本
- 請(qǐng)求頭規(guī)定客戶端的基本信息,包括Host(Web服務(wù)器的主機(jī)名)朵栖、連接方式颊亮、緩存控制、客戶端能接收的mine陨溅、瀏覽器版本终惑、是否支持流壓縮、客戶端字符編碼集声登、cookie等
- 空行,用于分割請(qǐng)求頭和消息體
- 消息體,請(qǐng)求資源參數(shù),例如POST傳遞的參數(shù)
客戶機(jī)通過TCP/IP協(xié)議建立到服務(wù)器的TCP連接
客戶端向nginx服務(wù)器發(fā)送HTTP協(xié)議請(qǐng)求包狠鸳,請(qǐng)求服務(wù)器里的資源文檔
根據(jù)反饋信息顯示,向nginx服務(wù)器請(qǐng)求www.jirengu.com的資源文檔包含45個(gè)悯嗓,涉及html文檔及其關(guān)聯(lián)資源(css文件件舵、js文件、php文件脯厨、圖片文件和字體文件等)
-
Web服務(wù)器向客戶機(jī)發(fā)送HTTP協(xié)議響應(yīng)包
對(duì)于從客戶端發(fā)送過來(lái)的請(qǐng)求包铅祸,Web服務(wù)器根據(jù)資源的類型分別處理:- 對(duì)于html文檔,nginx服務(wù)器會(huì)在它管理的文檔目錄下找到并打開相應(yīng)的html文檔合武,將文件響應(yīng)給客戶端
- 對(duì)于php文件临梗,nginx服務(wù)器會(huì)委托phph應(yīng)用服務(wù)器去處理php文件并最終以html靜態(tài)代碼的形式交還給nginx服務(wù)器,nginx服務(wù)器將接收到的靜態(tài)代碼發(fā)送到客戶端(這里的靜態(tài)代碼是和前面的html文檔有關(guān)聯(lián)的組成部分而不是兩個(gè)頁(yè)面)
- 對(duì)于例如注冊(cè)或登錄等表單提交操作稼跳,涉及前后端的數(shù)據(jù)交換盟庞,則會(huì)訪問mysql數(shù)據(jù)庫(kù),那么nginx服務(wù)通過php應(yīng)用服務(wù)器對(duì)php文件的處理汤善,間接操作數(shù)據(jù)庫(kù)什猖,從而最終生成一個(gè)包含數(shù)據(jù)庫(kù)信息的html靜態(tài)代碼(同樣,這里的靜態(tài)代碼是和前面的html文檔有關(guān)聯(lián)的組成部分而不是兩個(gè)頁(yè)面)
這里稍微簡(jiǎn)單介紹一下響應(yīng)報(bào)文:
響應(yīng)報(bào)文由狀態(tài)行红淡、消息頭不狮、空行和消息體組成
狀態(tài)行:HTTP協(xié)議版本號(hào), 狀態(tài)碼在旱, 狀態(tài)消息 三部分組成摇零;
消息頭:包括響應(yīng)的基本信息,如服務(wù)器使用的WEB軟件名及版本桶蝎、發(fā)送時(shí)間驻仅、服務(wù)器發(fā)送信息的類型、發(fā)送HTTP包是分段發(fā)俊嗽、的雾家、保持連接狀態(tài)等
空行:用來(lái)分科消息頭和消息體
消息體:響應(yīng)的資源
-
客戶端加載并解析文檔
由客戶端解釋HTML文檔,在客戶端屏幕上渲染圖形結(jié)果绍豁,最終實(shí)現(xiàn)網(wǎng)頁(yè)在客戶端的呈現(xiàn)
【注】
這里涉及瀏覽器的渲染原理芯咧,將作為獨(dú)立知識(shí)點(diǎn)予以講解,這里暫時(shí)不涉及竹揍。
- 客戶機(jī)與服務(wù)器斷開連接
實(shí)戰(zhàn)篇
1.基于xampp搭建Web服務(wù)器和完成相關(guān)配置
-
xampp的安裝和環(huán)境搭建
安裝好xampp后敬飒,啟動(dòng)Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,但是默認(rèn)端口已被占用芬位,所以修改端口號(hào)
通過瀏覽器訪問Web服務(wù)器上的php文件
Web服務(wù)器的根目錄在htdocs文件夾无拗,所以根據(jù)文件路徑訪問test.php
2.利用新浪云上傳代碼
由于實(shí)際操作時(shí)認(rèn)證失敗,試了許多方法仍未找出問題所在昧碉,所以為了不落下進(jìn)度英染,這道題暫且擱置揽惹。