文章目錄
- 一、Apache優化之保持連接
- (1)長連接的作用:
- (2)apache為什么要開啟長連接?
- (3)優化Apache長連接
- -實驗環境
- -實驗步驟
- -使用抓包軟體測驗
- 二、Apache優化之網頁壓縮傳輸
- (1)網頁壓縮的作用:
- (2)網頁壓縮傳輸的原理
- (3)網頁壓縮傳輸的優點
- (4)優化Apache網頁壓縮傳輸
- -實驗環境
- -實驗步驟
- -測驗
- 三、Apache優化之頁面快取
- (1)優化頁面快取的作用
- (2)優化Apache頁面快取
- -實驗環境
- -實驗步驟
- -測驗
- 四、Apache優化之隱藏版本號
- (1)為什么要隱藏版本號
- (2)優化Apache隱藏版本號
- -實驗環境
- -實驗步驟
- 方式一:
- 方式一測驗:
- 方式二:
- 方式二測驗:
- 五、Apache優化之防盜鏈
- (1)防盜鏈的作用
- (2)防盜鏈的選項和匹配規則
- (3)優化Apache防盜鏈
- -實驗環境
- -實驗目的
- -實驗步驟
- -測驗
- 六、Apacheab壓力測驗
- (1)ab壓力測驗的使用場景
- (2)ab壓力測驗的作用
- (3)使用ab測驗工具
- 七、Apache訪問控制
- (1)作用
- (2)配置Apache訪問控制
- -實驗環境
- -實驗步驟
- -測驗
- 八、Apache優化之日志分割
- (1)作用
- (2)優化apache日志分割
- -實驗環境
- -方式一
- -方式二
- -方式三
- (3)日志合并
- 九、Apache實驗虛擬主機
- (1)作用
- (2)實作的三種方式
- (3)配置apache虛擬主機
- -實驗環境
- -不同ip,相同埠,不同域名
- -相同ip,不同埠,相同域名
- -相同ip,相同埠,不同域名(使用最多)
- 十、統計訪問量
- (1)什么是PV、UV和VV
- (2)PV和VV的區別
- (3)統計PV和UV的命令
一、Apache優化之保持連接
(1)長連接的作用:
- HTTP協議使TCP的子協議,HTTP建立連接之前需要先建立TCP連接,斷開之前也需要先斷開TCP連接,而TCP的建立和斷開消耗的資源通過HTTP長連接可以節約下來,
- 對于HTTP/1.1版本來說,盡量的保持與客戶端的TCP連接,只通過一個TCP連接發送多個HTTP請求回應,相對于客戶端,可以提高%50以上的回應時間,而對于服務器,可以降低建立與斷開TCP連接時消耗的資源,
(2)apache為什么要開啟長連接?
在開啟apache服務器的長連接之后,當客戶端請求完成之后,負責回傳給客戶端資料的行程并不會直接退出,而是等待客戶端的下一個請求,這樣做的主要目的就是減少TCP的三次握手,節省資源
(3)優化Apache長連接
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
使用模塊: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite
-實驗步驟
******(1)先做基礎配置
[root@Centos7 ~]# hostnamectl set-hostname rzy
[root@Centos7 ~]# su
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
mount: /dev/sr0 已經掛載或 /mnt 忙
/dev/sr0 已經掛載到 /mnt 上
******(2)上傳原始碼包,安裝apache
[root@rzy ~]# ll
總用量 6448
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 15 01:39 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-cgi \
> --enable-rewrite \
> && make && make install
******(2)修改組態檔
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/extra/httpd-default.conf
,,,,,,
15 #
16 KeepAlive On #是否打開長連接功能,要根據網站的并發請求量決定是否打開,推薦在高并發場景打開,并發不高時可以選擇關閉
17
,,,,,,
22 #
23 MaxKeepAliveRequests 100 #一次TCP連接能夠傳輸的最大HTTP請求數量
24
,,,,,,
28 #
29 KeepAliveTimeout 20 #一次TCP連接中多次HTTP請求之間的最大間隔時間,兩次HTTP請求超過此時間,那么TCP連接就會斷開
30
#保存退出
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
96 #
97 ServerName www.rzy.com:80 #洗掉注釋并且修改域名
98
,,,,,,
396 # Various default settings
397 Include conf/extra/httpd-default.conf #洗掉注釋,使這個組態檔生效
398
,,,,,,
#保存退出
******(3)開啟httpd服務
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl start
[root@rzy httpd-2.2.17]# netstat -anpt | grep 80
tcp6 0 0 :::80 :::* LISTEN 53057/httpd
-使用抓包軟體測驗
- 先進行訪問,測驗是否可以正常訪問

