您好,登錄后才能下訂單哦!
CentOS 6:httpd-2.2
程序環境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服務腳本:
/etc/rc.d/init.d/httpd
腳本配置文件:/etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件:
/var/log/httpd:
access_log:訪問日志
error_log:錯誤日志
站點文檔:
/var/www/html(頁面文件)
模塊文件路徑:
/usr/lib64/httpd/modules
服務控制和啟動:
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd
常用配置:
1、修改監聽的IP和PORT
# vim /etc/httpd/conf/httpd.conf
(1) 省略IP表示為0.0.0.0;
(2) Listen指令可重復出現多次;
Listen 80
Listen 8080
(3) 修改監聽socket,重啟服務進程方可生效;
注意:改配置文件需要重啟服務 service httpd restart
netstat -tnlp(查看當前啟動的服務所用的端口)
2、持久連續
tcp連續建立后,每個資源獲取完成后不全斷開連接,而是繼續等待其它資源請求的進行;
副作用:對并發訪問量較大的服務器,長連接機制會使得后續某些請求無法得到正常 響應;
折衷:使用較短的持久連接時長,以及較少的請求數量;
KeepAlive On|Off(是否開啟持久連續)
KeepAliveTimeout 15(時間限制)
MaxKeepAliveRequests 100(數量限制)
# vim /etc/httpd/conf/httpd.conf
重啟服務 service httpd restart
3、MPM
httpd-2.2不支持同時編譯多個MPM模塊,所以只能編譯選定要使用的那個;
CentOS 6的rpm包為此專門提供了三個應用程序文件:
httpd(prefork), httpd.worker, httpd.event
查看現在使用的是哪個程序文件的方法啟動了多少進程:
# ps aux | grep httpd
第一行為主控進程(管理進程的創建和銷毀)
默認使用的為/usr/sbin/httpd,其為prefork的MPM模塊 ;
查看httpd程序的模塊列表:
查看靜態編譯的模塊:
# httpd -l
查看靜態編譯及動態編譯的模塊:
# httpd -M
更換使用httpd程序,以支持其它MPM機制;
# vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.{worker,event}
注意:重啟服務進程方可生效
# service httpd restart
MPM配置:
# vim /etc/httpd/conf/httpd.conf
prefork的配置
<IfModule prefork.c>(如果prefork存在)
StartServers 8(啟動多少空閑進程)
MinSpareServers 5(最少空閑進程數)
MaxSpareServers 20(最大空閑進程)
ServerLimit 256(允許MaxClients最大啟動的進程數量)
MaxClients 256(最大允許啟動的進程數量)
MaxRequestsPerChild 4000(每個進程最多可處理多少請求,處理了4000個就要銷毀此進程)
</IfModule>
worker的配置:
<IfModule worker.c>
StartServers 4(啟動多少空閑進程)
MaxClients 300(最大允許啟動的進程數量)
MinSpareThreads 25(最少空閑進程數)
MaxSpareThreads 75(最多空閑進程數)
ThreadsPerChild 25(每個主進程最大可生成多少線程)
MaxRequestsPerChild 0(每個進程可處理無上限的請求)
</IfModule>
PV,UV
PV:Page View(頁面瀏覽量)
UV: User View(用戶瀏覽量)
4、DSO(動態共享模塊)
配置指定實現模塊加載
LoadModule <mod_name> <mod_path>(模塊文件路徑)
模塊文件路徑可使用相對路徑:
相對于ServerRoot(默認/etc/httpd)
5、 定義訪問主文檔頁面路徑
# vim /etc/httpd/conf/httpd.conf
DocumentRoot " "
文檔路徑映射:
DoucmentRoot指向的路徑為URL路徑的起始位置
其相當于站點URL的根路徑;
注意:重啟服務進程方可生效
# service httpd restart
6、站點訪問控制常見機制
# vim /etc/httpd/conf/httpd.conf
可基于兩種機制指明對哪些資源進行何種訪問控制
文件系統路徑:
<Directory "">
...
</Directory>
<File "">
...
</File>
<FileMatch "PATTERN">
...
</FileMatch>
URL路徑:
<Location "">
...
</Location>
<LocationMatch "">
...
</LocationMatch>
<Directory>中“基于源地址”實現訪問控制:
(1) Options
后跟1個或多個以空白字符分隔的“選項”列表;
Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源文件時,返回索引列表給用戶;(建議關掉)
FollowSymLinks:允許跟蹤符號鏈接文件所指向的源文件(建議關掉);
None:一個也沒有
All:全部
建議改為:Options None
(2) AllowOverride(允許覆蓋)
與訪問控制相關的哪些指令可以放在.htaccess文件(每個目錄下都可以有一個)中;
All: 全部
None:一個也沒有
建議改為:AllowOverride None
(3) order和allow、deny拒絕
order:定義生效次序;寫在后面的表示默認法則;
Allow from來源地址, Deny from來源地址
來源地址:
IP
NetAddr:(網絡地址)
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
1、e.g.設置為僅允許172.16網段的主機訪問:Allow from 172.16
2、e.g.Deny from 172.16.100.88
Allow from 172.16
(僅允許172.16網段的主機訪問,但 172.16.100.88這臺不能訪問)
7、定義站點主頁面:
# vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html index.html.var(先找index.html沒有找到,就找index.html.var)
8、定義路徑別名
# vim /etc/httpd/conf/httpd.conf
格式:
Alias /URL/ "/PATH/TO/SOMEDIR/"
DocumentRoot "/www/htdocs"
http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
/www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm
Alias /download/ "/rpms/pub/"
http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
/rpms/pub/bash-4.4.2-3.el6.x86_64.rpm
http://www.magedu.com/p_w_picpaths/logo.png
/www/htdocs/p_w_picpaths/logo.png
9、設定默認字符集(為防止“語言”不通,響應的頁面看不懂。)
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
10、日志設定
日志類型:訪問日志 和 錯誤日志
錯誤日志
ErrorLog logs/error_log
LogLevel warn(警告)
錯誤級別: debug(所有錯誤的都記錄下來), info(比debug更高級), notice(引起關注), warn(警告), error(發生錯誤), crit(級別很嚴重), alert(紅色警戒), emerg(緊急事務).
訪問日志:查看訪問日志:#tail /var/log/httpd/access_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined
LogFormat format strings:(LogFormat格式符意思)
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
%h:客戶端IP地址;
%l:客戶端用戶名, 通常為一個減號(“-”);
%u:客戶端用戶 (from auth; may be bogus if return status (%s) is 401);非為登錄訪問時,其為一個減號;
%t:服務器收到請求時的時間;
%r:First line of request,即表示請求報文的首行;記錄了此次請求的“方法”、“URL”以及協議版本;
%>s:響應狀態碼;
%b:響應報文的大小,單位是字節;不包括響應報文的http首部;
%{Referer}i:請求報文中首部“referer”的值;referer即從哪個頁面中的超鏈接跳轉至當前頁面的;
%{User-Agent}i:請求報文中首部“User-Agent”的值;即發出請求的應用程序;
11、基于用戶的訪問控制
認證方式有兩種:
basic:明文
digest:消息摘要認證
此處使用 basic認證。
# vim /etc/httpd/conf/httpd.conf
basic認證配置示例:
定義安全域
<Directory "">(定義哪個頁面資源訪問時需要認證)
Options None
AllowOverride None
AuthType Basic(認證類型)
AuthName "String“(認證提示符)
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"(認證時的賬號密碼所在的路徑)
Require user username1 username2 ...(指明可登陸的用戶;允許賬號文件中的所有用戶登錄訪問:Require valid-user)
</Directory>
創建賬號密碼文件AuthUserFile :
htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
-c:自動創建此處指定的文件,因此,僅應該在此文件不存在時使用;
-m:md5格式加密
-s: sha格式加密
-D:刪除指定用戶
e.g. htpasswd -c -m /etc/httpd/conf/.htpasswd tianxudong
注意:首次添加用戶時使用-c,之后都不能使用,否則會覆蓋里面原有的用戶信息。
基于組賬號進行認證;
# vim /etc/httpd/conf/httpd.conf
相比定義用戶訪問控制,多加一個組認證的文件。
AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
Require group grpname1 grpname2 ..
創建用戶賬號和組賬號文件;
#vim /etc/httpd/conf/.htgroup
mygrp: tianxidong
組文件:每一行定義一個組
GRP_NAME: username1 username2 ...
12、虛擬主機
有三種實現方案:
基于ip:
為每個虛擬主機準備至少一個ip地址;
基于port:
為每個虛擬主機使用至少一個獨立的port;
基于FQDN:
為每個虛擬主機使用至少一個FQDN;
注意:一般虛擬機不要與中心主機混用;因此,要使用虛擬主機,得先禁用'main'主機;
禁用方法:注釋中心主機的DocumentRoot指令即可;
虛擬主機的配置方法:
<VirtualHost IP:PORT>(虛擬主機所監聽的端口地址)
ServerName FQDN(若沒有用name標示,則無需寫FQDN)
DocumentRoot ""(虛擬主機的站點文件路徑)
</VirtualHost>
其它可用指令:
ServerAlias:虛擬主機的別名;可多次使用;
ErrorLog:(此虛擬主機專用的錯誤日志)
CustomLog:(此虛擬主機專用的訪問日志)
<Directory "">(基于路徑對資源做訪問控制)
...
</Directory>
Alias(路徑別名)
...
e.g. 不同IP訪問不同站點:
注釋掉主配置文件的DocumentRoot
編譯一個文件:
# vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.168.110.6:80>
ServiceName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.168.110.7:80>
ServiceName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.168.110.8:80>
ServiceName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
語法檢查:httpd -t
重啟服務:service httpd reload
e.g. 基于端口的虛擬主機:
首先添加3個端口:可參考上面的常用配置 1 。
語法檢查:httpd -t
編譯一個文件:
# vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:808>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:8080>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
語法檢查:httpd -t
重啟服務:service httpd reload
e.g. 基于FQDN的虛擬主機:(端口一樣、地址一眼樣)
NameVirtualHost 172.16.100.6:80(基于FQDN的虛擬主機需要加一個專門的指令,Centos7不需要此指令)
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:80>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:80>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
語法檢查:httpd -t
重啟服務:service httpd reload
13、status頁面(查看運行中的進程詳細情況,應加以訪問認證)
LoadModule status_module modules/mod_status.so
編輯主配置文件,將以下幾行啟用。
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16(建議設置為只允許某臺主機訪問)
</Location>
14、使用mod_deflate模塊壓縮頁面優化傳輸速度
適用場景:
(1) 節約帶寬,額外消耗CPU;同時,可能有些較老瀏覽器不支持;
(2) 壓縮適于壓縮的資源,例如文件文件;
# vim /etc/httpd/conf/httpd.conf
語法檢查:httpd -t
重啟服務:service httpd reload
CentOS 6上編譯安裝httpd2.4版本:
CentOS 6默認apr和 apr-util是1.39版的,而httpd2.4,需要 apr和 apr-util 是1.4版本以上的。
可以去 apr.apache.org官網下載1.4版本的。
開發環境包組:Development Tools, Server Platform Development
開發程序包:pcre-devel
先關掉httpd服務不要開機自動啟動
# service httpd stop
# chkconfig httpd off
編譯安裝步驟:
(1) apr-1.4+
# ./configure --prefix=/usr/local/apr
# make && make install
(2) apr-util-1.4+
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
(3) httpd-2.4
# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
# make && make install
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。