httpd的配置文件
配置文件:
/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf
服務腳本:/etc/rc.d/init.d/httpd
腳本配置文件:/etc/sysconfig/httpd
模塊目錄: /etc/httpd/modules:
鏈接文件 /usr/lib64/httpd/modules
主程序:
/usr/sbin/httpd: prefork /usr/sbin/httpd.event: event
/usr/sbin/httpd.worker: worker
日誌文件目錄:
/var/log/httpd
access_log: 訪問日誌
error_log: 錯誤日誌
站點文檔根目錄: /var/www/html/p_w_picpaths/a.jpg
http配置文件簡要說明:
Listen指令
Listen指令設置服務器監聽的IP以及端口號,默認監聽服務器本機所有的IP地址的80端口。語法格式爲Listen [IP地址:]端口 [協議],其中IP地址與協議爲可選項,默認監聽所有IP,使用TCP協議。一個配置文件中可以多次使用Listen指令來開啓多個端口。
LoadModule指令
Apache HTTP Server的特色之一就是她的功能多數是以模塊方式加載的,但如果希望Apache動態加載模塊,需要在編譯Apache時通過--enable-so將mod_so以靜態方式編譯到Apache核心模塊中,LoadModule指令的作用就是加載模塊。語法格式爲LoadModule 模塊 模塊文件名稱,模塊文件一般位於ServerRoot指定目錄下的modules目錄中。
ServerName指令
ServerName指令設置服務器本機的主機名稱以及端口,對於URL地址的重定向很重要該指令設置Web服務對客戶端開放可見的文檔根目錄,也就是客戶端訪問網站的根路徑,默爲/usr/local/apache2/htdocs
路徑別名
站點根目錄:/www/html
HTTP搭建虛擬服務器:
configure腳本用來檢查系統環境、查找依賴文件、設置安裝路徑等操作,configure擁有很多參數,讀者可以通過./configure --help查看該腳本支持的所有參數。
下面是configure常用參數說明:
參數 描述
--prefix 指定Apache httpd程序的安裝主目錄
--enable-so 開啓模塊化功能,支持DSO(動態共享對象)
--enable-ssl 支持SSL加密
--enable-rewrite 支持地址重寫
--with-mpm 設置Apache httpd工作模式
--with-suexec-bin 支持SUID、SGID
--with-apr 指定apr程序絕對路徑
開始搭建虛擬主機
虛擬主機是在一臺服務器上同時運行多個網站業務,Apache HTTP Server支持基於域名以及基於IP虛擬主機類型。在Apache配置文件中虛擬主機指令需要使用VirtualHost容器封裝。基於IP的虛擬主機可以根據不同的IP地址以及端口號定位不同的網站請求,但基於IP的虛擬主機需要獨立的IP地址定位連接的網站,而目前IP地址是互聯網的稀缺資源,所以很多時候我們更喜歡基於域名的虛擬主機,服務器可以根據客戶端訪問HTTP的頭部信息來實現網站的分離解析,客戶端可以使用不同的域名訪問位於同一IP地址的服務器資源。
當客戶端請求到達後,服務器會根據<VirtualHost IP地址:[端口號]>參數匹配IP地址與端口號,IP地址可以使用*匹配服務器本地所有IP地址。接下來我們通過一個案例說明基於域名虛擬主機的實現方式,首先我們需要將主配置文件中Include conf/extra/httpd-vhosts.conf這樣功能開啓,默認該行爲註釋行,去除#符號即可。Include指令會將httpd-vhosts.conf文件視作爲配置文件的一部分。下面我們僅列出該配置文件中需要修改的部分
所以說虛擬主機有三種不同的訪問路徑,分別是基於端口、ip、主機名。
在使用虛擬主機之前要取消主服務器。即註釋掉主服務器的站點根路徑指定:DocumentRoot。
定義虛擬主機:啓用 NameVirtualHost IP:端口 格式如下
<VirtualHost IP:PORT>
ServerName 虛擬主機名
DocumentRoot 虛擬主機根路徑
ServerAlias
ErrorLog 錯誤日誌
CustomLog 訪問記錄
</VirtualHost>
之後使用語法錯誤檢查:service httpd configtest 沒有語法錯誤就在/var/www/目錄下建立虛擬主機的根目錄,以及在/var/log/htppd下建立錯誤日誌。
完成後啓動服務
#service httpd restart
https協議
https的ssl模塊。安裝使用 # yum install mod_ssl
https協議基於443端口
ssl協議是基於ip地址創建的,因此每個ip地址只能創建一個ssl會話。ssl協議需完成的工作如下:
交換協議版本號,選擇雙方都支持的加密方式,客戶端對服務器端實現身份驗證,最後是密鑰交換。
客戶端驗證服務器證書:證書是否在有效期,ca的可信度,證書完整性以及持有者的身份。
https的配置
1、安裝ssl協議模塊: # yum install mod_ssl
2、爲服務器端生成私鑰以及爲期提供證書:
自建CA參考SSL協議與CA服務器的自建,把/etc/pki/CA/private中的cacert。pem導出修改後綴爲crt。然後安裝
3、配置使用https的虛擬主機
4、重新加載配置以及測試
新版本的httpd的編譯安裝
準備開發環境:
yum groupinstall -y "Server Platform Development"
yum groupinstall -y "Development tools"
yum install -y pcre-devel-7.8-6.el6.x86_64
編譯安裝httpd2.4所依賴的軟件包
1.安裝apr-1.5.0.tar.bz2
# tar xf ^Cr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
2.安裝apr-util-1.5.3
ftp://ftp.mirrorservice.org/sites/ftp.apache.org/apr/apr-util-1.5.3.tar.bz2
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# make && make install
.以上兩步編譯完成,現正式開始編譯httpd-2.4.9.tar.bz2
http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.9.tar.bz2
# tar xf httpd-2.4.9.tar.bz2
# cd httpd-2.4.9
# ./configure --prefix=/usr/local/apache --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=event
--prefix=/usr/local/apache 安裝路徑
--sysconfdir=/etc/httpd24 配置文件路徑
--enable-so 允許運行時加載DSO模塊
--enable-ssl 如果不加載將無法使用使用https
--enable-cgi 允許使用cgi腳本
--enable-rewrite 支持URL重寫機制
--with-zlib 支持網絡通用壓縮庫
--with-pcre 支持pcre
--with-apr=/usr/local/apr 指定apr的安裝路徑
--with-apr-util=/usr/local/apr-util/ 指定apr-util的安裝路徑
--enable-modules=most 啓用大多數常用的模塊
--enable-mpms-shared=all 啓用MPM所有支持的模式
--with-mpm=event 默認使用enevt模式
查看安裝後所生成的文件 extra目錄是2.4版新增目錄
# ls
extra httpd.conf magic mime.types original
# cd extra/
# ls
httpd-autoindex.conf httpd-info.conf httpd-mpm.conf httpd-userdir.conf
httpd-dav.conf httpd-languages.conf httpd-multilang-errordoc.conf httpd-vhosts.conf
httpd-default.conf httpd-manual.conf httpd-ssl.conf proxy-html.conf
導出頭文件;以目錄鏈接的形式來實現
# ln -sv /usr/local/apache/include/ /usr/include/httpd
`/usr/include/httpd' -> `/usr/local/apache/include/'
輸出二進制程序
# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache/bin:$PATH
#. /etc/profile.d/httpd24.sh
# httpd -V 顯示httpd版本信息
導出man文件
# vim /etc/man.config
MANPATH /usr/local/apache/man
# man -M /usr/local/apache/man httpd
修改服務腳本;
修改服務前先把httpd關閉;apachect1 stop
vim /etc/init.d/httpd24.sh