- 使用抓包軟體測驗(Fiddler軟體)

二、Apache優化之網頁壓縮傳輸
(1)網頁壓縮的作用:
-
apache的網頁壓縮功能,是使用Gzip壓縮演算法來對apache服務器發布的網頁內容先進行壓縮,然后再傳輸到客戶端瀏覽器
-
通常在CPU有空閑,網站帶寬占用高時,會啟用壓縮
(2)網頁壓縮傳輸的原理
客戶端先請求httpd服務器的資料,httpd服務器再回傳資料報給客戶端時,會先對回傳的資料進行壓縮之后在進行傳輸
(3)網頁壓縮傳輸的優點
- 加快網頁加載的速度,改善用戶的瀏覽體驗
- 降低網路傳輸帶寬,節省服務器流量
- 網頁壓縮有利于搜索引擎的抓取
(4)優化Apache網頁壓縮傳輸
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
-
使用模塊: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --enable-deflate
-
優化網頁壓縮傳輸需要使用yum安裝依賴包: yum -y install zlib-devel
-
**優化網頁壓縮傳輸可以使用的模塊有 **:(本次實驗使用deflate)
| mod_gzip | mod_deflate |
|---|---|
| Gzip演算法,運作原理相似 | Gzip演算法,運作原理相似 |
| 壓縮速度略慢 | 壓縮速度略快 |
| 壓縮比略高 | 壓縮比略低 |
| cpu占用率略高 | cpu占用率略低 |
| 低瀏覽量服務器 | 高瀏覽量服務器 |
-實驗步驟
******(1)進行基礎配置(略)
******(2)上傳原始碼包,進行配置、安裝
[root@rzy ~]# yum -y install zlib-devel #安裝依賴包
,,,,,
完畢!
[root@rzy httpd]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# make clean #清空之前的配置內容
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-deflate --enable-cgi
[root@rzy httpd-2.2.17]# make && make install #編譯安裝
******(3)修改組態檔
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl -D DUMP_MODULES | grep deflate #確認是否有deflate模塊
Syntax OK
deflate_module (static)
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf #修改組態檔
,,,,,, #在最后一行添加
411 AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript #指定對什么格式的內容進行壓縮
412 DeflateCompressionlevel 9 #壓縮級別,范圍是1-9,數字越高壓縮率越高
413 SetOutputFilter DEFLATE #啟動deflate壓縮方式
414
#保存退出
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl start #開啟httpd
[root@rzy httpd-2.2.17]# netstat -anpt | grep 80 #檢查埠
tcp6 0 0 :::80 :::* LISTEN 119230/httpd
-測驗

三、Apache優化之頁面快取
(1)優化頁面快取的作用
- 通過mod_expires模塊配置Apache,使網頁能在客戶端瀏覽器快取一段時間,以避免重復請求,減輕服務端作業壓力,
- 啟動mod_expires模塊后,會自動生成頁面頭部資訊中的Expires標簽和CacheControl標簽,從而降低客戶端的訪問頻率和次數,減少不必要的流量并且增加訪問速度
(2)優化Apache頁面快取
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
- 使用模塊: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --enable-expires
-實驗步驟
******(1)先做基礎配置(略)
******(2)上傳httpd原始碼包,進行配置、安裝
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# make clean #洗掉配置
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi --enable-expires
[root@rzy httpd-2.2.17]# make && make install
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl -D DUMP_MODULES | grep expires #檢查是否有expires模塊
Syntax OK
expires_module (static)
******(3)修改組態檔
[root@rzy metadata]# vim /usr/local/httpd/conf/httpd.conf #修改組態檔
,,,,,, #在最下面寫入
414 <IfModule mod_expires.c>
415 ExpiresActive On #啟動頁面快取
416 ExpiresDefault "access plus 60 seconds" #指定頁面快取時間,這里是60秒
417 </IfModule>
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl restart #重新啟動httpd
-測驗

四、Apache優化之隱藏版本號
(1)為什么要隱藏版本號
在真實環境中,公司是肯定不會想要別人知道自己用的什么web服務器,所以就需要隱藏web版本號
(2)優化Apache隱藏版本號
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
- 使用模塊: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite
-實驗步驟
有兩種方式進行隱藏,根據實際環境選擇
方式一:
******直接修改組態檔
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
,,,,,,
54 #
55 ServerTokens Prod #顯示最少的資訊,prod表示最少的資訊,full就表示顯示完整資訊
56
,,,,,,
64 #
65 ServerSignature Off #生成頁面的頁腳,off關閉,on開啟
66
,,,,,,
#保存退出
[root@rzy ~]# /usr/local/httpd/bin/apachectl restart #重啟服務
方式一測驗:
沒有做隱藏版本號時:

