初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、
Apache提供web服務(wù):
啟動(dòng)Apache,讓其客戶端可以使用你機(jī)器上安裝的Apache提供的web服務(wù),訪問你機(jī)器上的網(wǎng)站。這種情況下你的計(jì)算機(jī)就是服務(wù)器,別人的機(jī)器就是客戶端。
注意:確保配置文件語法檢查通過,確保80端口沒有被其他程序占用,確保防火墻允許80端口的請求 ,如果出現(xiàn)Forbidden情況,確保配置文件http.conf中的DocumentRoot之后的Directory配置的與DocumentRoot路徑相同。 對于我們開發(fā)階段大多數(shù)是自己訪問自己設(shè)備上面的站點(diǎn),所以我們一定要分清楚客戶端和服務(wù)端,客戶端局限于瀏覽器,代碼和Apache相關(guān)的文件都要放在服務(wù)端。
IP地址:
設(shè)備在某個(gè)網(wǎng)站中的地址,目前最常見的格式[0-255].[0-255].[0-255].[0-255],作用就是標(biāo)識(shí)一個(gè)網(wǎng)絡(luò)中的設(shè)備(計(jì)算機(jī),手機(jī),電視)在某一個(gè)具體網(wǎng)絡(luò)中的地址,127.0.0.1是本地回環(huán)地址,即某個(gè)設(shè)備默認(rèn)的IP。
防火墻:
用來禁用某個(gè)應(yīng)用對網(wǎng)絡(luò)的請求的。
域名:
由于IP地址都是沒有規(guī)律的一些數(shù)字組成的,很難被人記住,不利于廣泛傳播,所以就有人想出要給IP起別名,即后來的域名,域名是要花錢注冊的。
DNS:
通過寬帶運(yùn)營商提供的服務(wù)解析一個(gè)域名背后的IP,這個(gè)過程叫做DNS尋址,幫你完成DNS尋址過程的服務(wù)器叫做DNS服務(wù)器。
hosts文件:
操作系統(tǒng)在發(fā)起對DNS服務(wù)器的查詢之前,會(huì)先檢查本地的hosts文件,如果這個(gè)文件中包含了對當(dāng)前需要解析的域名的配置,則不在發(fā)起對DNS服務(wù)器的請求,直接用hosts文件中配置的IP進(jìn)行對服務(wù)器請求;
hosts文件路徑:C:\Windows\System32\drivers\etc\hosts
注意:本機(jī)的hosts文件配置只能影響到本機(jī)的DNS尋址,只有以管理員權(quán)限運(yùn)行編輯器才有權(quán)利修改hosts文件
端口:
計(jì)算機(jī)本身是一個(gè)封閉的環(huán)境,如果需要有數(shù)據(jù)通信往來,必須有門,這個(gè)門在術(shù)語上就叫端口,每個(gè)端口都有一個(gè)編號(hào),每臺(tái)計(jì)算機(jī)只有65536個(gè)端口(0-65536)。
監(jiān)聽:占門的過程,可以通過命令運(yùn)行:netstat -an命令監(jiān)聽本機(jī)的端口使用情況
端口查詢:推薦百度查詢,http的端口默認(rèn)是:80;https的端口默認(rèn)是:443
URL(Uniform Resource Locator):
統(tǒng)一資源定位符,通俗點(diǎn)來說就是表示網(wǎng)絡(luò)當(dāng)中某個(gè)網(wǎng)頁完整的訪問地址,它具有一定的格式:
https: // user : pass @sub.host.com : 8080 /p/a/t/h ? query=string #hash協(xié)議 用戶名 密碼 主機(jī)名 端口 路徑名 搜索 不發(fā)送到服務(wù)器Apache配置文件:
配置文檔推薦:http://httpd.apache.org/docs/current/
監(jiān)聽端口:
監(jiān)聽端口可以隨意修改為任意一個(gè)未被其他程序監(jiān)聽的端口,可以通過設(shè)置配置文件httpd.conf中的Listen指令后面的數(shù)字修改。
網(wǎng)站根目錄:
存放網(wǎng)站文件的頂層目錄,通常URL中域名后面的第一個(gè)斜線對應(yīng)的就是網(wǎng)站根目錄。(Apache默認(rèn)網(wǎng)站根目錄是安裝目錄中的htdocs文件夾)
默認(rèn)文檔:
訪問某一個(gè)目錄時(shí)(沒有指定具體的文件),默認(rèn)訪問的文件就叫默認(rèn)文檔,一般命名為index.html、index.php等;注:動(dòng)態(tài)網(wǎng)站情況會(huì)比較特殊,需要單獨(dú)考慮,不一定是這個(gè)規(guī)則。
配置網(wǎng)站根目錄:
Apache默認(rèn)網(wǎng)站根目錄是安裝目錄中的htdocs文件夾,為了方便對網(wǎng)站的管理,一般我們會(huì)將網(wǎng)站根目錄通過配置文件httpd.conf配置在一個(gè)自定義目錄中,當(dāng)然不介意的話可以不用修改配置默認(rèn)網(wǎng)站根目錄。如需要修改,則通過修改配置文件httpd.conf中的網(wǎng)站根目錄DocumentRoot及Director 選項(xiàng)的指向來修改跟目錄。
配置默認(rèn)文檔及目錄瀏覽設(shè)置:
配置文件httpd.conf中DirectoryIndex是用來配置默認(rèn)文檔的,如配置index.html為默認(rèn)文檔:DirectoryIndex index.html,默認(rèn)文檔可以配置多個(gè)(由前到后依次去找,找到為止,如果找不到其中默認(rèn)的文件,則啟用目錄瀏覽);如果不想啟用目錄瀏覽,只需要在當(dāng)前目錄添加一個(gè)空白的index.html文件即可,或使用目錄瀏覽拒絕訪問:在httpd.conf文檔中修改Options Indexes FollowSymLinks為Options FollowSymLinks也可以。
配置虛擬主機(jī):
虛擬主機(jī):
如果一臺(tái)機(jī)器上只有一個(gè)網(wǎng)站的話,是沒有任何問題,但是實(shí)際中一臺(tái)機(jī)器上面可能同時(shí)存放多個(gè)項(xiàng)目,此時(shí)就需要配置多個(gè)虛擬主機(jī)來解決這個(gè)問題。
配置虛擬主機(jī):
虛擬主機(jī)的配置是很常見的,避免破壞主配置文件中的其他配置,通常把配置虛擬主機(jī)的文件單獨(dú)抽離出一個(gè)文件,之后在引入主配置文件。其抽離的配置文件目錄為:C:\t\Apache\conf\extra\httpd-vhosts.conf。具體流程如下:
1.在主配置文件httpd.conf中找到Include conf/extra/httpd-vhosts.conf指令,將其注釋去掉或不帶注釋復(fù)制粘貼在這,作用是引入httpd-vhosts.conf文件2.在抽離的虛擬主機(jī)配置文件httpd-vhosts.conf中添加一個(gè)虛擬主機(jī)配置的節(jié)點(diǎn):(這里可以添加多個(gè)虛擬主機(jī)節(jié)點(diǎn)來配置多個(gè)虛擬主機(jī)) <VirtualHost *:80>-----------------------------------------------------------虛擬主機(jī)的配置,綁定任意IP的80端口ServerAdmin webmaster@dummy-host.example.com-----------------------------自己的郵箱地址DocumentRoot F:/demo-----------------------------------------------------項(xiàng)目存放的根目錄<Directory F:/demo>------------------------------------------------------目錄權(quán)限設(shè)置Require all granted--------------------------------------------------解鎖所有的請求,授權(quán)Options Indexes FollowSymLinks---------------------------------------開啟目錄瀏覽AllowOverride None---------------------------------------------------不允許目錄內(nèi)。htaccess文件覆蓋此處配置</Directory>ServerName day-01.io-----------------------------------------------------域名ServerAlias www.day-01.io------------------------------------------------另一個(gè)域名(別名)ErrorLog "logs/day-01.io-error.log"--------------------------------------錯(cuò)誤日志CustomLog "logs/day-01.io-access.log" common-----------------------------自定義日志 </VirtualHost> 如: <VirtualHost *:80>ServerAdmin 810665436@qq.comDocumentRoot E:/web前端<Directory E:/web前端>Require all grantedOptions Indexes FollowSymLinksAllowOverride None</Directory>ServerName myblog.comErrorLog "logs/dummy-host.example.com-error.log"CustomLog "logs/dummy-host.example.com-access.log" common </VirtualHost>3.如果配置的域名沒有解析到DNS服務(wù)器上,這里需要在本地hosts文件中將域名解析到IP地址:C:\Windows\System32\drivers\etc文件夾中的hosts文件添加域名的指向:127.0.0.1(本地IP) myblog.com項(xiàng)目的域名4.重啟Apache,在瀏覽器搜索配置的域名進(jìn)行測試。靜態(tài)網(wǎng)站與動(dòng)態(tài)網(wǎng)站:
請求響應(yīng):
瀏覽器請求網(wǎng)站到看到頁面做了什么?
用戶輸入網(wǎng)址—瀏覽器發(fā)送請求到服務(wù)器—服務(wù)器發(fā)送代碼給瀏覽器—瀏覽器接收代碼渲染網(wǎng)頁給用戶
1.用戶打開瀏覽器輸入網(wǎng)址的URL
2.瀏覽器通過DNS服務(wù)器獲取訪問的網(wǎng)站IP地址
3.瀏覽器發(fā)起對這個(gè)IP的請求
4.服務(wù)端接收到這個(gè)請求,進(jìn)行相應(yīng)的處理
5.服務(wù)端處理完的結(jié)果返回給用戶瀏覽器
6.瀏覽器將接收到的服務(wù)端的結(jié)果呈現(xiàn)到界面上
瀏覽器端:1.用戶在瀏覽器中輸入要訪問的URL地址2.瀏覽器解析用戶輸入的URL地址------------知域名 + 端口號(hào)3.瀏覽器先檢查本地緩存是否有這個(gè)域名,有的話可以得到IP,沒有則執(zhí)行下一步4.瀏覽器發(fā)起一個(gè)DNS系統(tǒng)調(diào)用--------------知IP4.1先檢查操作系統(tǒng)的緩存里面有沒有這個(gè)域名,沒有則執(zhí)行下一步4.2在系統(tǒng)的hosts文件中找是否有這個(gè)域名,沒有則執(zhí)行下一步4.3會(huì)對DNS服務(wù)器發(fā)起一個(gè)系統(tǒng)調(diào)用DNS服務(wù)器:DNS服務(wù)器存有com,cn,net等域5.瀏覽器會(huì)通過本地的隨機(jī)端口建立一個(gè)與服務(wù)端指定端口之間的連接通道6.瀏覽器會(huì)將客戶端的一些信息打成 包(請求報(bào)文) 并把這個(gè) 包(請求報(bào)文) 通過連接通道發(fā)送到web服務(wù)端|||||||||| 服務(wù)端:web server(Apache):1.打開提交過來的 包,拿到 包 里面的請求路徑2.根據(jù)請求路徑對應(yīng)文件的擴(kuò)展名找到文件的MIME type(在Apache的配置文件mime.types中)3.判斷文件類型是否為靜態(tài)文件,如果是靜態(tài)文件,則直接讀取這個(gè)文件的內(nèi)容,否則交給模塊(php)處理,之后把執(zhí)行結(jié)果返回給web server4.服務(wù)端會(huì)把要發(fā)給客戶端的數(shù)據(jù)打包(響應(yīng)報(bào)文),之后通過連接通道發(fā)給瀏覽器端||||||||||瀏覽器端:7.打開服務(wù)端返回給瀏覽器的包(響應(yīng)報(bào)文),找到響應(yīng)報(bào)文中的Content-type,根據(jù)Content-type的值決定如何響應(yīng)內(nèi)容。8.如果是html,則渲染在瀏覽器的界面上。http協(xié)議:
HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)的定義:最早是計(jì)算機(jī)與計(jì)算機(jī)之間溝通的一種標(biāo)準(zhǔn)協(xié)議,現(xiàn)在http應(yīng)用于各種領(lǐng)域的端與端之間的通訊協(xié)議。
約定的內(nèi)容:請求/響應(yīng)報(bào)文格式 請求方法—GET/POST 響應(yīng)狀態(tài)—200/404/302/304 預(yù)設(shè)請求/響應(yīng)頭
約定的形式:
1.客戶端通過隨機(jī)端口與服務(wù)器的某個(gè)固定端口(一般為80端口)建立連接三次握手2.客戶端是通過這個(gè)連接 ‘發(fā)送請求(請求報(bào)文)’ 到服務(wù)端3.服務(wù)端監(jiān)聽端口得到客戶端發(fā)送過來的請求4.服務(wù)端通過連接響應(yīng)給客戶端狀態(tài)和內(nèi)容(響應(yīng)報(bào)文)請求報(bào)文格式:請求行====>請求頭====>空行====>請求體
響應(yīng)報(bào)文格式:狀態(tài)行====>響應(yīng)頭====>空行====>響應(yīng)體
通過header()實(shí)現(xiàn)文件下載:
header是用來設(shè)置響應(yīng)頭的,里面Content-Type屬性可以判斷數(shù)據(jù)格式供瀏覽器處理,當(dāng)Content-Type屬性的值設(shè)置為不識(shí)別的值時(shí),文件就會(huì)被下載下來,如:
<?php header('Content-Type: application/octet-stream');//特殊需要記憶 ?>提示:本文圖片等素材來源于網(wǎng)絡(luò),若有侵權(quán),請發(fā)郵件至郵箱:810665436@qq.com聯(lián)系筆者刪除。
筆者:苦海
總結(jié)
以上是生活随笔為你收集整理的初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言的单行注释以井号开头_【
- 下一篇: 木炭怎么获得_木炭机一体化流程中制做木炭