WWW服務器搭建(2)——Apache服務器配置與管理

一、Apache簡介

1.1 關于Apache

Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的Web服務器,可以在大多數計算機操作系統中運行,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。

1.2 Apache 的特點
  • 具有開放的源代碼。

  • 跨平臺應用。Apache 服務器可以運行在絕大多數軟硬件平臺上,幾乎所有 UNIX 操作系統都可以運行,同時也可以在 Windows 系統平臺上良好的運行。

  • 支持各種 Web 編程語言。

  • 模塊化設計。Apache 不是將所有的功能集中在固定的服務程序內部,而是盡可能地通過標準的模塊實現特有的功能,因此 Apache 服務器具有良好的擴展性。

  • 運行穩定。Apache 服務器可以用于構建具有大負載訪問量的 Web 站點。

  • 良好的安全性。開源軟件共同具有的特性。

二、Apache服務器的安裝

本文基于CentOS 7.5系統安裝并配置Apache服務器,Apache的版本是2.4.6。

[root@apache ~]# uname -r
3.10.0-862.el7.x86_64
[root@apache ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
2.1 安裝Apache

Apache的主程序名稱是httpd,服務器配置好YUM源后,使用如下命令安裝httpd,并可同時安裝其依賴包。依賴包主要包括apr、apr-utils和httpd-tools。

[root@apache ~]# yum install httpd -y
2.2 啟動Apache

httpd安裝后,系統會生成一個名為httpd.service的服務,啟動此服務便可以啟動Apache。

[root@apache ~]# systemctl list-unit-files --type=service | grep httpd
httpd.service ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? disabled
[root@apache ~]# systemctl start httpd.service
[root@apache ~]# systemctl enable httpd.service

Apache服務器的守護進程為httpd,默認在TCP 80端口偵聽用戶請求。

[root@apache ~]# netstat -nptl | grep 80
tcp6 ? ? 0 ? ? ?0 :::80 ? ? ? ? ? :::* ? ? ? ? ?  LISTEN ? ? ?70787/httpd

在瀏覽器中輸入服務器的http://IP地址可以瀏覽Apache的默認網站。

2.3 Apache相關目錄和文件

1、Apache主配置文件

/etc/httpd/conf/httpd.conf ,是Apache的主配置文件,幾乎包含了所有的配置。有的版本將主配置文件拆分成數個小配置文件,分別管理不同的參數。后面會詳細解釋Apache主配文件。

2、額外配置文件目錄

為了便于管理和維護,可以將一些配置參數從主配置文件分離出來,形成額外的配置文件,以.conf結尾,存放在/etc/httpd/conf.d/目錄中,在主配置文件中配置IncludeOptional conf.d/*.conf,從而當重啟Apache的時候,可以將它們讀入主配置文件。

3、默認網站主目錄

/var/www/html/這個目錄就是Apache默認的存放Web頁面的目錄、即默認網站主目錄。

4、模塊文件目錄

Apache采用了模塊化設計,Apache 的模塊分為靜態模塊和動態模塊兩種。Apache 最基本的模塊是靜態模塊,靜態模塊不能夠隨意的添加或卸載;而動態模塊則可以進行添加和刪除操作,因此使 Apache 具有很大的靈活性。Apache支持的外掛模塊的模塊文件默認是放置在/usr/lib64/httpd/modules目錄中。

使用命令httpd -M可以查看哪些是靜態模塊(static),哪些是動態模塊(shared)。

5、日志目錄

/var/log/httpd/是Apache日志文件默認的保存位置,對于流量比較大的網站來說,這個目錄要格外注意,這里的數據文件可能會非常大。

6、CGI程序目錄

/var/www/cgi-bin/是Apache保存可執行的CGI程序的默認位置。

三、Apache配置文件詳解

3.1 主站點的基本配置
ServerRoot "/etc/httpd"
# Apache軟件安裝的位置。若配置文件中其他目錄沒有指定絕對路徑,則目錄是相對于該目錄。 
?
Listen 80 
# 服務器監聽的端口號。 
?
ServerName www.example.com:80
# 主站點名稱(網站的主機名)。 
?
ServerAdmin root@localhost
# 管理員的郵件地址。 
?
DocumentRoot "/var/www/html"
# 主站點的網頁存儲位置。 
?
User apache
Group apache
# 運行httpd進程的用戶和組(都是apache)
 
3.2 對目錄的訪問控制

1、語法:

<Directory></Directory>用于封裝一組指令,使之僅對某個目錄及其子目錄生效。

<Directory “目錄路徑”> ... </Directory>

2、例如:

<Directory "/var/www/html">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>

3、說明:

(1)Options:配置在特定目錄使用的特性,有以下8種選項

#1、All: 所有特性全部選擇,除了MultiViews
#2、None: 所有特性全部不選擇
#3、Indexes: 如果訪問網站的目錄中沒有DirectoryIndex (如index.html),則返回該目錄文件列表
#4、Includes: 允許服務端包含功能
#5、FollowSymLinks: 允許在目錄中使用符號鏈接引導到其他目錄
#6、SymLinksifOwnerMatch: 當符號鏈接和其指向的目錄的所有者是同一用戶時,才會使用符號鏈接
#7、ExecCGI: 允許使用CGI
#8、MultiViews: 允許使用內容協商的"多重視圖",如果請求的路徑可能對應多種類型的文件,那么服務器將根據請求的具體情況自動選擇最匹配項
# 例如在網站根目錄下有demo.jpg和demo.html的兩個文件,此訪問http://localhost/demo,如果根目錄中沒有demo子目錄,那么服務器將會繼續查找形如demo.*的文件,然后根據具體情況返回最匹配的demo.jpg或者demo.html

(2)AllowOverride:用于配置是否允許使用.htaccess文件中的配置覆蓋當前配置生效,有6種選項

#1、All: 允許使用
#2、None: 不允許使用,.htaccess文件配置將被忽略
#3、FileInfo: 允許使用文件控制類型的配置指令,包括:AddEncoding, AddLanguage, AddType等
#4、AuthConfig: 允許使用認證類型的配置指令,包括:AuthDBMGroupFile, AuthDBMUserFile等
#5、Indexes: 允許使用控制目錄索引的配置指令,包括:AddDescription, AddIcon等
#6、Limit: 允許使用權限控制類型的配置指令,包括:Allow, Deny和Order

(3)Require:用于配置訪問權限,常見的配置如下:

# Require all denied: 拒絕所有訪問請求,也是Require缺省配置
# Require all granted: 允許所有訪問請求
# Require ip 192.168 10.10.10: 允許特定IP段的訪問請求
# Require not ip 192.168 10.10.10: 不允許特定IP段的訪問請求
# Require命令缺省標簽為 <RequireAny>...</RequireAny>,表示任何一條規則滿足即可訪問
# 如果要表示所有規則同時滿足時才可訪問,需要使用標簽 <RequireAll>...</RequireAll>
3.3 文件訪問控制

1、語法

提供基于文件名的訪問控制,文件名也可以是一個包含通配符的字符串,其中"?"匹配任何單個字符,"*"匹配任何字符串序列。在"~"字符之后可以使用正則表達式。

<Files "文件名"> ... </Files>

2、例如

<Files ".ht*">Require all denied #禁止訪問.ht開頭的文件
</Files>
3.4 模塊配置

模塊文件位于/usr/lib64/httpd/modules目錄中,這些模塊是否被加載,可以參考配置/etc/httpd/conf.modules.d目錄中的配置文件。

在主配置文件中,使用<IfModule 模塊名></IfModule >用于封裝一組指令,使如果加載了對應的模塊,封裝的指令才有效。

3.5 默認訪問頁面

例如:

<IfModule dir_module>DirectoryIndex index.html#默認首頁文件
</IfModule>
3.6 日志配置

1、錯誤日志

ErrorLog "logs/error_log"
#日志的保存位置/etc/httpd/logs/error_log
LogLevel warn
#指定錯誤日志的級別,對應級別及該級別以上的錯誤日志信息才會記錄到錯誤日志中。

Apache的錯誤日志級別用于控制Apache服務器記錄錯誤信息的嚴重程度。Apache的錯誤日志級別包括:

  • emerg:緊急(會導致服務器不能正常工作)

  • alert:需要立即修復的問題

  • crit:嚴重錯誤

  • error:錯誤

  • warn:警告

  • notice:需要注意的信息

  • info:一般信息

  • debug:調試信息(可能包含大量信息)

2、日志格式

<IfModule log_config_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common
?<IfModule logio_module># You need to enable mod_logio.c to use %I and %OLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>
?#定義訪問日志的保存位置和日志別名nicknameCustomLog "logs/access_log" combined
</IfModule>

格式中的各個參數,如:

  • %h:客戶端的ip地址或主機名

  • %l:這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號 "-" 表示此處信息無效。

  • %u:由HTTP認證系統得到的訪問該網頁的客戶名。有認證時才有效,輸出中的符號 "-" 表示此處信息無效。

  • %t:服務器完成對請求的處理時的時間。

  • %r:引號中是客戶發出的包含了許多有用信息的請求內容。

  • %>s:這個是服務器返回給客戶端的狀態碼。

  • %b:最后這項是返回給客戶端的不包括響應頭的字節數。

  • %{Referer}i:此項指明了該請求是從被哪個網頁提交過來的。

  • %{User-Agent}i:此項是客戶瀏覽器提供的瀏覽器識別信息。

3、例如

192.168.200.1 - - [29/Apr/2024:21:24:09 +0800] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://192.168.200.100/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
3.7 網頁重定向和虛擬目錄配置
<IfModule alias_module># Redirect: 用于將訪問的文件重定向到新的目錄# Example:# Redirect permanent /foo http://www.example.com/barRedirect ? ?/mastc ? ? ? ? ?https://www.mastc.edu.cn/# Alias: 將網站路徑映射到文件系統路徑,用于訪問不在網站根目錄下的內容,即虛擬目錄# Example:# Alias /webpath /full/filesystem/pathAlias /images /var/images# ScriptAlias: 腳本映射,與Alias類似,只是目標文檔被視為腳本# 并在請求時由服務器運行,而不是作為發送到客戶端的文檔ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
例1:網頁跳轉
Redirect    /mastc      https://www.mastc.edu.cn/

例2:虛擬目錄

  • 準備目錄和文件

[root@centos-teach ~]# mkdir /var/images
[root@centos-teach ~]# cp /usr/share/backgrounds/*.jpg /var/images/
  • 配置主配置文件

Alias /images /var/images
<Directory "/var/images">AllowOverride NoneOptions ?Indexes FollowSymLinksRequire all granted
</Directory>
3.8 其他配置
# 響應內容的默認編碼格式
# 通常,文件的字符編碼和客戶端瀏覽器編碼相同時,頁面才會正常顯示,否則會亂碼。
# 可以通過meta標簽或header()函數可以設置客戶端瀏覽器的編碼。
# 優先級:header() >> AddDefaultCharset >> meta
AddDefaultCharset UTF-8
# 導入額外配置文件
IncludeOptional conf.d/*.conf
# 導入功能模塊配置文件
Include conf.modules.d/*.conf

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11625.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

01-02-5

1、單鏈表中按位置查找 a.原理 通過傳遞的位置&#xff0c;返回該位置對應的地址&#xff0c;放到主函數定義的指針變量中。 我們認為位置從&#xff1a;有數據的節點開始計數 即如下結構&#xff1a; 查找位置&#xff0c;就是返回該位置對應的空間地址。 b.代碼說明 Ⅰ…

H5嵌入原生----兼容安卓與ios

主要分UI展示&#xff0c;鍵盤&#xff0c;輸入框等等。解決bug最苦惱的問題不是沒有解決方案&#xff0c;而是你沒有找到真正的原因。再就是現象難以重現&#xff0c;每次都要發布代碼&#xff0c;然后到手機app中去測試&#xff0c;模擬。這些地方會耗費大量的精力。 一、UI…

【軟設】常見易錯題匯總

目錄 計算機系統基礎 程序語言基礎 數據結構 算法設計與分析 計算機網絡與信息安全 軟件工程基礎 開發方法&#xff08;結構化與面向對象&#xff09; 數據庫 操作系統 知識產權相關的法律法規 &#x1f92f;&#x1f92f;&#x1f92f;&#x1f92f;&#x1f92f;&#x1f9…

《系統架構設計師教程(第2版)》第10章-軟件架構的演化和維護-07-軟件架構維護

文章目錄 1. 軟件架構知識管理1.1 概念1.2 架構知識的獲取1.3 作用1.4 架構知識管理的現狀 2 軟件架構修改管理3 軟件架構版本管理4. 示例4.1 背景4.2 數據獲取4.3 數據計算4.4 結果分析4.4.1 圈復雜度 (CCN)4.4.2 扇入扇出度 (FFC)4.4.3 模塊間耦合度 (CBO)4.4.4 模塊的響應 (…

mysql group by 細節介紹

mysql中group by的用法是配合聚合函數&#xff0c;利用分組信息進行統計&#xff0c;語句如“select name,sum(id) from test group by name,number”。 先來看下表1&#xff0c;表名為test&#xff1a; 執行如下SQL語句&#xff1a; SELECT name FROM test GROUP BY name 你…

OFDM802.11a的FPGA實現(十四)data域的設計優化,擠掉axi協議傳輸中的氣泡

原文鏈接&#xff08;相關文章合集&#xff09;&#xff1a;OFDM 802.11a的xilinx FPGA實現 目錄 1.前言 2.data域的時序要求 3.Debug 1.前言 前面12篇文章詳細講述了&#xff0c;OFDM 802.11a發射部分data域的FPGA實現和驗證&#xff0c;今天對data域的設計做一個總結。在…

electron 多窗口 vuex/pinia 數據狀態同步簡易方案(利用 LocalStorage)

全局 stroe 添加 mutations 狀態同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…

springboot306基于Java的民宿管理系統(源碼+包運行+配套LW+技術指導)

項目描述 臨近學期結束&#xff0c;開始畢業設計制作&#xff0c;你還在做java程序網絡編程&#xff0c;期末作業&#xff0c;老師的作業要求覺的困難嗎?不知道畢業設計該怎么辦?網頁功能的數量是否太多?沒有合適的類型或系統?等等。今天給大家介紹一篇基于Java的民宿管理…

python篇-cmd 執行pip命令失敗,但執行pyhon命令正常

當你在CMD中可以正常執行python命令&#xff0c;但執行pip命令失敗時&#xff0c;這通常意味著pip沒有被正確地添加到系統的環境變量中。這里有一些步驟來解決這個問題&#xff1a; 檢查環境變量&#xff1a; 打開系統的環境變量設置&#xff08;右擊“此電腦”>“屬性”>…

CoSeg: Cognitively Inspired Unsupervised Generic Event Segmentation

名詞解釋 1.特征重建 特征重建是一種機器學習中常用的技術&#xff0c;通常用于自監督學習或無監督學習任務。在特征重建中&#xff0c;模型被要求將輸入數據經過編碼器&#xff08;encoder&#xff09;轉換成某種表示&#xff0c;然后再經過解碼器&#xff08;decoder&#x…

c/c++對于char*的理解(聯合string容器)

在C和C中&#xff0c;char*是一個指向字符&#xff08;char&#xff09;的指針。它經常被用來處理C風格的字符串&#xff0c;這種字符串是以空字符&#xff08;\0&#xff09;結尾的字符數組。以下是關于char*的一些關鍵點&#xff1a; C風格的字符串&#xff1a; C風格的字符…

升級Microsoft 365后,SAP GUI中無法打開Excel的解決方案

最近&#xff0c;我們遇到了一個棘手的問題&#xff0c;一位客戶在升級到Microsoft 365后&#xff0c;無法在SAP GUI中打開Excel。這個問題不僅影響了工作效率&#xff0c;也給用戶的日常操作帶來了不便。在本文中&#xff0c;我們將探討問題的成因&#xff0c;并提供一種解決方…

泛微E9開發 添加多個多選框,實現單選框的效果

利用多個多選框實現單選框的效果 1、功能背景2、展示效果3、實現效果 1、功能背景 如下圖所示&#xff0c;在表單中新增四個“選擇框-復選框”類型的字段&#xff0c;并且設置其中的選項&#xff0c;每個多選框都只有一個選項&#xff0c;通過代碼塊實現單選框的效果 1.顯示模…

鄧閑小——生存、生活、生命|真北寫作

人生有三個層次∶生存、生活、生命。 生存就是做必須做的事。生存的模式是鄧&#xff0c;是交易&#xff0c;是買賣。別人需要的東西&#xff0c;你生產出來&#xff0c;賣給他。哪怕這個東西沒啥用&#xff0c;也可以賣&#xff0c;情緒也可以賣。你需要的東西&#xff0c;你花…

分布式與一致性協議之POW算法

POW算法 概述 談起比特幣&#xff0c;你應該并不陌生。比特幣是基于區塊鏈實現的&#xff0c;而區塊鏈運行在因特網上&#xff0c;這就存在有人試圖作惡的情況。有些讀者可能已經發現了&#xff0c;口信消息型拜占庭問題之解、PBFT算法雖然能防止壞人作惡&#xff0c;但只能防…

代碼隨想錄算法訓練營第二十三天 | 530.二叉搜索樹的最小絕對差、501.二叉搜索樹中的眾數、236. 二叉樹的最近公共祖先

目錄 530.二叉搜索樹的最小絕對差 思路 代碼 501.二叉搜索樹中的眾數 思路 代碼 236. 二叉樹的最近公共祖先 思路 代碼 530.二叉搜索樹的最小絕對差 需要領悟一下二叉樹遍歷上雙指針操作&#xff0c;優先掌握遞歸 題目鏈接/文章講解&#xff1a;代碼隨想錄 視頻講解…

Java Spring的定時任務的配置和使用

在Spring框架中&#xff0c;配置和使用定時任務主要涉及Scheduled注解以及Spring的異步任務執行能力。以下是詳細步驟&#xff1a; 1. 引入依賴 對于Spring Boot項目&#xff0c;通常已經包含了Spring框架&#xff0c;因此不需要額外添加定時任務的依賴。如果使用的是Spring框…

AI大模型測評系統opencompass源碼解析

1 注冊器(Registry) 為了管理功能相似的模塊,MMEngine實現了注冊器。注冊器可以被視作這些類或函數的抽象。例如注冊器 MODELS 可以被視作所有模型的抽象。 1.1 什么是注冊器 MMEngine 實現的注冊器可以看作一個映射表和模塊構建方法(build function)的組合。 映射表:…

八、e2studio VS STM32CubeIDE之內存使用情況窗口

目錄 一、概述/目的 二、STM32CubeIDE Build Analyzer 三、e2studio Memory Usage 八、e2studio VS STM32CubeIDE之內存使用情況窗口 一、概述/目的 1、嵌入開發最大特點之一就是資源受限&#xff0c;關注芯片資源使用詳情是優秀工程師的技能之一 2、Keil和IAR都不支持內存…

CTFshow 信息搜集

第一題1 進入靶場 直接看源碼發現flag 第二題 1 按右鍵沒辦法看源碼 按ctrlu可以查看源碼 第三題 0 查看源碼 發現還是什么都沒有 用bp抓包發現flag 第四題1 直接進robots.txt 訪問flagishere.txt獲得flag 第五題 0 提示了phps源碼泄露 用目錄掃描工具沒掃出來 看wp 發現有…