隱藏版本號后:

方式二:
******#使用原始碼包重新編譯,這個會連本地版本名稱也修改了,所以修改之前要保存好web服務器的版本號和服務名稱
[root@rzy ~]# cd /usr/src/httpd-2.2.17/ #先進入到原始碼包解壓的位置
[root@rzy httpd-2.2.17]# cd include/ #進入include目錄
[root@rzy include]# vim ap_release.h #修改這個檔案
,,,,,,
42 #define AP_SERVER_BASEVENDOR "aaaaaa Software Foundation" #這三個會修改web服務名稱,三個要修改成相同
43 #define AP_SERVER_BASEPROJECT "aaaaaa"
44 #define AP_SERVER_BASEPRODUCT "aaaaaa"
45
46 #define AP_SERVER_MAJORVERSION_NUMBER 6 #這是三個版本
47 #define AP_SERVER_MINORVERSION_NUMBER 6
48 #define AP_SERVER_PATCHLEVEL_NUMBER 6
,,,,,,
#保存退出
[root@rzy include]# cd ..
[root@rzy httpd-2.2.17]# make clean #清除配置
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-cgi #重新進行配置
[root@rzy httpd-2.2.17]# make && make install #編譯、安裝
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl -v
Server version: aaaaaa/6.6.6 (Unix) #web服務器名稱變成了aaaaaa,版本號變成了6.6.6
Server built: Apr 15 2021 17:08:24
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/extra/httpd-default.conf #把方式一的修改內容進行修改
,,,,,,
54 #
55 ServerTokens Full
56
,,,,,,
64 #
65 ServerSignature On
66
,,,,,,
#保存退出
方式二測驗:
修改前:

修改后:(如果重新啟動后沒有修改成功,那就重啟系統)

五、Apache優化之防盜鏈
(1)防盜鏈的作用
防盜鏈就是防止別人盜用服務器中的圖片、檔案、視頻等相關資源,
(2)防盜鏈的選項和匹配規則
| !^ | 不以知道欄位開頭 |
|---|---|
| .*$ | 以任意字符結尾 |
| NC | 不區分大小寫 |
| R | 強制跳轉 |
規則匹配: 如果相應變數的值匹配所設定的規則,則逐條往下處理,如果不匹配則后面的規則不再繼續匹配
(3)優化Apache防盜鏈
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 | 域名 |
|---|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz | www.rzy.com |
| Centos7.4 | 192.168.100.203 | rzy-02 | httpd-2.2.17.tar.gz | www.rzy02.com |
- 使用模塊: ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite
- 防盜鏈使用的模塊是: --enable-rewrite
-實驗目的
防止rzy-02盜取rzy服務器的圖片
-實驗步驟
- rzy配置:
******(1)做基礎配置
[root@Centos7 ~]# hostnamectl set-hostname rzy
[root@Centos7 ~]# su
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
mount: /dev/sr0 已經掛載或 /mnt 忙
/dev/sr0 已經掛載到 /mnt 上
[root@rzy ~]#
******(2)上傳原始碼包,進行配置、編譯、安裝
[root@rzy ~]# ll
總用量 6448
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 15 17:30 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi
[root@rzy httpd-2.2.17]# make && make install
******(3)添加hosts檔案決議兩個服務器
[root@rzy httpd-2.2.17]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.202 www.rzy.com #添加兩個服務器的ip和域名
192.168.100.203 www.rzy02.com
******(4)修改httpd主組態檔
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf #修改檔案
,,,,,,
96 #
97 ServerName www.rzy.com:80 #修改域名
98
,,,,,,
131 <Directory "/usr/local/httpd/htdocs">
132 RewriteEngine On
133 RewriteCond %{HTTP_REFERER} !^http://rzy.com/.*$ [NC]
134 RewriteCond %{HTTP_REFERER} !^http://rzy.com$ [NC]
135 RewriteCond %{HTTP_REFERER} !^http://www.rzy.com/.*$ [NC]
136 RewriteCond %{HTTP_REFERER} !^http://www.rzy.com$ [NC]
137 RewriteRule .*\(gif|jpg|swf\)$ http://www.rzy.com/1.jpg [R,NC] #如果訪問的不是上面這幾個網址的話就強制跳轉
,,,,,,
#保存退出
******(5)寫一個網頁檔案
[root@rzy httpd-2.2.17]# cd /usr/local/httpd/htdocs/
<html>
<body>
<h1>www.rzy.com</h1>
<img src="/rzy.jpg"/> #插入圖片
</body>
</html>
#保存退出
[root@rzy htdocs]# ll #上傳兩種圖片,名稱分別改成網頁中和組態檔中的圖片名稱
總用量 1076
-rw-r--r-- 1 root root 777473 4月 15 17:48 1.jpg
-rw-r--r-- 1 root root 92 4月 15 17:47 index.html
-rw-r--r-- 1 root root 316240 4月 15 17:49 rzy.jpg
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl start #開啟httpd
使用瀏覽器查看是否可以正常訪問和顯示圖片(先把本機的hosts檔案寫入兩個服務器的決議)

