1. 程式人生 > >Apache配置與應用

Apache配置與應用

                                                                                 apache優化

 

1、更改apache的預設使用者

通過更改apache的預設使用者,可以提升apache的安全性。這樣,即使apache服務被攻破,黑客拿到apache普通使用者也不會對系統和其他應用造成破壞。這裡建立的apache使用者,將用於對子程序和執行緒的控制。

 

 useradd -M -s /sbin/nologin apache 建立apache使用者

 

編輯apache配置檔案,修改預設的使用者。

 

vim /usr/local/apache/conf/httpd.conf

 

User apache #更改預設的daemon使用者為apache使用者

 

Group apache #更改預設的daemon使用者為apache使用者

 

 

 

2、Apache連線保持(keepalive)

在Apache的httpd.conf中,KeepAlive指的是保持連線活躍,類似於Mysql的永久連線。換一句話說,如果將KeepAlive設定為On,那麼來自同一客戶端的請求就不需要再一次連線,避免每次請求都要新建一個連線而加重伺服器的負擔。

 KeepAlive的連線活躍時間當然是受KeepAliveTimeOut限制的。如果第二次請求和第一次請求之間超過KeepAliveTimeOut的時間的話,第一次連線就會中斷,再新建第二個連線。  

 

所以,一般情況下,圖片較多的網站應該把KeepAlive設為On。但是KeepAliveTimeOut應該設定為多少秒就是一個值得討論的問題了。  

 

如果KeepAliveTimeOut設定的時間過短,例如設定為1秒,那麼APACHE就會頻繁的建立新連線,當然會耗費不少的資源;反過來,如果KeepAliveTimeOut設定的時間過長,例如設定為300秒,那麼APACHE中肯定有很多無用的連線會佔用伺服器的資源,也不是一件好事。  

 

所以,到底要把KeepAliveTimeOut設定為多少,要看網站的流量、伺服器的配置而定。

 

如何去設定開啟關閉連線保持?操作如下:

vi /usr/local/httpd/conf/extra/httpd-default.conf

KeepAlive On    //開啟連線保持功能

MaxKeepAliveRequests 100  //一次連線最多請求100個檔案

KeepAliveTimeout 5   //單位是秒

 

3、配置訪問控制

 

 

vi /usr/local/httpd/conf/httpd.conf    //對htdocs目錄設定控制,直接新增兩行。

找到/usr/local/httpd/htdocs

Order deny,allow    //黑名單,先拒絕後允許

 

Deny from 192.168.80.0/24

拒絕192.168.80.1,允許其它所有

 

Require  all  granted    允許所有來源訪問

Require  all  deny         拒絕所有來源訪問

 

Require   local    僅本機訪問

 

基於IP地址的訪問控制

Require ip 10 172.20 192.168.2    

允許特定IP或IP段,多個IP或IP段間使用空格分隔

 

基於主機名的訪問控制

Require host example.org

Require host .net example.edu

 

 

 

 

 

4、配置認證訪問:

 vi conf.d/vdir.conf

AuthName "kgc.cn"

AuthType Basic

AuthUserFile /usr/local/httpd/user

require valid-user

 

________________________________________________

注:

 AuthName:定義提示資訊,使用者訪問時提示資訊會出現在認證的對話方塊中

AuthType:定義認證型別,basic 基本認證

AuthUserFile:定義包含使用者名稱和密碼的文字檔案,每行一對

AuthGroupFile:定義包含使用者組和組成員的文字檔案。組成員之間用空格分開,如:group1:user1 user2

