Linux詳細搭建httpd網站搭建服務(阿帕奇)
阿新 • • 發佈:2018-08-12
日誌 enc 9.1 RKE virtual 新版本 util open 依賴 1.httpd簡介
當今主流的開源Web服務器軟件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今為止使用量多的web服務器,據統計目前httpd的全球占有量是47%左右,雖然有所下降但是使用兩仍然是最多的,統計web服務器使用率的網站是:http://news.netcraft.com/
httpd工作的原理:httpd是Apache超文本傳輸協議(HTTP)服務器的主程序,被設計為一個獨立運行的後臺進程,它會建立一個處理請求的子進程或線程的池。
通常httpd不應該被直接調用,而應該在類Unix系統中由apachectl調用,在Windows作為服務運行。
當今主流的開源Web服務器軟件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今為止使用量多的web服務器,據統計目前httpd的全球占有量是47%左右,雖然有所下降但是使用兩仍然是最多的,統計web服務器使用率的網站是:http://news.netcraft.com/
httpd工作的原理:httpd是Apache超文本傳輸協議(HTTP)服務器的主程序,被設計為一個獨立運行的後臺進程,它會建立一個處理請求的子進程或線程的池。
通常httpd不應該被直接調用,而應該在類Unix系統中由apachectl調用,在Windows作為服務運行。
2.httpd的版本
httpd-1.3
httpd-2.0
httpd-2.2
httpd-2.4
目前為止最新的版本是httpd-2.4.6,但是這裏我用的是系統自帶的RPM包安裝的httpd-2.2.15版本的,最新版本配置可能會有所不同
本文主要介紹httpd的兩大版本,httpd-2.2和httpd-2.4。
CentOS6系統的版本默認提供的是httpd-2.2版本的rpm包
CentOS7系統的版本默認提供的是httpd-2.4版本的rpm包
3.httpd工作模型
高度模塊化:DSO MPM:Multipath Processing Module #多處理模塊 prefork:一次一個進程響應一個請求 worker:一個進程生成多個線程,一個線程響應一個請求 event:基於事件驅動,一個進程響應多個請求
4.httpd自帶的工具程序
工具 | 功能 |
---|---|
htpasswd | basic認證於文件實現時,用到的賬號密碼生成工具 |
apachectl | httpd自帶的服務控制腳本,支持start,stop,restart |
apxs | 由httpd-devel包提供的,擴展httpd使用第三方模塊的工具 |
rotatelogs | 日誌滾動工具 |
suexec | 訪問某些有特殊權限配置的資源時,臨時切換至用戶運行的工具 |
ab | apache benchmark,httpd的壓力測試工具 |
5.rpm包安裝的httpd程序環境
文件/目錄 | 對應的功能 |
---|---|
/var/log/httpd/access.log | 訪問日誌 |
/var/log/httpd/error_log | 錯誤日誌 |
/var/www/html/ | 站點文檔目錄 |
/usr/lib64/httpd/modules/ | 模塊文件路徑 |
/etc/httpd/conf/httpd.conf | 主配置文件 |
/etc/httpd/conf.modules.d/*.conf | 模塊配置文件 |
/etc/httpd/conf.d/*.conf | 輔助配置文件 |
6.httpd常用的 配置
#切換使用MPM(編輯/etc/httpd/conf.modules.d/00-mpm.conf文件)
//LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
//NAME有三種,分別是:
prefork
event
worker
訪問控制法則:
法則 | 功能 |
---|---|
Require all granted | 允許所有主機訪問 |
Require all deny | 拒絕所有主機訪問 |
Require ip IPADDR | 授權指定來源地址的主機訪問 |
Require not ip IPADDR | 拒絕指定來源地址的主機訪問 |
Require host HOSTNAME | 授權指定來源主機名的主機訪問 |
Require not host HOSTNAME | T拒絕指定來源主機名的主機訪問 |
註意:httpd-2.4版本默認是拒絕所有主機訪問的,所以安裝以後必須做顯示授權訪問
示例:
<RequireAll>
Require not ip 192.168.1.20
Require all granted
</RequireAll>
虛擬主機有三類:
1.相同IP不同端口
2.不同IP相同端口
3.相同Ip相同端口不同域名
7.編譯安裝httpd-2.4(以下實例是編譯安裝,相同IP相同端口不同域名)
httpd依賴於apr-1.4+,apr-util-1.4+,[apr-icon]
//安裝開發環境
[root@lanzhiyong ~]# yum groups mark install "Development Tools"
[root@lanzhiyong ~]# groupadd -r apache
[root@lanzhiyong ~]# useradd -M -s /sbin/nologin -g apache apache
[root@lanzhiyong ~]# yum -y install openssl-devel pcre-devel expat-devel libt ool
//下載並安裝apr-1.4+和apr-util-1.4+
[root@lanzhiyong ~]# cd /usr/src/
[root@lanzhiyong ~]# wget http://mirrors.shu.edu.cn/apache//apr/apr-1.6.3.tar.bz2
[root@lanzhiyong ~]# wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2
[root@lanzhiyong ~]# tar xf apr-1.6.3.tar.bz2
[root@lanzhiyong ~]# tar xf apr-util-1.6.1.tar.bz2
[root@lanzhiyong ~]# cd apr-1.6.3
[root@lanzhiyong ~]# vim configure
# $RM "$cfgfile" // 將此行加上註釋,或者刪除此行
[root@lanzhiyong ~]# ./configure --prefix=/usr/local/apr
配置過程略過…
[root@lanzhiyong ~]# make && make install
編譯安裝過程略…
[root@lanzhiyong ~]# cd /usr/src/apr-util-1.6.1
[root@lanzhiyong ~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@lanzhiyong ~]# make && make install
//編譯安裝httpd
[root@lanzhiyong ~]# cd
[root@lanzhiyong ~]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.34.tar.bz2
[root@lanzhiyong ~]# tar xf httpd-2.4.34.tar.bz2
[root@lanzhiyong ~]# cd httpd-2.4.34
[root@lanzhiyong ~]# ./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=worker
[root@lanzhiyong ~]# make && make install
編譯安裝過程略…
//設置主機名
[root@lanzhiyong ~]# vim /etc/httpd24/httpd.conf
#ServerName www.example.com:80 //取消#號
//在最後一行加上一下內容,下面是配置相同IP相同端口不同域名,直接訪問域名
[root@lanzhiyong ~]# vim /etc/httpd24/httpd.conf
<VirtualHost 192.168.209.12:80>
ServerName www.wangqing.com
DocumentRoot "/usr/local/apache/htdocs/lan"
ErrorLog "logs/lan/error_log"
CustomLog "logs/lan/access_log" combined
<Directory "/usr/local/apache/htdocs/lan">
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
<VirtualHost 192.168.209.12:80>
ServerName www.lanzhiyong.com
DocumentRoot "/usr/local/apache/htdocs/yong"
ErrorLog "logs/yong/error_log"
CustomLog "logs/yong/access_log" combined
<Directory "/usr/local/apache/htdocs/yong">
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
//創建相應網頁的日誌目錄
[root@lanzhiyong ~]# mkdir /usr/local/apache/logs/{lan,yong}
[root@lanzhiyong ~]# chown -R apache.apache /usr/local/apache/logs
//創建網頁目錄並修改屬主屬組
[root@lanzhiyong ~]# cd /usr/local/apache/htdocs/
[root@lanzhiyong htdocs]# mkdir lan yong
[root@localhost htdocs]# chown -R apache.apache lan
[root@localhost htdocs]# chown -R apache.apache yong
//創建網頁
[root@localhost htdocs]# pwd
/usr/local/apache/htdocs
[root@localhost htdocs]# echo ‘hello welcome to visit lan‘ > lan/index.html
[root@localhost htdocs]# echo ‘hello welcome to visit yong‘ > yong/index.html
//啟動httpd服務 80端口
[root@lanzhiyong ]# cd /usr/local/apache/bin
[root@lanzhiyong bin]# ./apachectl start
//查看 80端口是否啟動
[root@lanzhiyong bin]# ss -antl
//在瀏覽器上驗證
******輸入www.wangqing.com*********
*******輸入www.lanzhiyong.com********
Linux詳細搭建httpd網站搭建服務(阿帕奇)