成功顯示圖片

- rzy-02配置:
******(1)做基礎配置
[root@rzy ~]# hostnamectl set-hostname rzy-02
[root@rzy ~]# su
[root@rzy-02 ~]# systemctl stop firewalld
[root@rzy-02 ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy-02 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
mount: /dev/sr0 已經掛載或 /mnt 忙
/dev/sr0 已經掛載到 /mnt 上
******(2)上傳原始碼包,進行配置編譯安裝
[root@rzy-02 ~]# ll
總用量 6448
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 15 17:34 httpd-2.2.17.tar.gz
[root@rzy-02 ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy-02 ~]# cd /usr/src/httpd-2.2.17/
[root@rzy-02 httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi
[root@rzy-02 httpd-2.2.17]# make && make install
******(3)添加hosts檔案決議兩個服務器
[root@rzy-02 httpd-2.2.17]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.202 www.rzy.com
192.168.100.203 www.rzy02.com
******(4)修改組態檔
[root@rzy-02 httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
96 #
97 ServerName www.rzy02.com:80
98
,,,,,,
#保存退出
******(5)編輯網頁跳轉
[root@rzy-02 httpd-2.2.17]# cd /usr/local/httpd/htdocs/
[root@rzy-02 htdocs]# vim index.html
<html>
<body>
<h1>It works!</h1>
<img src="http://www.rzy.com/rzy.jpg" alt="訪問被拒絕,對方設定了防盜鏈"> #訪問失敗就顯示后面那行字
</body>
</html>
#保存退出
[root@rzy-02 htdocs]# /usr/local/httpd/bin/apachectl start #開啟httpd
-測驗
訪問www.rzy.com

訪問www.rzy02.com(這里已經成功跳轉,因為已經顯示出了提示語)

六、Apacheab壓力測驗
(1)ab壓力測驗的使用場景
- 要對剛剛購買的二手服務器進行啥訓
- 在產品上線之前,對應用的一個壓力測驗
- 對產品本身的壓力測驗
(2)ab壓力測驗的作用
Apache附帶了壓力測驗工具ab,非常容易使用,并且完全可以模擬各種條件來對web服務器發起測驗請求,在進行性能調整優化程序中,可以使用ab壓力測驗工具進行優化效果的測驗
(3)使用ab測驗工具
ab -n 請求數總和 -c 并發用戶數 網站網址
[root@rzy ~]# /usr/local/httpd/bin/ab -n 1000 -c 100 http://192.168.100.202/index.html
#表示100個用戶總共發起1000個請求對192.168.100.202這個網站
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.100.202 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.2.17 #服務器版本
Server Hostname: 192.168.100.202 #服務器地址
Server Port: 80 #服務器埠
Document Path: /index.html #測驗的資源
Document Length: 92 bytes
Concurrency Level: 100 #總共的用戶數量
Time taken for tests: 0.073 seconds #發送完請求總共使用的時間
Complete requests: 1000 #總共的請求數量
Failed requests: 0 #失敗的請求數量
Write errors: 0
Total transferred: 344000 bytes
HTML transferred: 92000 bytes
Requests per second: 13713.66 [#/sec] (mean) #吞吐率,表示本次測驗每秒可以相應請求的速度
Time per request: 7.292 [ms] (mean)
Time per request: 0.073 [ms] (mean, across all concurrent requests)
Transfer rate: 4606.93 [Kbytes/sec] received #表示這些請求在單位時間內從服務器獲取的資料長度
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 1 7 1.2 7 8
Waiting: 1 7 1.2 7 8
Total: 2 7 1.0 7 8
Percentage of the requests served within a certain time (ms)
50% 7
66% 7
75% 8
80% 8
90% 8
95% 8
98% 8
99% 8
100% 8 (longest request)
七、Apache訪問控制
(1)作用
為apache服務提供的頁面設定客戶端訪問權限,為某個組或者某個用戶加密訪問,即訪問網頁需要使用指定的用戶名密碼登錄才可以正常進行訪問
(2)配置Apache訪問控制
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
-實驗步驟
******(1)做基礎配置
[root@Centos7 ~]# hostnamectl set-hostname rzy
[root@Centos7 ~]# su
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
mount: /dev/sr0 已經掛載或 /mnt 忙
/dev/sr0 已經掛載到 /mnt 上
******(2)上傳httpd的原始碼包,進行配置編譯安裝
[root@rzy ~]# ll
總用量 6448
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 16 00:03 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi && make && make install
******(3)使用htpasswd創建一個新用戶
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/htpasswd rzy
#添加管理員用戶,可以在兩個路徑之間加-c,表示新建檔案洗掉源檔案
New password: #輸入密碼
Re-type new password: #再次輸入密碼
Adding password for user rzy #表示創建成功
[root@rzy httpd-2.2.17]# cat /usr/local/httpd/conf/htpasswd #查看創建的新檔案,發現已經成功創建
rzy:MJOfj2b/2Gd72
[root@rzy conf]# /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/htpasswd aaa #再次創建一個新的用戶
New password:
Re-type new password:
Adding password for user aaa
[root@rzy conf]# cat /usr/local/httpd/conf/htpasswd #檢查是否創建成功
rzy:MJOfj2b/2Gd72
aaa:/GzCGxxay0u96
******(4)修改組態檔
[root@rzy conf]# vim /usr/local/httpd/conf/htgroups #創建新的組組態檔
rzygroup: rzy #寫入,表示這個組里有rzy,多個用戶用空格隔開
[root@rzy conf]# vim /usr/local/httpd/conf/httpd.conf #修改主組態檔
,,,,,,
131 <Directory "/usr/local/httpd/htdocs">
132 Options None
133 AllowOverride None
134 Order allow,deny
135 Allow from all
136 AuthType Basic #定義認證的型別為Basic
137 AuthName "aaaaaaaaa" #提示短語
138 AuthBasicProvider file #提供認證者為file,表示從檔案中讀取
139 AuthUserFile /usr/local/httpd/conf/htpasswd #指定認證用戶檔案
140 AuthGroupFile /usr/local/httpd/conf/htgroups #指定認證用戶組檔案
141 Require group rzygroup #設定允許訪問的用戶或者組,想要要所有用戶都可以訪問則改成 require vaild-user,單個用戶改成require user 即可
142
143 </Directory>
144
,,,,,,
#保存退出
[root@rzy conf]# /usr/local/httpd/bin/apachectl start #開啟httpd服務
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName #這個是因為沒有設定域名
[root@rzy conf]# netstat -anput | grep 80 #檢查埠
tcp6 0 0 :::80 :::* LISTEN 66789/httpd
-測驗


測驗aaa用戶,發現只有在rzygroup組里的用戶才可以訪問


八、Apache優化之日志分割
(1)作用
隨著網站的訪問量的增加,訪問日志中的資訊會越來愈多,apache默認的訪問日志access_log的體積會越來越大,資訊都放在一個檔案中,不管是查看還是分析都非常麻煩,所以需要把日志進行以天、月等時間進行分割
(2)優化apache日志分割
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
apache的安裝以及系統基礎配置(略)
-方式一
利用apache自帶的日志輪詢程式rotatelogs日志分割
[root@rzy httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf #修改組態檔
,,,,,,
214 #
215 CustomLog "|/usr/local/httpd/bin/rotatelogs -l /usr/local/httpd/logs/access_%Y%m%d%H%M%S.log 10" common
#-l是小寫的L表示local time當前時間,10表示10秒,這里是為了看出效果,一般都以一天86400來指定日志分割頻率,access后面得分別表示年、月、日、時、分、秒
216
,,,,,,
#保存退出
[root@rzy httpd-2.2.17]# /usr/local/httpd/bin/apachectl restart #重啟服務
#使用瀏覽器訪問web服務器并且多次重繪,然后查看logs目錄
[root@rzy httpd-2.2.17]# cd /usr/local/httpd/logs/
[root@rzy logs]# ll
總用量 20
-rw-r--r-- 1 root root 2010 4月 16 00:52 access_20210416Apr5240.log #這個就是分割的日志
-rw-r--r-- 1 root root 453 4月 16 00:46 access_log
-rw-r--r-- 1 root root 7011 4月 16 00:52 error_log
-rw-r--r-- 1 root root 7 4月 16 00:51 httpd.pid
[root@rzy logs]# date
2021年 04月 16日 星期五 00:53:19 CST
-方式二
利用一個發展已經比較成熟的日志輪詢工具cronolog,比較推薦使用
#上傳cronolog的原始碼包進行配置編譯安裝
[root@rzy ~]# ll
總用量 6580
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 133591 4月 16 00:58 cronolog-1.6.2.tar.gz
-rw-r--r-- 1 root root 6597991 4月 16 00:03 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf cronolog-1.6.2.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/cronolog-1.6.2/
[root@rzy cronolog-1.6.2]# ./configure && make && make install
[root@rzy cronolog-1.6.2]# cd
[root@rzy ~]# which cronolog #查看cronolog的命令路徑,待會修改組態檔會使用
/usr/local/sbin/cronolog
[root@rzy ~]# vim /usr/local/httpd/conf/httpd.conf #修改組態檔
,,,,,,
214 #
215 CustomLog "|/usr/local/sbin/cronolog /usr/local/httpd/logs/access_%Y%m%d.log " common #cronolog默認的分割日志的時間間隔就是一天
216
217 #
,,,,,,
#保存退出
[root@rzy ~]# /usr/local/httpd/bin/apachectl restart #重啟httpd
#使用瀏覽器再次訪問并且多次重繪,可以先把方式一分割的日志洗掉
[root@rzy ~]# cd /usr/local/httpd/logs/
[root@rzy logs]# date
2021年 04月 16日 星期五 01:03:55 CST
[root@rzy logs]# date -s 20210417 #修改時間
2021年 04月 17日 星期六 00:00:00 CST
[root@rzy logs]# ll #查看目錄,發現多了一個日志
總用量 24
-rw-r--r-- 1 root root 2279 4月 16 01:03 access_20210416.log
-rw-r--r-- 1 root root 453 4月 16 00:46 access_log
-rw-r--r-- 1 root root 9649 4月 16 01:03 error_log
-rw-r--r-- 1 root root 7 4月 16 01:02 httpd.pid
-方式三
利用腳本進行分割,不推薦使用(略)
(3)日志合并
可以將每個服務器每天的日志檔案通過rsync下載到專門進行訪問統計分析的服務器上進行合并,即合并多個服務器的日志檔案這樣既方便了查看也統一了資料
[root@rzy logs]# ll
總用量 20
-rw-r--r-- 1 root root 1195 4月 17 00:15 access_20210417.log
-rw-r--r-- 1 root root 906 4月 18 00:00 access_20210418.log
-rw-r--r-- 1 root root 374 4月 19 00:00 access_20210419.log
-rw-r--r-- 1 root root 0 4月 17 00:05 access_log
-rw-r--r-- 1 root root 1453 4月 19 00:00 error_log
-rw-r--r-- 1 root root 6 4月 17 00:14 httpd.pid
#要想把這三個分割后的日志變成一個access_202104.log
[root@rzy logs]# sort -k 4 -o access_202104.log access_20210417.log access_20210418.log access_20210419.log
[root@rzy logs]# ll
總用量 24
-rw-r--r-- 1 root root 1195 4月 17 00:15 access_20210417.log
-rw-r--r-- 1 root root 906 4月 18 00:00 access_20210418.log
-rw-r--r-- 1 root root 374 4月 19 00:00 access_20210419.log
-rw-r--r-- 1 root root 2475 4月 19 00:01 access_202104.log
-rw-r--r-- 1 root root 0 4月 17 00:05 access_log
-rw-r--r-- 1 root root 1453 4月 19 00:00 error_log
-rw-r--r-- 1 root root 6 4月 17 00:14 httpd.pid

九、Apache實驗虛擬主機
(1)作用
在同一臺服務器中部署多個網站站點,節省資源
(2)實作的三種方式
- 不同ip,相同埠,不同域名:基于IP
- 相同ip,不同埠,相同域名:基于埠
- 相同ip,相同埠,不同域名:基于域名
(3)配置apache虛擬主機
-實驗環境
| 系統版本 | ip地址 | 主機名 | 需要軟體 | 域名 |
|---|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz | www.rzy.com |
-不同ip,相同埠,不同域名
******(1)基于ip地址的虛擬主機需要添加網卡,配置網卡地址(同網段)
[root@rzy ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:30:54:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.100.202/24 brd 192.168.100.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::34f4:cad:16ae:5b4d/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:30:54:96 brd ff:ff:ff:ff:ff:ff
inet6 fe80::e6e9:552d:5efd:87ac/64 scope link
valid_lft forever preferred_lft forever
[root@rzy ~]# cd /etc/sysconfig/network-scripts/
[root@rzy network-scripts]# cp ifcfg-ens32 ifcfg-ens34
[root@rzy network-scripts]# sed -i 's/192.168.100.202/192.168.100.203/g' ifcfg-ens34
[root@rzy network-scripts]# sed -i 's/ens32/ens34/g' ifcfg-ens34
[root@rzy network-scripts]# sed -i '/^UUID/d' ifcfg-ens34
[root@rzy network-scripts]# cat ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.203
PREFIX=24
IPV6_PRIVACY=no
[root@rzy network-scripts]# systemctl restart network
[root@rzy network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:30:54:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.100.202/24 brd 192.168.100.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::34f4:cad:16ae:5b4d/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:30:54:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.203/24 brd 192.168.100.255 scope global ens34
valid_lft forever preferred_lft forever
inet6 fe80::c237:66a8:bd78:82e5/64 scope link
valid_lft forever preferred_lft forever
******(2)修改組態檔
[root@rzy network-scripts]# vim /usr/local/httpd/conf/httpd.conf #修改主組態檔
,,,,,,
39 #Listen 12.34.56.78:80
40 Listen 192.168.100.202:80 #添加兩個網卡的地址,埠相同
41 Listen 192.168.100.203:80
42
,,,,,,
389 # Virtual hosts
390 Include conf/extra/httpd-vhosts.conf #去掉注釋
391
,,,,,,
#保存退出
[root@rzy network-scripts]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #修改區域組態檔
,,,,,,
18 #
19 NameVirtualHost 192.168.100.202:80 #添加兩快網卡的ip地址,埠號相同
20 NameVirtualHost 192.168.100.203:80
21
,,,,,,
28 <VirtualHost 192.168.100.202:80> #指定ip和埠
29 ServerAdmin webmaster@dummy-host.example.com #郵箱,沒有需求的話不用修改
30 DocumentRoot "/usr/local/httpd/htdocs/aaa/" #指定網頁目錄
31 ServerName www.aaa.com #域名
32 ServerAlias www.dummy-host.example.com #別名,可以洗掉,或者重新寫一個
33 ErrorLog "logs/www.aaa.com-error_log" #錯誤日志名稱,路徑
34 CustomLog "logs/www.aaa.com-access_log" common #訪問日志名稱,路徑
35 </VirtualHost>
36
37 <VirtualHost 192.168.100.203:80>
38 ServerAdmin webmaster@dummy-host2.example.com
39 DocumentRoot "/usr/local/httpd/htdocs/bbb/"
40 ServerName www.bbb.com
41 ErrorLog "logs/www.bbb.com-error_log"
42 CustomLog "logs/www.bbb.com-access_log" common
43 </VirtualHost>
44
,,,,,,
#保存退出
******(3)寫兩個虛擬主機的網頁
[root@rzy network-scripts]# cd /usr/local/httpd/htdocs/
[root@rzy htdocs]# ll
總用量 4
-rw-r--r-- 1 root root 44 11月 21 2004 index.html
[root@rzy htdocs]# mkdir aaa
[root@rzy htdocs]# mkdir bbb
[root@rzy htdocs]# echo 'aaaaaaaaaaa' > aaa/index.html
[root@rzy htdocs]# echo 'bbbbbbbbbbb' > bbb/index.html
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName #這個是因為沒有修改域名
[root@rzy htdocs]# netstat -anpt | grep 80 #要有兩個httpd才對
tcp 0 0 192.168.100.203:80 0.0.0.0:* LISTEN 42359/httpd
tcp 0 0 192.168.100.202:80 0.0.0.0:* LISTEN 42359/httpd
測驗:


-相同ip,不同埠,相同域名
******(1)配置基于埠的虛擬主機,可以先把上一個的網卡關閉即可
[root@rzy htdocs]# ifdown ens34
成功斷開設備 'ens34',
******(2)只需要修改組態檔中的一些配置即可
[root@rzy htdocs]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
39 #Listen 12.34.56.78:80
40 Listen 192.168.100.202:80 #ip相同,埠不一樣
41 Listen 192.168.100.202:8080
42
,,,,,,
389 # Virtual hosts
390 Include conf/extra/httpd-vhosts.conf #去掉注釋
391
#保存退出
******(3)修改區域組態檔
[root@rzy htdocs]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
,,,,,,
18 #
19 NameVirtualHost 192.168.100.202:80 #修改相同ip不同埠
20 NameVirtualHost 192.168.100.202:8080
21
,,,,,,
28 <VirtualHost 192.168.100.202:80>
29 ServerAdmin webmaster@dummy-host.example.com
30 DocumentRoot "/usr/local/httpd/htdocs/aaa/"
31 ServerName www.aaa.com
32 ErrorLog "logs/www.aaa.com-error_log"
33 CustomLog "logs/www.aaa.com-access_log" common
34 </VirtualHost>
35
36 <VirtualHost 192.168.100.202:8080>
37 ServerAdmin webmaster@dummy-host2.example.com
38 DocumentRoot "/usr/local/httpd/htdocs/bbb/"
39 ServerName www.bbb.com
40 ErrorLog "logs/www.bbb.com-error_log"
41 CustomLog "logs/www.bbb.com-access_log" common
42 </VirtualHost>
,,,,,,
#保存退出
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl restart #重新啟動
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName
[root@rzy htdocs]# netstat -anpt | grep 80 #查看埠,有相同ip的不同埠即可,203的沒有listen監聽其實就是關閉的
tcp 0 0 192.168.100.202:8080 0.0.0.0:* LISTEN 42359/httpd
tcp 0 0 192.168.100.202:80 0.0.0.0:* LISTEN 42359/httpd
tcp 0 1 192.168.100.203:80 192.168.100.230:56461 FIN_WAIT1 -
tcp 0 1 192.168.100.203:80 192.168.100.230:56462 FIN_WAIT1 -
測驗:


-相同ip,相同埠,不同域名(使用最多)
******(1)修改區域組態檔和主組態檔即可
[root@rzy htdocs]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
40 Listen 192.168.100.202:80 #剩下一個即可
41
,,,,,,
#保存退出
[root@rzy htdocs]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
,,,,,,
18 #
19 NameVirtualHost 192.168.100.202:80
20 #NameVirtualHost 192.168.100.202:8080 #加注釋不生效
21
22 #
,,,,,,
28 <VirtualHost 192.168.100.202:80>
29 ServerAdmin webmaster@dummy-host.example.com
30 DocumentRoot "/usr/local/httpd/htdocs/aaa/"
31 ServerName www.aaa.com #域名不相同就
32 ErrorLog "logs/www.aaa.com-error_log"
33 CustomLog "logs/www.aaa.com-access_log" common
34 </VirtualHost>
35
36 <VirtualHost 192.168.100.202:80>
37 ServerAdmin webmaster@dummy-host2.example.com
38 DocumentRoot "/usr/local/httpd/htdocs/bbb/"
39 ServerName www.bbb.com
40 ErrorLog "logs/www.bbb.com-error_log"
41 CustomLog "logs/www.bbb.com-access_log" common
42 </VirtualHost>
,,,,,,
#保存退出
[root@rzy htdocs]# /usr/local/httpd/bin/apachectl restart #重啟服務
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName
[root@rzy htdocs]# netstat -anpt | grep 80 #監聽埠
tcp 0 0 192.168.100.202:80 0.0.0.0:* LISTEN 42359/httpd
測驗:
修改本地hosts檔案


十、統計訪問量
(1)什么是PV、UV和VV
-
PV:是指頁面點擊量和瀏覽量
-
UV:指訪問的客戶端
-
VV:指統計所有訪客一天內訪問網站的次數
-
9PV和UV一般都是指公司的
PV肯定是大于UV的!!!
(2)PV和VV的區別
例如: 小王中午打開了百度,訪問了三個頁面,下午打開了百度,訪問了兩個頁面,則PV數+5,VV+2
(3)統計PV和UV的命令
******(1)根據訪問ip統計UV訪問的客戶端的總數
[root@rzy logs]# awk '{print $1}' access_202104.log | sort | uniq -c | wc -l
1
******(2)統計訪問URL的點擊量和瀏覽量
[root@rzy logs]# awk '{print $7}' access_202104.log | wc -l
33
******(3)查詢訪問最多的URL,即訪問最多的資源
[root@rzy logs]# awk '{print $7}' access_202104.log |sort | uniq -c | sort -n -k1 -r | more
26 /
7 /favicon.ico
******(4)查詢訪問最多的ip地址
[root@rzy logs]# awk '{print $1}' access_202104.log | sort -rn | uniq -c | sort -rn | head -1
33 192.168.100.230
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280582.html
標籤:其他
