Apache的配置與應用
- 建構虛拟web主機
- 基于域名的虛拟主機
-
- 1.為虛拟主機提供域名解析
- 2.為虛拟主機準備網頁文檔
- 3.添加虛拟主機配置
- 4.設定通路控制
- 5.加載獨立的配置檔案
- 6.在客戶機中通路虛拟web 主機
- 基于IP位址的虛拟主機
- 基于端口的虛拟主機
- Apache 連接配接保持
- 建構Web虛拟目錄與使用者授權限制
-
- 1.建立使用者認證資料檔案
- 2.添加使用者授權配置
- 3.驗證使用者通路授權
- Apache日志分割
- AWStats 分析系統
-
- 1.将安裝AwStats所需軟體包傳到/opt目錄下
- 2.安裝AWStats 軟體包
- 3.為要統計的站點建立配置檔案
- 4.修改自動生成的awstats通路權限,加載CGI子產品(Apache 2.4以上版本需要加載CGI子產品)
- 5.修改站點統計配置檔案
- 6.執行日志分析,并設定cron計劃任務
- 7.通路AWStats分析系統站點
- 8.優化網頁位址
建構虛拟web主機
虛拟web主機指的是在同一台伺服器中運作多個web站點,其中每一個站點實際上并不獨立占用整個伺服器,是以被稱為“虛拟"Web主機。通過虛拟web主機服務可以充分利用伺服器的硬體資源,進而大大降低網站建構及運作成本。
使用httpd服務可以非常友善地建構虛拟主機伺服器,隻需要運作一個httpd服務就能夠同時支撐大量的web站點。httpd服務支援的虛拟主機類型包括以下三種:
1.基于域名:為每個虛拟主機使用不同的域名,但是其對應的IP位址是相同的。例如,www.benet.com 和www.accp.com 站點的IP位址都是192.168.28.10。 這是使用最為普遍的虛拟web 主機類型。
2.基于IP位址:為每個虛拟主機使用不同的域名,且各自對應的IP位址也不相同。這種方式需要為伺服器配備多個網絡接口,是以應用并不是非常廣
3.基于端口:這種方式并不使用域名、IP位址來區分不同的站點内容,而是使用了不同的TCP端口号,是以使用者在浏覽不同的虛拟站點時需要同時指定端口号才能通路。
基于域名的虛拟主機
1.為虛拟主機提供域名解析
方法一:部署DNS域名解析伺服器來提供域名解析
#!/bin/bash
read -p "請輸入你的IP:”LAN_IP
mount /dev/sr0 /mnt &> /dev/null
rpm -ivh /mnt/Packages/bind-9.9.4-50.e17.x86_64.rpm &> /dev/null
cp /etc/named.conf{,.bak}
sed -i -e '13 s/127.0.0.1/any/' -e '19 s/localhost/any/' /etc/named.conf
cp /etc/named.rfc1912.zones{,.bak}
sed -i '24 a zone "benet.com" IN {\n\ttype master;\n\tfile "benet.com.zone";\n\tallow-update { none; };\n};\n' /etc/named.rfc1912.zones
cp -p /var/named/named.localhost /var/named/benet.com.zone
sed -i -e '2 s/rname.invalid./admin/' -e '9 s/127.0.0.1/'$LAN_IP'/' -e '$a www IN A '$LAN_IP'' -e '10d' /var/named/benet.com.zone
systemctl restart named
方法二:在/etc/hosts 檔案中臨時配置域名與IP位址的映射關系
echo "192.168.28.10 www.benet.com" >> /etc/hosts
echo "192.168.28.10 www.accp.com" >> /etc/hosts
/etc/hosts是主機映射檔案,把域名和主機綁定起來!!
2.為虛拟主機準備網頁文檔
mkdir -p /var/www/html/benet #建立遞歸目錄,為虛拟主機準備網頁文檔
mkdir -p /var/www/html/accp
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html
3.添加虛拟主機配置
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #源碼編譯安裝的虛拟主機配置檔案路徑
#vim /etc/httpd/conf.d/vhosts.conf #RPM或YUM安裝的虛拟主機配置檔案路徑
<VirtualHost 192.168.28.10:80> #設定虛拟戰鬥區域
#ServerAdmin [email protected] #設定管理者郵箱,這行可忽略
DocumentRoot "/var/www/html/benet" #設定網站根目錄
ServerName www.benet.com #設定web站點的完整域名(主機名+域名)
#ServerAlias www.dummy- host. example. com
ErrorLog "logs/benet.com-error_log" #設定錯誤日志檔案的路徑
CustomLog "logs/benet.com-access_log" common #設定通路日志檔案的路徑
</VirtualHost>
<VirtualHost 192.168.28.10:80>
DocumentRoot "/var/www/html/accp"
ServerName www.accp.com
ErrorLog "logs/accp.com-error_log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>
4.設定通路控制
<Directory "/var/www/html"> #設定目錄通路權限
Options None #不啟用任何的伺服器特性
AllowOverride None #不允許重寫Apache預設配置
Require all granted #允許所有主機通路
</Directory>
options指令解釋:
options指令的主要作用是控制特定目錄将啟用哪些伺服器特性。可以在Apache服務配置檔案的虛拟主機配置(VirtualHost)、特定日錄配置(Directory)以及.htaccess檔案中使用。
options指令常用選項:
None:表示不啟用任何的伺服器特性。
FollowSymLinks:伺服器允許在此目錄中使用符号連接配接(軟連結)
Indexes:如果輸入的網址對應伺服器上的一個檔案目錄,而此目錄中又沒有Apache配置檔案中的DirectoryIndex指令指定的檔案(例如:DirectoryIndex index.html index.php),則列出該目錄下的所有檔案。
MultiViews:如果用戶端請求的路徑可能對應多種類型的檔案,那麼伺服器将根據用戶端請求的具體情況自動選擇一個最比對用戶端要求的檔案。例如,在伺服器站點的file檔案夾下中存在名為hello.jpg和hello.html的兩個檔案,此時使用者輸入http://localhost/file/hello,如果在file檔案夾下并沒有hello子目錄,那麼伺服器将會嘗試在file目錄夾下查找形如hello.*的檔案,然後根據使用者請求的具體情況傳回最比對要求的hello. jpg或者hello. html。
All: 表示除MultiViews之外的所有特性。這也是options指令的預設設定。
Allowoverride指令解釋:
.htaccess (分布式隐含配置檔案):提供了針對每個目錄改變配置的方法,即在一個特定的目錄中放置一個包含特定指令的檔案,其中的指令作用于此目錄及其所有子目錄。
當AlloOverride設定成None時,相應的配置目錄下的.htaccess檔案是不被讀取的,即無法生效。
當AlloOverride設定成All時,每一次請求通路相應目錄下的檔案時,都會讀取.htaccess檔案的配置,意味着原Apache指令會被. htaccess檔案中的指令重寫。
從性能和安全性考慮,一般都盡可能避免使用.htaccess檔案,任何希望放在.htaccess檔案中的配置,都可放在主配置檔案(httpd.conf) 的< Directory >段中,而且高效。是以AllowOverride屬性一般都配置成None.
位址限制政策:
Require all granted:允許所有主機通路。
Require all denied:拒絕所有主機通路。
Require local:僅允許本地主機通路。
Require [not] host <主機名或域名清單>:允許或拒絕指定主機或域名通路。
Require [not] ip <IP位址或網段清單>:允許或拒絕指定IP位址網絡通路。
5.加載獨立的配置檔案
vim /usr/local/httpd/conf/httpd.conf #源碼編譯安裝的httpd服務主配置檔案路徑
--483行--取消注釋
Include conf/extra/httpd-vhosts.conf #加載獨立的配置檔案
#vim /etc/httpd/ conf/httpd.conf #RPM或YUM安裝的httpd服務主配置檔案路徑
IncludeOptional conf.d/*.conf #最後一行已預設開啟此項
systemctl restart httpd
6.在客戶機中通路虛拟web 主機
http://www.benet.com
http://www.accp.com
基于IP位址的虛拟主機
1、配置虛拟網址
ifconfig ens33:0 192.168.28.100 netmask 255.255.255.0
2、編輯源碼編譯安裝的虛拟主機配置檔案
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.28.10:80>
DocumentRoot "/var/www/html/benet"
ServerName www.benet.com
ErrorLog "logs/benet.com-error_log"
CustomLog "logs/benet.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.28.100:80>
DocumentRoot "/var/www/html/accp"
ServerName www.accp.com
ErrorLog "logs/accp.com-error_log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
Options None
AllowOverride None
Require all granted
</Directory>
1、修改源碼編譯安裝的httpd服務主配置檔案
vim /usr/local/httpd/conf/httpd.conf
--53行--插入
Listen 192.198.28.100:80
2、重新開機服務
systemctl restart httpd
1、在客戶機中浏覽器通路虛拟web主機
http://192.168.28.10
http://192.168.28.100
基于端口的虛拟主機
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.28.10:80>
DocumentRoot "/var/www/html/benet"
ServerName www.benet.com
ErrorLog "logs/benet.com-error_log"
CustomLog "logs/benet.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.28.10:8080>
DocumentRoot "/var/www/html/accp"
ServerName www.accp.com
ErrorLog "logs/accp.com-error_log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
Options None
AllowOverride None
Require all granted
</Directory>
vim /usr/local/httpd/conf/httpd.conf
--53行--插入
Listen 192.198.28.10:8080
systemctl restart httpd
在客戶機中浏覽器通路虛拟web主機
http://192.168.28.10:80
http://192.168.28.10:8080
Apache 連接配接保持
vim /usr/local/httpd/conf/extra/httpd-default.conf
下列預設已經全部開啟
KeepAlive On
#設定是否打開連接配接保持功能,後面接OFF表示關閉,接ON表示打開。可以根據網站的并發請求量決定是否打開,即在高并發時打開連接配接保持功能,并發量不高時關閉此功能。
MaxKeepAliveRequests 100
#用于設定在一次長連接配接中可以傳輸的最大請求數量,超過此最大請求數量就會斷開連接配接,最大值的設定決定于網站中網頁的内容,一般設定數量會多于網站中所有的元素。
KeepAliveTimeout 5
#設定來自同一個用戶端一次連接配接多次請求之間的最大間隔時間,即兩次請求之間超過該時間連接配接就會自動斷開,進而避免用戶端占用連接配接資源。
建構Web虛拟目錄與使用者授權限制
1.建立使用者認證資料檔案
cd /usr/local/httpd/bin
./htpasswd -c /usr/local/httpd/conf/user zhangsan
./htpasswd /usr/local/httpd/conf/user lisi
#-c選項表示建立使用者資料檔案,預設時則表示指定的使用者資料檔案已經存在,用于添加新的使用者或修改現有使用者的密碼。
cat /usr/local/httpd/conf/user #确認使用者資料檔案
2.添加使用者授權配置
vim /usr/local/httpd/conf/httpd.conf
--末行添加--
Alias /test /var/www/html/test #設定虛拟目錄的根目錄,/test為虛拟目錄名稱
<Directory "/var/www/html/test"> #設定虛拟目錄配置區域
AuthName "Hello!" #定義受保護的領域名稱,會在認證對話框中顯示
AuthType Basic #設定認證的類型,Basic表 示基本認證
AuthUserFile /usr/local/httpd/conf/user #設定用于儲存使用者賬号和密碼的認證檔案的路徑
Require valid-user #開啟使用者認證,隻有認證檔案中的合法使用者才能通路
#authgroupfile /usr/local/httpd/conf/group #設定用于儲存組賬号和密碼的認證檔案的路徑
#Require user zhangsan #僅允許指定使用者通路
#Require group zhangsan #僅允許指定組通路
</Directory>
3.驗證使用者通路授權
mkdir -p /var/www/html/test
echo "<h1>this is vdir test</h1>" > /var/www/html/test/index.html
systemctl restart httpd
在客戶機中浏覽器通路
http://192.168.28.10:80/test
Apache日志分割
使用Apache自帶rotatelogs分割工具,将Apache的日志進行按每天的日期自動分割。
vim /usr/local/httpd/conf/httpd.conf
--275行--修改
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
#分割錯誤日志
--305行--修改
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined #分割通路日志
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #虛拟主機的日志分割
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-error_%F.log 86400"
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-access_%F.log 86400" combined
#開頭的|為管道符号。
#-l選項表示使用本地時間為時間基準。
#86400表示一天,即每天生成一個新的日志檔案。
mkdir /var/log/httpd #建立分割後的日志檔案儲存目錄
systemctl restart httpd #重新開機服務
ls /var/log/httpd #檢視錯誤分割日志
AWStats 分析系統
AWStats是使用Perl語言開發的一款開源日志分析系統,它用來完成自動化的日志統計與分析工作。它可以用web顯示出來!
1.将安裝AwStats所需軟體包傳到/opt目錄下
awstats-7.6.tar.gz
2.安裝AWStats 軟體包
cd /opt
tar zxvf awstats-7.6.tar.gz
mv /opt/awstats-7.6 /usr/local/awstats
3.為要統計的站點建立配置檔案
cd /usr/local/awstats/tools
./awstats_configure.pl
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf #輸入httpd服務主配置檔案的路徑
Your web site, virtual server or profile name:
> www.kgc.com #輸入要統計的站點域名
其它全部是y或者回車
4.修改自動生成的awstats通路權限,加載CGI子產品(Apache 2.4以上版本需要加載CGI子產品)
vim /usr/local/httpd/conf/httpd.conf
ErrorLog "logs/error_log"
CustomLog "logs/access_ log" combined
--143行--
<IfModule !mpm_prefork_module>
LoadModule cgid_ module modules/mod_ cgid. so #取消注釋
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi. so #取消注釋
</IfModule>
--跳至末行修改--
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
#Order allow,deny #注釋掉
#Allow from all #注釋掉
Require all granted #添加
</Directory>
5.修改站點統計配置檔案
vim /etc/awstats/awstats.www.kgc.com.conf
LogFile="/usr/local/httpd/logs/access_log" #修改通路日志檔案位置
DirData="/var/lib/awstats" #awstats目錄預設不存在,需要手動建立
mkdir /var/lib/awstats
6.執行日志分析,并設定cron計劃任務
systemctl restart httpd
cd /usr/local/awstats/tools/
./awstats_updateall.pl now #更新資料( 根據站點配置檔案指定的日志檔案路徑)
crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
systemctl start crond
7.通路AWStats分析系統站點
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
echo "192.168.28.10 www.kgc.com" >> /etc/hosts
浏覽器通路
http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com
8.優化網頁位址
vim /usr/local/httpd/htdocs/aws.html
<html>
<head>
<meta http-equiv=refresh content="0;url=http://www.kgc.com/awstats/awstats.pl?config=www.kgc. com">
</head>
<body></body>
</html>
HTML檔案結構解釋:
<html></html>:用于HTML檔案結構最外層表示的标簽
<head></head>:用于HTML網頁内容描述資訊的頭标簽
<body> </body> :用于顯示網頁内容的内容标簽
<meta>:定義了HTML文檔中的中繼資料,比如針對搜尋引擎和更新頻度的描述和關鍵詞。這裡的http-equiv=refresh用于實作網頁自動跳轉
浏覽器通路
http://www.kgc.com/aws.html