require命令:定義哪些使用者或組才能被授權訪問

  require user user1 user2 (只有使用者user1和user2可以訪問)

  requires groups group1 (只有group1中的成員可以訪問)  

    require valid-user (在AuthUserFile指定的檔案中的所有使用者都可以訪問

________________________________________________

 

 

apachectl -t

 

htpasswd -c /usr/local/httpd/user test

//新建資料檔案/usr/local/httpd/user,其中包含一個名為test的使用者資訊

第一次新增使用者時member.txt檔案不在,需要用-c選項建立檔案

 

htpasswd /usr/local/httpd/.user jack

//向/usr/local/httpd/user資料檔案中新增一個新使用者jack

 

cat /usr/local/httpd/.user   //確認使用者資料檔案

 

service httpd restart

 

此時,訪問需要使用者名稱和密碼了,輸入我們設定的使用者和密碼即可進入

 

 

 

 

5、配置日誌分割

 編輯Apache的主配置檔案httpd.conf,更改內容如下:

註釋掉如下兩行

ErrorLog logs/error_log

CustomLog logs/access_log common

然後新增如下兩行

ErrorLog "|/usr/local/apache/bin/rotatelogs  -l /usr/local/apache/logs/errorlog.%Y-%m-%d-%H_%M_%S.log 86400"

CustomLog "|/usr/local/httpd/bin/rotatelogs -l logs/accesslog.%Y-%m-%d-%H_%M_%S.log 86400" common

//通過管道把日誌交給rotatelogs工具 -l指使用本地時間 86400表示日誌分隔的間隔為1天,單位是秒。

 

或者:

ErrorLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/errorlog.%Y-%m-%d-%H_%M_%S 2M +480"

CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/accesslog.%Y-%m-%d-%H:%M:%S 2M +480" common

 

儲存退出

[[email protected] logs]# apachectl -t

 

注:

errorlog.%Y-%m-%d-%H_%M_%S為生成日誌的格式,類似於這樣:errorlog.2018-10-11-17_00_00 ,以年月日時分秒為單位的

 2M 為日誌的大小,即為日誌達到多大後生成新的日誌檔案,支援的單位為K,M,G,本處為2M。

+480 為時差,檔案的時間為英國時間,中國的時差要比英國多8個小時也就是480分鐘,所以要加上480分鐘。

 

 

rotatelogs語法說明:

rotatelogs   [-l]   日誌檔名(絕對路徑)     日誌偏移量(時間)  或者  大小

 

-l:使用本地時間代替GMT時間作為時間基準

GMT時間就是格林威治時間(世界時),是指格林尼治所在地的標準時間,英國倫敦

例子:

 每天生成一個錯誤日誌檔案

ErrorLog "|bin/rotatelogs -l logs/error-%Y-%m-%d.log 86400"

 

CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common

此配置會建立檔案"/var/logs/logfile.nnnn",其中的nnnn是名義上的日誌啟動時的系統時間(此時間總是滾動時間的倍數,可以用於cron指令碼的同步)。在滾動時間到達時(在此例中是24小時以後),會產生一個新的日誌。

 

CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common

此配置會在日誌檔案大小增長到5兆位元組時滾動該日誌。

ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"

此配置會在錯誤日誌大小增長到5兆位元組時滾動該日誌,日誌檔名字尾會按照如下格式建立:errorlog.YYYY-mm-dd-HH_MM_SS 。

 

 

-----以下使用cronolog進行日誌分隔--------

tar xzvf cronolog-1.6.2.tar.gz

cd cronolog-1.6.2

./configure && make && make install

 

which cronolog

 

LogFormat "%h %l %u %t \"%r\" %>s %b" common //定義日誌的格式

 

-----------只要把工具的路徑替換就行了----------------

ErrorLog "|/usr/local/sbin/cronolog -l logs/www.bc.com-error_%Y%m%d.log 86400"

 

CustomLog "|/usr/local/sbin/cronolog -l logs/www.bc.com_access_%Y%m%d.log 86400" common

 

apachectl -t

 

例子:

按天輪詢(生產環境常見用法,推薦使用):

 

CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log" combined

 

按小時輪詢(生產環境較常見用法):

CustomLog "|/usr/local/sbin/cronolog /app/logs /access_www_ %Y%m%d%H.log" combined

 

 

 

 

6、AWstats日誌分析系統

 apachectl -D DUMP_MODULES | grep cgi   //確認是否載入了cgi模組

ls /usr/local/httpd/modules/ | grep cgi    ////確認是否編譯過cgi模組

 

vi /usr/local/httpd/conf/httpd.conf

LoadModule cgid_module modules/mod_cgid.so

LoadModule cgi_module modules/mod_cgi.so

 

 tar xzvf awstats-7.6.tar.gz -C /opt/

mv /opt/awstats-7.6 /usr/local/awstats

 

-------AWstats可以同時分析多個站點的資料---

vi /etc/hosts

192.168.80.100  www.aa.com

 

vi /etc/httpd.conf

ServerName www.aa.com    //定義主機名

cd /usr/local/awstats/tools/

./awstats_configure.pl

 

 

 

 

 

 

http://localhost/awstats/awstats.pl?config=www.helo.com

----訪問日誌的網址-----

 

http://IP/awstats/awstats.pl?config=www.aa.com //先記錄下來,可以通過IP訪問

 

service httpd restart //重啟讓日誌格式生效

 

vi /etc/awstats/awstats.www.aa.com.conf //修改程式的主配置檔案

 

LogFile="/usr/local/httpd/logs/access_log" //修改日誌檔案位置,第50行

 

DirData="/var/lib/awstats" //220行 手動建立每次抓取的資料存放位置

 

mkdir /var/lib/awstats

 

----如果之前修改過日誌格式需要清空一下------

cd /usr/local/httpd/logs/

rm -f *log

service httpd restart //重新生成日誌檔案

 

cd /usr/local/awstats/tools/

chmod +x awstats_updateall.pl

./awstats_updateall.pl  now //手動採集一次資料

 

crontab -e

 

*/5 * * * *  /usr/local/awstats/tools/awstats_updateall.pl now

 

crontab -l

service crond status

systemctl enable crond

systemctl list-unit-files | grep crond

 

------注意---需要檢查以下虛擬目錄授權----

vi /etc/httpd.conf

 

<Directory "/usr/local/awstats/wwwroot">

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

AuthName "kgc.cn"

AuthType Basic

AuthUserFile /usr/local/httpd/user

require valid-user

#Require all granted

</Directory>

 

service httpd restart

 

http://192.168.80.100/awstats/awstats.pl?config=www.aa.com  //訪問測試日誌系統工作情況

 

通過配置頁面自動跳轉優化統計頁面訪問

 cd /usr/local/httpd/htdocs/

 vi index.html

<html>

<head>

<meta http-equiv=refresh content="0;url=http://192.168.80.130/awstats/awstats.pl?co

nfig=www.lq.com">   //跳轉,當訪問192.168.80.130時,跳轉到分析系統中

</head>

<body></body>

</html>

注意:如果伺服器沒有做DNS服務的話,需在測試客戶端上設定hosts檔案才可使用域名訪問 vi /etc/hosts檔案