一:編譯安裝http2.4
1.下載httpd,apr,apr-util
wget http://apache.fayea.com//httpd/httpd-2.4.27.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.2.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.0.tar.gz
2.安裝
a.先安裝apr
[root@www ]# cd apr-1.6.2
[root@www apr-1.6.2]# ./configure --prefix=/usr/local/apr
[root@www apr-1.6.2]# make && make install
b.在安裝apr-util
[root@www ]# cd apr-util-1.6.0
[root@www apr-util-1.6.0]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@www apr-util-1.6.0]#make && make install
c.最後安裝htpd2.4
[root@www ]# cd httpd-2.4.27
[root@www httpd-2.4.27]# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --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-modeles=most --enable-mpms-shared=all --with-mpm=event
[root@www httpd-2.4.27]# make && make install
3.額外配置
1 導出頭文件
[root@www httpd]#ln -sv /usr/local/appache/include /usr/include/httpd
2 導出幫助文件
修改vim /etc/man.config
3 修改環境變量
編輯/etc/profile.d/httpd
export PATH=/usr/local/apache/bin:$PATH
4 編輯/etc/rc.d/init.d.httpd腳本,或者複製。
apachectl=/usr/local/httpd/bin/apachectl
httpd=/usr/local/httpd/bin/httpd
prog=httpd
pidfile=${PIDFILE-/var/run/httpd24.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
4.測試
5.配置文件詳解
a.監聽套接子
Listen [IP:]port
b.配置使用keep alive
KeepAlive {On|Off} 是否使用持久換保持
KeepAliveTimeout 2
MaxKeepAliveRequests 50
c.MPM配置
系統默認啓動的模塊可以通過#httpd -l來查看
系統默認啓動的I/O結構爲prefork結構
如果想啓動worker:
(1).使用service httpd.worker start來啓動
(2).或者配置腳本配置文件/etc/sysconfig/httpd 去掉註釋
如果向啓動event:方法一樣
<IfModule prefork.c> 如果mod_userdir.c文件存在,則是用以下的配置文件
StartServers 默認啓動工作進程數
MinSpareServers 最小空閒進程數
MaxSpareServers 最大空閒進程數
ServerLimit 最大活動狀態進程數
MaxClients 最大併發連接數
MaxRequestsPerChild 每個子進程在生命週期內所能服務的最大請求個數
</IfModule>
<IfModule worker.c>
StartServers
MaxClients
MinSpareThreads 最小空閒線程數
MaxSpareThreads
ThreadsPerChild 每個子進程可以生成的線程數
MaxRequestsPerChild 每個子進程所響應的最多個數,0表示不做限定
</IfModule>
d.DSO模塊的加載方式
LoadModule auth_basic_module /path
#httpd -M:列出已經裝載的DSO模塊
#httpd -l:列出非DSO模塊
e.配置站點根目錄
DocumentRoot /path
<Directory /path> 頁面訪問屬性
Options:
Indexs:缺少指定的默認頁面時,將站點的文件目錄展現給用戶。
FollowSymLinks:允許跟隨符號鏈接所指向的原文件
None:所有都啓用
All:所有否不啓用
ExecCGI:允許使用mod_cgi模塊執行CGI腳本
Includes:允許使用mod_incliude模塊實現服務器端包含(SSI)
MiltiViews:允許使用mod_negotiation實現內容協商
SymLinkIfOwnerMatch:在鏈接文件的屬主組和原始文件相同時,允許跟隨符號鏈接所指向的原文件
AllowOverride None
</Directory>
f.基於主機的訪問控制
<Directory />
Options
AllowOverride 表示一下內容是否被禁用,None表示不禁用
Order Allow,Deny 表示次序
Allow from ip/all
Deny
</Directory>
g.基於用戶的訪問控制
虛擬用戶:是在訪問某一文件而存在用戶,不具有系統的任何權限
認證類型:
basic:基本認證,帳號密碼進行明文發送
digest:摘要認證
配置方式:
<Directory "/path">
Options None
AllowOverride AuthConfig
AuthType Basic 認證類型,表示使用那一種認證機制
AuthName “” 認證機制的名稱
AuthUserFile /path 基於用戶認證時需要的文件
Require valid—user
</Directory>
使用此機制的用戶添加
#htpasswd -c -m 文件名 用戶
-c:創建文件 -m:添加用戶
基於用戶組的認證
將原有的配置中的AuthUserFile 替換成AuthGroupFile
在將原有配置中的Require valid-user 替換成Require group group_name
也可以將兩個放在一起,進行兩種訪問控制
h.定義默認頁面
DirectoryIndex index.php index.html
i.用戶目錄
如果期望讓每個用戶都可以創建個人站點:訪問格式
userdir disablied:表示禁止
userdir public_html:表示用戶家目錄名稱,注:用戶的家目錄的賦予運行httpd進程的用戶擁有執行權
j.配置日誌功能
定義訪問日誌的功能
Customlog ‘"/path" 日誌name
LogFormat "宏定義" 日誌名稱
宏定義:
%h:客戶端地址
%l:遠程登錄名,通常爲-
%u:認證時的遠程用戶名,沒有認證時通常僞-
%t:收到請求時的時間
%r:請求報文的起始行
%>s:響應狀態碼
%b:響應報文的長度,以字節僞單位
%{Header_name}i:記錄指定請求報文首部的內容
錯誤日誌ErroeLog "/path"
k.路徑別名
Alias 別名 "真路徑"
l.指定默認字符集
AddDefaultCharset utf-8
httpd配置(2)
m.腳本路徑別名
URL->>filesystem directory
CGI:通用網管接口
ScriptAliase /URL/ "/path/" path路僅下的文件全部執行完了之後將結果返還給用戶
詳細在/var/www/cgi-bin下
n.虛擬主機 (使用虛擬主機,要關閉主機)
一個物理服務器提供多個站點
基於不同的ip實現不同的虛擬
變化IP
基於不同的port實現不同虛擬主機
變化端口
基於不同的FQDN實現不同的虛擬主機
變化ServiceName 其中僞*.80
<VirtualHost *:80>
ServerName
DocumentRoot “”
<Directory "">
ServiceAliase
ServiceAdmin
</VirtualHost *:80>
o.頁面壓縮
在配置文件中使用#mod_deflate configuration模塊
SetOutputFilter DEFLATE //啓用DEFLATE
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE 文件類型(如text/html)
BrowserMatch ... #進行瀏覽器匹配,解決瀏覽器不支持壓縮頁面的解壓
</IfModule>
6.基於用戶認證訪問httpd服務器
配置方式:
<Directory "/var/www/html/base">
Options None
AllowOverride AuthConfig
AuthType Basic
AuthName “”
AuthUserFile /home/htpasswd
Require valid—user
</Directory>
創建/home/htpasswd文件
mkdir /home/htpasswd
使用htpasswd命令創建用戶和密碼
htpasswd -c -m /home/htpasswd user
New password:
Re-type new password:
測試結果:
![這裏寫圖片描述](https://img-blog.csdn.net/20170714182519280?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FpcnVpMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)