?遇到的問題,都有解決方案,希望我的博客能為你提供一點幫助。
二、網絡服務配置
2.3 web服務配置
2.3.1通信基礎:HTTP協議與C/S架構(了解)
-
??HTTP協議的核心作用??
Web服務基于HTTP/HTTPS協議實現客戶端(瀏覽器)與服務器的通信。HTTP協議定義了兩類報文:- ??請求報文??:包含請求行(方法如GET/POST、URL路徑、協議版本)、請求頭(如User-Agent、Cookie)、請求體(如表單數據)
- ??響應報文??:包含狀態行(如200 OK、404 Not Found)、響應頭(如Content-Type)、響應體(如HTML頁面或JSON數據)
-
??無狀態性與狀態管理??
HTTP協議本身無狀態,但通過Cookie(客戶端存儲)和Session(服務器端存儲)實現會話狀態跟蹤。例如,用戶登錄后,服務器通過Set-Cookie頭部下發Session ID,客戶端后續請求自動攜帶該ID以保持登錄狀態。
2.3.2web 服務基礎概覽(了解)
-
??基礎架構??
Web服務基于??C/S(客戶端-服務器)架構??,服務器負責管理資源、響應客戶端請求,客戶端負責接收并展示內容。 -
??服務分類(掌握)??
- ??靜態Web服務??:內容固定,不隨用戶請求變化。
- ??動態Web服務??:內容實時生成,支持交互性(如用戶登錄、數據庫查詢)。
-
??主流動態語言??
語言 特點 部署環境 ASP/ASP.net 微軟開發,集成Windows生態,適合企業級應用。 通常部署于Windows服務器。 PHP 開源跨平臺,語法融合C/Java/Perl,適合快速開發輕量級應用。 支持Linux/Windows,需安裝PHP環境。 JSP Sun公司推出,基于Java,可結合Servlet/JavaBean實現復雜功能。 需安裝JSP服務包(如Tomcat),兼容跨平臺。 -
??服務器環境依賴??
- ??Linux系統??:天然支持PHP,需額外安裝JSP服務包(如Tomcat)。
- ??Windows系統??:默認支持ASP/ASP.net,也可部署PHP/JSP但需配置環境。
2.3.3?web 服務的工作流程/原理(熟悉)
?
簡單來說,web服務器就是基于http協議一個線上倉庫,?可以接收和響應客戶資源請求。
具體流程:?
- 用戶點擊瀏覽器訪問網頁,瀏覽器獲取訪問網頁的事件。
- 客戶端與瀏覽器建立TCP連接。
- 瀏覽器將用戶的事件按照HTTP協議格式打包為一個壓縮包,添加HTTP協議包頭后形成字節流,存入協議緩沖區。
- 在成功建立TCP連接后,瀏覽器將數據報推送到網絡中,最終遞交到Web服務器。
- 服務器接收到數據報后,以同樣的格式進行解析,從而得出客戶端所需要的資源,最后服務器進行分類處理,或是提供某一文件,或者處理相關數據。
- 將結果裝入緩沖區,按照HTTP協議格式對數據進行打包,并對客戶端發送應答,最終數據包遞交到客戶端。
- 客戶端接收到數據報后,以HTTP協議格式進行解包并解析數據,最后在瀏覽器中展示結果。
?2.3.4?URL??格式解析(掌握)
格式:? 協議類型://主機名[:端口號]/路徑/文件名
要求:能夠看懂每個字段的含義,比如給一個URL能知道每一個表示的是啥。
完整URL??:
https://www.example.com:8080/docs/report.pdf?download=true&version=2#page=3
??協議(Scheme)??:https
- 作用:指定使用??加密的HTTP協議??,確保數據傳輸安全
- 擴展:若改為
ftp
則表示文件傳輸協議,適用于下載場景
??主機名(Host)??:www.example.com
- 作用:標識資源所在的服務器域名,瀏覽器通過DNS解析為IP地址(如
192.0.2.1
) - 擴展:可包含登錄憑證(如
admin:pass@host.com
),但實際因安全風險較少使用
??端口(Port)??::8080
- 作用:指定服務器監聽的非默認端口(HTTP默認80,HTTPS默認443),常用于測試或特殊服務
- 省略情況:若省略則自動使用協議默認端口。
??路徑(Path)??:/docs/report.pdf
- 作用:指向服務器上??具體資源的物理路徑??,層級由
/
分隔。本例表示服務器根目錄下docs
文件夾中的PDF文件 - 擴展:若路徑以
/
結尾(如/docs/
),通常表示目錄而非文件
??查詢參數(Query)??:?download=true&version=2
- 作用:向服務器傳遞動態參數,用于過濾或定制資源。本例中:
download=true
:觸發文件下載而非在線預覽;version=2
:請求第二版文檔- 格式規則:參數鍵值對用
=
連接,多參數以&
分隔。
??片段(Fragment)??:#page=3
- 作用:定位資源內部特定位置,如PDF第3頁或網頁錨點。??僅客戶端生效??,不發送至服務器
?2.3.5?Apache(開源的web服務器軟件)
2.3.5.1 Apache作用:處理HTTP請求與內容服務(了解)
-
??響應HTTP請求??
Apache的核心作用是接收并處理客戶端的HTTP請求(如GET/POST),返回HTML頁面、圖片等靜態資源,或通過集成PHP、Python等腳本語言生成動態內容。例如,用戶訪問電商網站時,Apache可調用后端程序實時生成商品列表頁面。 -
??支持靜態與動態內容??
- ??靜態資源??:直接托管HTML、CSS、JavaScript等文件。
- ??動態內容??:通過模塊(如mod_php、mod_perl)調用PHP、Python等解釋器處理數據庫交互、用戶登錄等動態邏輯
2.3.5.2Apache的httpd服務程序的主要配置文件及存放位置
配置文件名稱 | 路徑 |
---|---|
服務目錄 | /etc/httpd |
主配置文件 | /etc/httpd/conf/httpd.conf |
默認站點主目錄 | /var/www/html |
訪問日志 | /var/log/httpd/access_log |
錯誤日志 | /var/log/httpd/error_log |
2.3.5.3常用文件參數
參數 | 解析 |
---|---|
ServerRoot | Apache 服務運行目錄 |
Listen | 監聽的端口 |
User | 運行服務的用戶 |
Group | 運行服務的組 |
ServerAdmin | 管理員郵箱 |
DocumentRoot | 網站根目錄 |
<Directory /rpath> options </Directory> | 網站對應目錄的權限 |
ErrorLog | 錯誤日志 |
Alias /wpath "/rpath" | 創建路徑別名 |
參數 | 解析 |
---|---|
LogLevel | 警告級別 |
CustomLog | 默認訪問日志格式 |
DirectoryIndex | 默認的索引文件 |
Timeout | 網頁超時時間 |
Serveralias | 網站別名 |
<Directory /rpath> options </Directory>內配置參數?(了解)
訪問控制選項 | 解析 |
---|---|
Options | 設置特定目錄中的服務器特性,具體參數選項的取值見下表 。 |
AllowOverride | 設置訪問控制文件.htaccess。 |
Require | 設置 Apache 缺省的訪問權限 |
參數 | 解析 |
---|---|
Indexes | 允許目錄瀏覽,當訪問的目錄中沒有 DirectoryIndex 參數指定的網頁文件時,會列出目錄中的目錄清單。 |
Multiviews | 允許內容協商的多重視圖。 |
All | 支持除 Multiviews 以外的所有選項,無 Options 語句,默認為 All |
ExecCGI | 允許在該目錄下執行 CGI 腳本 |
FollowSysmLinks | 可以允許在該目錄下使用符號鏈接,以訪問其他目錄 |
Includes | 允許服務器端使用 SSL 技術 |
IncludesNoExec | 允許服務端使用 SSL 技術,但禁止執行 CGI 腳本 |
SymLinksIfOwnerMatch | 目錄文件與目錄屬于同一用戶時支持符號鏈接 |
常見問題(掌握)
問題 | 答案 |
---|---|
如何更換監聽端口(listen) | 找到/etc/httpd/conf/httpd.conf 中的Listen 80 ,將 80 修改為其他端口號,如 8080 |
默認的網頁存儲目錄是什么 | DocumentRoot "/var/www/html" ?,可修改為其他路徑 |
網頁首頁主頁的名稱和類型是什么 | 名稱如 index,常見類型有 html、php、asp ;默認首頁文件設置為DirectoryIndex index.html index.php index.asp ,系統按順序查找,默認只有index.html ,可添加多個 |
2.3.5.4?實現基于Apache的靜態網站發布(掌握)
靜態網頁URL:http://localhost(這個URL應該由自己的web服務器的地址)
#安裝
yum -y install httpd
#寫入靜態網頁內容
sudo echo "hello world!" > /var/www/html/incdex.html
#臨時關閉SELinux
sudo setenforce 0
#啟動
sudo systemctl start httpd
#訪問測試 或者直接在瀏覽器上 輸入http://localhost
curl http://localhost
#結果應該是hello world!
?
基于端口的:?
靜態網頁URL:http://localhost:8080
#添加虛擬主機配置
sudo vim /ect/httpd/conf.d/8080.conf
配置文件如下:?
listen 8080
含義:讓 Apache 服務器監聽 8080 端口 ,用于接收發送到該端口的網絡請求。
作用:指定了服務器對外提供服務的端口,客戶端需通過該端口與服務器通信。
<VirtualHost localhost:8080>
?與?</VirtualHost>
含義:這是一對標簽,用于定義一個虛擬主機配置塊。其中?
localhost:8080
?表示該虛擬主機監聽本地回環地址?localhost
?(等同于?127.0.0.1
?)上的 8080 端口 。作用:通過虛擬主機技術,可在一臺物理服務器上運行多個網站或服務,每個虛擬主機可配置不同的域名、端口等,實現資源的靈活分配與管理。
DocumentRoot /var/www/8080
含義:設置該虛擬主機對應的網站根目錄為?
/var/www/8080
?。當客戶端請求該虛擬主機下的網頁資源時,Apache 會從這個目錄中查找對應的文件。作用:明確了網站文件的存放位置,是服務器定位和提供網頁內容的基礎。
ServerName localhost:8080
含義:指定該虛擬主機的名稱,這里設置為?
localhost:8080
?。它主要用于在多個虛擬主機并存時,幫助 Apache 準確識別客戶端請求應匹配到哪個虛擬主機。作用:在基于名稱的虛擬主機配置場景中,是區分不同虛擬主機的關鍵標識之一 。當客戶端請求中攜帶的域名或主機名與?
ServerName
?匹配時,請求會被路由到對應的虛擬主機處理。
#創建虛擬主機對應的根目錄
sudo mkdir /var/www/8080
#寫入文件內容
sudo echo "This is 8080" > /var/www/8080/index.html
#如果權限不夠記得修改權限,這里簡單設成777
sudo chmod 777 /var/www/8080/index.html
#重啟服務
sudo systemctl restart httpd
#測試
curl http://localhost:8080
結果如下:?
?