Apache构建web主机、日志分割及AWStats分析系统
Apache小結
- 一、構建虛擬 Web 主機
- 1.1 基于域名的虛擬主機
- 1.1.1 基于域名的虛擬主機構建流程(理論)
- 1.1.1.1.為虛擬主機提供域名解析
- 方法一∶ 部署DNS域名解析服務器 來提供域名解析
- 方法二∶ 在/etc/hosts 文件中臨時配置域名與IP地址的映射關系
- 1.1.2基于域名的虛擬主機構建流程(實操)
- 1.2 基于IP地址的虛擬主機
- 1.2.1 基于IP地址的虛擬主機構建流程(理論)
- 1.3 基于端口的虛擬主機
- 1.3.1 基于端口的虛擬主機構建流程(理論)
- 1.3.1 基于端口的虛擬主機構建流程(實操)
- 二、Apache 連接保持
- 三、構建Web虛擬目錄與用戶授權限制
- 3.1 構建Web虛擬目錄與用戶授權限制(理論)
- 3.2 構建Web虛擬目錄與用戶授權限制(實操)
- 四、Apache 日志分割
- 4.1 Apache 日志分割(理論)
- 4.2 Apache 日志分割(實操)
- 五、AWStats 分析系統
- 5.1 AWStats 分析系統(理論)
- 5.2 AWStats 分析系統(實操)
一、構建虛擬 Web 主機
虛擬Web主機指的是在同一臺服務器中運行多個Web站點,其中每一個站點實際上并不獨立占用整個服務器,因此被稱為“虛擬”Web 主機。通過虛擬 Web 主機服務可以充分利用服務器的硬件資源,從而大大降低網站構建及運行成本。
使用httpd服務可以非常方便地構建虛擬主機服務器,只需要運行一個httpd服務就能夠同時支撐大量的Web站點。httpd服務支持的虛擬主機類型包括以下三種:
基于域名
基于IP地址
基于端口
1.1 基于域名的虛擬主機
為每個虛擬主機使用不同的域名,但是其對應的 IP 地址是相同的。例如,www.benet.com 和 www.accp.com 站點的 IP 地址都是 192.168.80.100。這是使用最為普遍的虛擬 Web 主機類型。
1.1.1 基于域名的虛擬主機構建流程(理論)
1.1.1.1.為虛擬主機提供域名解析
方法一∶ 部署DNS域名解析服務器 來提供域名解析
方法二∶ 在/etc/hosts 文件中臨時配置域名與IP地址的映射關系
echo “192.168.80.100 www.benet.com” >>/etc/hosts
echo “192.168.80.100 www.accp.com” >> /etc/hosts
2.為虛擬主機準備網頁文檔
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo “www.benet.com”>/var/www/html/benet/index.html
echo “www.accp.com”>/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.80.10:80> #設置虛擬戰斗區域
#ServerAdmin webmaster@dummy-host.example.com #設置管理員郵箱,這行可忽略
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 192.168.80.10:80>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “logs/accp.com-error_log”
CustomLog “logs/accp.com-access_log” common
4.設置訪問控制
<Directory “/var/www/html”> #設置目錄訪問權限
Options None #不啟用任何的服務器特性
AllowOverride None #不允許重寫Apache默認配置
Require all granted #允許所有主機訪問
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(分布式隱含配置文件):提供了針對每個目錄改變配置的方法,即在一個特定的目錄中放置一個包含特定指令的文件,其中的指令作用于此目錄及其所有子目錄。
當AllowOverride設置成None時,相應的配置目錄下的.htaccess文件是不被讀取的,即無法生效。
當AllowOverride設置成All時,每一次請求訪問相應目錄下的文件時,都會讀取.htaccess文件的配置,意味著原Apache指令會被.htaccess文件中的指令重寫。
從性能和安全性考慮,一般都盡可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置文件(httpd.conf)的 段中,而且高效。因此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
1.1.2基于域名的虛擬主機構建流程(實操)
第一步:為虛擬主機提供域名解析(我這里使用第一種,使用自己寫的一鍵部署腳本,有需要可參考:一鍵部署DNS解析此篇博客!)
第二步:為虛擬主機準備網頁文檔
第三步:添加虛擬主機配置
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
第四步:設置訪問控制
粘貼到虛擬主機配置文件的行尾并修改
第五步:加載獨立的配置文件
1)取消483行的注釋
第六步:在客戶機中訪問虛擬 Web 主機
我這邊補充一個故障點:
1)由于我這虛擬機之前的IP是192.168.80.100,然后在做虛擬web主機之前我修改為192.168.153.30,在上面的設置做完后啟動失敗了
2)出現報錯后我們去看一下日志文件/var/log/messags的報錯情況:無法綁定192.168.80.77
3)回到主配置文件vim /usr/local/httpd/conf/httpd.conf,搜索這個ip地址,然后修改為現在的ip
4)重啟服務進行測試:沒有報錯,故障點排除成功
1.2 基于IP地址的虛擬主機
為每個虛擬主機使用不同的域名,且各自對應的IP地址也不相同。這種方式需要為服務器配備多個網絡接口,因此應用并不是非常廣泛。
1.2.1 基于IP地址的虛擬主機構建流程(理論)
1.設置虛擬網卡
ifconfig ens33:0 192.168.153.40 netmask 255.255.255.0
2.修改虛擬主機配置文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.80.100:80>
DocumentRoot “/var/www/html/benet”
ServerName www.benet.com
ErrorLog “logs/benet.com-error_log”
CustomLog “logs/benet.com-access_log” common
<VirtualHost 192.168.80.111:80>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “logs/accp.com-error_log”
CustomLog “logs/accp.com-access_log” common
<Directory “/var/www/html”>
Options None
AllowOverride None
Require all granted
vim /usr/local/httpd/conf/httpd.conf
–53行–插入
Listen 192.198.153.40:80
3.重啟服務然后在客戶機的瀏覽器中訪問虛擬web主機
systemctl restart httpd
http://192.168.153.30
http://192.168.80.40
1.2.1 基于IP地址的虛擬主機構建流程(實操)
1)設置虛擬網卡ip和網段
2)修改虛擬主機配置文件為192.168.153.40
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
3)修改主配置文件,增加IP和端口
vim /usr/local/httpd/conf/httpd.conf
4)重啟httpd服務,然后在客戶機上訪問測試
然后在客戶機上訪問測試:兩個ip都可以正常訪問
1.3 基于端口的虛擬主機
這種方式并不使用域名、IP地址來區分不同的站點內容,而是使用了不同的TCP端口號,因此用戶在瀏覽不同的虛擬站點時需要同時指定端口號才能訪問。
1.3.1 基于端口的虛擬主機構建流程(理論)
1.修改虛擬主機配置文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.153.30:666>
DocumentRoot “/var/www/html/benet”
ServerName www.benet.com
ErrorLog “logs/benet.com-error_log”
CustomLog “logs/benet.com-access_log” common
<VirtualHost 192.168.153.40:888>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “logs/accp.com-error_log”
CustomLog “logs/accp.com-access_log” common
<Directory “/var/www/html”>
Options None
AllowOverride None
Require all granted
2.修改主配置文件
vim /usr/local/httpd/conf/httpd.conf
–53行–插入
Listen 192.198.153.40:888
3.重啟服務然后在客戶機的瀏覽器中訪問虛擬web主機
systemctl restart httpd
http://192.168.153.30:666
http://192.168.153.40:888
1.3.1 基于端口的虛擬主機構建流程(實操)
第一步:修改虛擬主機配置文件
第二步:修改主配置文件的監聽ip和端口
第三步:重啟服務,在客戶機中瀏覽器訪問虛擬 Web 主機
在客戶機中瀏覽器通過ip和端口訪問虛擬 Web 主機
二、Apache 連接保持
操作步驟:
vim /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive On
#設置是否打開連接保持功能,后面接OFF表示關閉,接ON表示打開。
#可以根據網站的并發請求量決定是否打開,即在高并發時打開連接保持功能,并發量不高時關閉此功能。
MaxKeepAliveRequests 100
#用于設置在一次長連接中可以傳輸的最大請求數量,超過此最大請求數量就會斷開連接,
#最大值的設置決定于網站中網頁的內容,一般設置數量會多于網站中所有的元素。
KeepAliveTimeout 5
#設置來自同一個客戶端一次連接多次請求之間的最大間隔時間,
#即兩次請求之間超過該時間連接就會自動斷開,從而避免客戶端占用連接資源。
vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/proxy-html.conf #取消此行的注釋
1)修改虛擬主機默認配置文件
2)修改主配置文件
三、構建Web虛擬目錄與用戶授權限制
3.1 構建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
–末行添加–
<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 #僅允許指定組訪問
3.驗證用戶訪問授權
mkdir -p /var/www/html/test
echo “
this is vdir test
” > /var/www/html/test/index.htmlsystemctl restart httpd
在客戶機中瀏覽器訪問 http://192.168.80.10:80/test
3.2 構建Web虛擬目錄與用戶授權限制(實操)
第一步:創建用戶認證數據文件
第二步:添加用戶授權配置
第三步:驗證用戶訪問授權
在客戶端進行驗證
四、Apache 日志分割
4.1 Apache 日志分割(理論)
1.修改主配置文件
使用Apache 自帶 rotatelogs 分割工具,將 Apache 的日志進行按每天的日期自動分割。
vim /usr/local/httpd/conf/httpd.conf
或
vim /etc/httpd.conf #行數不一樣,搜索一下ErrorLog和CustomLog進行修改即可
–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 #分割訪問日志
2.修改虛擬主機配置文件(有虛擬主機的時候根據需要在做,這里不需要設置)
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表示一天,即每天生成一個新的日志文件。
3.創建分割后的日志文件保存目錄重啟服務
mkdir /var/log/httpd #創建分割后的日志文件保存目錄
systemctl restart httpd
ls /var/log/httpd
4.2 Apache 日志分割(實操)
第一步:修改主配置文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
第二步:創建分割后的日志文件保存目錄
五、AWStats 分析系統
AWStats 是使用Perl 語言開發的一款開源日志分析系統,它用來完成自動化的日志統計與分析工作。
5.1 AWStats 分析系統(理論)
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 #取消注釋
LoadModule cgi_module modules/mod_cgi.so #取消注釋
…
–跳至末行修改–
<Directory “/usr/local/awstats/wwwroot”>
Options None
AllowOverride None
#Order allow,deny #注釋掉
#Allow from all #注釋掉
Require all granted #添加
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 #更新數據(根據站點配置文件指定的日志文件路徑獲取日志數據)
#注意,更新數據前最好先把access.log文件清空后重新訪問站點,再獲取日志數據。
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.80.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 文件結構解釋:
:用于HTML文件結構最外層表示的標簽 :用于HTML網頁內容描述信息的頭標簽 :用于顯示網頁內容的內容標簽 :定義了 HTML 文檔中的元數據,比如針對搜索引擎和更新頻度的描述和關鍵詞。這里的http-equiv=refresh 用于實現網頁自動跳轉瀏覽器訪問
http://www.kgc.com/aws.html
5.2 AWStats 分析系統(實操)
第一步:放入軟件包
第二步:安裝 AWStats 軟件包
第三步:為要統計的站點建立配置文件
1)輸入httpd服務主配置文件的路徑
第四步:修改自動生成的 awstats 訪問權限,加載 CGI 模塊(Apache 2.4 以上版本需要加載CGI 模塊)
1)取消下面兩行的配置
2)注釋537和538兩行配置,然后添加一行配置
3)恢復默認日志文件位置
第五步:修改站點統計配置文件(由于日志格式問題,不能設置虛擬主機的日志)
1)修改站點統計配置文
vim /etc/awstats/awstats.www.kgc.com.conf
2)新建awstats目錄,然后重啟服務
第六步:清空access.log文件的日志內容,然后在獲取日志數據
1)清空之前的日志內容
第七步:設置cron計劃任務
crontab -e #編寫計劃性任務,每5分鐘更新一次日志文件數據
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
systemctl start crond
第八步:訪問AwStats分析系統站點
總結
以上是生活随笔為你收集整理的Apache构建web主机、日志分割及AWStats分析系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译安装mysqld php服务 安装论
- 下一篇: Apache的网页和安全优化