Linux自學筆記——httpd基本應用(3)
httpd2.4:
新特性:
1) MPM支持運行為DSO機制;以模塊形式按需加載;
2) event MPM生產環境可用;
3) 異步讀寫機制;
4) 支持每模塊及每目錄的單獨日誌級別定義;
5) 每個請求相關的專用配置;
6) 增強版的表達式分析式;
7) 毫秒級持久連接時長定義;
8) 基於FQDN的虛擬主機也不再需要NameVirutalHost指令;
9) 新指令,AllowOverrideList;
10)支持用戶自定義變量;
11)更低的內存消耗;
新模塊:
1) mod_proxy_fcgi
2) mod_proxy_scgi
3) mod_remoteip
安裝httpd2.4
依賴於apr-1.4+,apr-util-1.4+,[apr-iconv]
apr:apache portableruntime
centos 6:
默認:apr-1.3.9,apr-util-1.3.9;
安裝httpd2.4必須得手動編譯安裝;
開發環境包組:DevelopmentTools,Server Platform Development
開發程序包:pcre-devel
編譯安裝步驟:
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
自帶的服務控制腳本:apachectl
示例:在centos6上編譯安裝httpd2.4;
1. 準備開發環境包組:Development Tools,Server PlatformDevelopment;
2. 準備開發程序包:pcre-devel;
3. 準備apr-1.5.0,apr-util-1.5.3;
4. 編譯安裝步驟;
1) 編譯安裝apr-1.5.0;
a. 安裝前準備,解壓縮,進入目錄;
b. ./configue命令;
c. make && make install
2) 編譯安裝apr-util-1.5.3;
a. 安裝編譯前準備,解壓縮,並進入文件夾;
b. ./configue命令;
c. make && make install
3) 安裝編譯httpd-2.4
a. 安裝編譯前準備,準備httpd-2.4,解壓縮,進入文件夾;
b. ./configue命令;
c. make && make install
5. 內置工具apachectl開啟服務,測試80端口是否打開;
6. 配置文件在/etc/httpd24;
Centos7: httpd-2.4
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.modules.d/*.conf
/etc/httpd/conf.d/*.conf
配置應用:
1. 切換使用的MPM
編輯配置文件/etc/httpd/conf.modules.d/00-mpm.conf,啟動要啟用的MPM相關的LoadModule指令即可;
Note:啟用即去掉#即可,
2. 基於IP的訪問控制;
允許所有主機訪問:Require all granted
拒絕所有主機訪問:Require all deny
控制特定的ip訪問:
Require ip IPADDR:授權指定來源的ip訪問;
Require not ip IPADDR:拒絕;
控制特定的主機訪問:
Require host HOSTNAME:授權指定來源的主機訪問;
Require not host HOSTNAME:拒絕
HOSTNAME:
FQDN:特定主機;
Domain.tld:指定域名下的所有主機
示例:centos7主機:192.168.19.130;測試機192.168.19.134
<Requireall>
Require all granted
Require not ip 192.168.19.128
<Requireall>
1) 開啟服務;
2) 測試機訪問這臺centos7 web服務器;
Note:測試時需要關閉centos7的selinux和iptables;
3) 編輯配置文件,基於IP訪問控制;
4) 再次用測試機訪問測試;
Note:此次測試需要將/etc/httpd/conf.d目錄下的welcome.conf重命名;否則測試機訪問將依舊能訪問;
5) 將配置文件的ip限制取消,測試機將再次可以訪問;
3. 虛擬主機
基於FQDN的虛擬主機也不再需要NameVirutalHost指令:
1) 註釋DocumentRoot指令;
2) 編輯虛擬主機配置文件,
3) 重載服務,並編輯創建相關目錄文件;
4) 測試;
4. ssl
5. KeepAliveTimeout #ms
毫秒級持久連接時長定義;
練習題:
1、建立httpd服務,要求:
(1)提供兩個基於名稱的虛擬主機:
www1.stuX.com,頁面文件目錄為/web/vhosts/www1;錯誤日誌為/var/log/httpd/www1/error_log,訪問日誌為/var/log/httpd/www1/access_log;
www2.stuX.com,頁面文件目錄為/web/vhosts/www2;錯誤日誌為/var/log/httpd/www2/error_log,訪問日誌為/var/log/httpd/www2/access_log;
(2)通過www1.stuX.com/server-status輸出其狀態信息,且要求只允許提供賬號的用戶訪問;
(3)www1不允許192.168.19.134ip主機訪問;
演示:
1. 修改配置文件;
2. 創建相關目錄及文件;
1) 創建用戶組訪問控制需要的密碼文件;
2) 創建日誌目錄;
3) 創建DocumentRoot目錄;
4) 創建index.html文件;
3. 在測試機上編輯/etc/hosts文件;
4. 重載服務及測試;
1) 在192.168.19.134主機上測試,分別訪問www1.stuX.com,www2.stuX.com;
訪問www1.stuX.com:
訪問www2.stuX.com:
2) 在192.168.19.128主機上測試,訪問www1.stuX.com;
結果可以訪問,可以看出,配置的基於ip限制訪問是有效的;
3) 在192.168.19.134主機上測試,訪問www1.stuX.com/server-status,www2.stuX.com/server-status;
訪問www1.stuX.com/server-status:輸入jerry的賬號時,不在組內,不能訪問;
訪問www1.stuX.com/server-status:輸入tom的賬號時,能查看;
訪問www2.stuX.com/server-status:在配置文件中沒有設置從此處輸出配置信息;
2、為上面的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;
(1)要求使用證書認證,證書中要求使用國家(CN),州(Jiangsu),城市(Suzhou),組織為(Amaxchina);
(2)設置部門為Ops,主機名為www2.stuX.com;
演示:在上面的http服務器上進行操作,
1. 建私有CA;
2. httpd服務器申請證書;
3. CA簽署證書;
4. 配置httpd支持使用ssl;
1) 安裝ssl模塊;
2) 檢查是否安裝完成;
3) 修改ssl配置文件;/etc/httpd/conf.d/ssl.conf;
5. 編輯/etc/hosts文件;
6. 重啟,測試;
1) 查看監聽端口;
可以看出443端口和80端口都已開啟;
2) 訪問測試;
訪問http無問題,訪問https被告知需要證書;
利用curl --cacert /path/to/cafile.pem URL 測試;
Linux自學筆記——httpd基本應用(3)