LAMP編譯安裝(一)——安裝Apache2.4

來源:互聯網
上載者:User

標籤:lamp   apche   

背景介紹

LAMP是LNMP結構提出之前風靡了很久的結構,本系列就從無到有一點點介紹LAMP的編譯安裝。首先,介紹下本系列的拓撲結構圖650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/89/67/wKioL1gSH_fySE_sAACI6-JB-zA681.png" title="1.png" style="float:none;" alt="wKioL1gSH_fySE_sAACI6-JB-zA681.png" />

此時伺服器響應用戶端訪問可以分為幾種應答方式:650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/6A/wKiom1gSH_eRRW6TAABHdDFe5IE860.png" title="2.png" style="float:none;" alt="wKiom1gSH_eRRW6TAABHdDFe5IE860.png" />

1.用戶端向伺服器端發起請求

2.伺服器端查看請求類型,當為靜態頁面請求,直接返回結果


650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/89/67/wKioL1gSH_fQQeQJAABXhObw7NQ052.png" title="3.png" style="float:none;" alt="wKioL1gSH_fQQeQJAABXhObw7NQ052.png" />

1.用戶端向伺服器端發起請求

2.伺服器端查看請求類型,當為動態網頁面請求,通過設定檔中設定的反向 Proxy,通過fcgi協議交給後端PHP伺服器

3.PHP伺服器上啟用php-fpm服務,監聽在一個通訊端上想用請求,並將結果反饋給httpd伺服器

4.httpd伺服器在通過其rewirte技術,將結果以偽靜態頁面的形式反饋給用戶端


650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/67/wKioL1gSH_fhHZICAABmLh6Sk3A391.png" title="4.png" style="float:none;" alt="wKioL1gSH_fhHZICAABmLh6Sk3A391.png" />

1.用戶端向伺服器端發起請求

2.伺服器端查看請求類型,當為動態網頁面請求,交給後端PHP伺服器

3.如果客戶的請求中需要訪問資料庫,PHP伺服器會將請求轉交給Mysql伺服器,這裡需要注意的是:PHP伺服器本身不會請求Mysql,只是替使用者轉交請求,所以PHP在編譯安裝時需要啟用 --with-mysql=mysqlnd  --with-pdo-mysql=mysqlnd

--with-mysqli=mysqlnd這3個選項,此時的mysqlnd類似於一個驅動,可以使PHP串連到Mysaql伺服器,如果PHP與Mysql伺服器為同一台主機,以--with-mysql選項為例,此時需要指明Mysql的安裝路徑 --with-mysql=/path/to/mysql

4.Mysql伺服器將資料處理結果反饋給PHP伺服器

5.PHP伺服器在將結果反饋給httpd伺服器

6.httpd伺服器在通過其rewirte技術,將結果以偽靜態頁面的形式反饋給用戶端

Apche2.4介紹

CentOS6系列預設使用的Apache2.2版本,之後發布的Apache2.4版本在功能上比之前有了進一步的增強,主要表現為:

1.MPM支援在運行時裝載

2.支援event

3.非同步讀寫

4.在每模組及每目錄上指定記錄層級

5.每請求配置:<If> <Elseif>

6.增強版的運算式分析器

7.毫秒級的keepalive timeout

8.支援主機名稱的虛擬機器主機不在需要NameVirtualHost指令

9.支援使用自訂變數

10.新增一些模組:mod_proxy_fcgi,mod_ratelimit,mod_request,mod_remoteip

11.對於基於IP的訪問做了修改,不在使用order,allow,deny這些機制;而是統一使用require進行,如require granted和require denied

實驗說明

作業系統:CentOS6.8

源碼包:httpd-2.4.23.tar.bz2,apr-1.5.2.tar.bz2,apr-util-1.5.4.tar.bz2

準備工作:安裝pcre-devel包,Apache2.4編譯時間需要用到

實驗目的

1.編譯安裝Apache2.4

2.測試MPM模組動態切換

3.測試虛擬機器主機實現

4.將編譯後的服務加入Service控制

實驗步驟

一、編譯安裝

1.安裝先決條件並解壓源碼包

yum -y install pcre-devel#安裝pcre-devel包

for i in apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 httpd-2.4.23.tar.bz2;do tar -xf $i -C /usr/local/src/;done

#將apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 httpd-2.4.23.tar.bz2壓縮包解壓到/usr/local/src目錄下

2.安裝apr-1.5.2

cd /usr/local/src/apr-1.5.2#進入apr-1.5.2目錄

./configure --prefix=/usr/local/apr-1.5.2#檢查編譯環境

make && make install#編譯安裝

3.安裝apr-util-1.5.4

cd /usr/local/src/apr-util-1.5.4#進入apr-1.5.2目錄

./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2#檢查編譯環境

make && make install#編譯安裝

4.安裝Apache2.4

cd /usr/local/src/httpd-2.4.23#進入httpd-2.4.23目錄

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4 --enable-modeles=most --enable-mpms-shared=all --with-mpm=event#檢查編譯環境

make && make install#編譯安裝

5.路徑輸出

echo "export PATH=/usr/local/apache/bin:$PATH" > /etc/profile.d/apache.sh

source /etc/profile.d/apache.sh

6.標頭檔輸出

ln -sv /usr/local/apache/include/ /usr/include/apache

7.庫檔案輸出

apche2.4編譯安裝後在/usr/local/apache/目錄下沒有lib目錄,此步驟跳過,有則使用echo "/usr/local/apache/lib > /etc/ld.so.conf.d/apche.conf"進行庫檔案輸出,再使用ldconfig -v查看

8.MAN文檔輸出

vim /etc/man.config

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/89/6A/wKiom1gSH_jzOPlRAAAm5KIWDWo933.png" title="5.png" style="float:none;" alt="wKiom1gSH_jzOPlRAAAm5KIWDWo933.png" />

9.啟動並檢查Apche

/usr/local/apache/bin/apachectl start#啟動服務

netstat -ntl#查看80連接埠是否正常偵聽

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/89/6A/wKiom1gSH_jBp4bkAAAOtZ98M58714.png" title="6.png" style="float:none;" alt="wKiom1gSH_jBp4bkAAAOtZ98M58714.png" />

二、動態切換MPM模組

Apache2.4的mpm採用模組方式實現,支援DSO動態裝卸載,編譯時間設定的是event模型,從主設定檔/etc/httpd/httpd.conf中可以看到當前啟用的mpm模組,切換mpm模型就是啟用相應模型的模組,更改前間隙先停止服務650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/89/67/wKioL1gSH_ixzctbAAAc2ZARIlg324.png" title="7.png" style="float:none;" alt="wKioL1gSH_ixzctbAAAc2ZARIlg324.png" />

注意:/etc/httpd/extra/httpd-mpm.conf設定檔是修改mpm模型參數的,如果只修改這個檔案會發現不會生效,原因就是在主設定檔下該設定檔預設是登出掉的,啟用後才會生效

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/6A/wKiom1gSH_igjWnkAAARNAN699I320.png" title="8.png" style="float:none;" alt="wKiom1gSH_igjWnkAAARNAN699I320.png" />

三、測試虛擬機器主機

1.Apche2.4不再有虛擬機器主機開關選項,主設定檔中登出中心主機650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/89/67/wKioL1gSH_ihq42sAAA7YvSHnp0906.png" title="9.png" style="float:none;" alt="wKioL1gSH_ihq42sAAA7YvSHnp0906.png" />

2.類似mpm模組一樣,需要在主設定檔中啟用虛擬機器主機設定檔。如果虛擬機器主機設定檔存放在httpd.conf的主設定檔中,則不需要啟用虛擬機器主機設定檔。建議將虛擬機器主機的設定檔和主設定檔分開。經測試,如果中心主機與虛擬機器主機都存放於httpd.conf主設定檔中並同時啟用,虛擬機器主機生效。650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/89/6A/wKiom1gSH_nypzmOAAAMzi0AMfU142.png" title="10.png" style="float:none;" alt="wKiom1gSH_nypzmOAAAMzi0AMfU142.png" />

3.vim /etc/httpd/extra/httpd-vhosts.conf 編輯虛擬機器主機設定檔650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/67/wKioL1gSH_nz1JD_AAAzIz1rIlo091.png" title="11.png" style="float:none;" alt="wKioL1gSH_nz1JD_AAAzIz1rIlo091.png" />

4.為www.vhost.com建立首頁面

mkdir -p /var/www/vhost

echo "www.vhost.com" > /var/www/vhost/index.html650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/89/6A/wKiom1gSH_mS8rNyAAAdbHwX31w686.png" title="12.png" style="float:none;" alt="wKiom1gSH_mS8rNyAAAdbHwX31w686.png" />

此時會發現訪問被拒絕,原因是Apche2.4開始每個網站都需要配置目錄許可權,添加後就可以正常訪問了650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/89/67/wKioL1gSH_nSLr86AABNAhoa_WE114.png" title="13.png" style="float:none;" alt="wKioL1gSH_nSLr86AABNAhoa_WE114.png" />

Apche2.4不再使用以前的Oeder Allow Deny機制,訪基於IP存取控制由Require來進行:

允許所有主機訪問:Require all granted

拒絕所有主機訪問:Require all denied

控制某主機的訪問,可以是單個IP地址,也可以是網段:

Require ip IPADDR

Require not ip IPADDR

使用主機名稱控制,可以是FQDN,也可以是整個域:

Require host $HOSTNAME

Require not host $HOSTNAME

四、添加啟動指令碼

服務指令碼可以參考CentOS6.8內建的httpd2.2的指令碼,將其複製到/etc/rc.d/init.d目錄下,保證有執行許可權,並做如下修改,主要是路徑修改650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/89/67/wKioL1gSH_mhUUwhAABFhYKKYCM115.png" title="14.png" style="float:none;" alt="wKioL1gSH_mhUUwhAABFhYKKYCM115.png" />

650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />之後再到主設定檔中增加一行pidfile的位置指向650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/89/6A/wKiom1gSH_ng8QAoAABFTHq_AHE735.png" title="15.png" style="float:none;" alt="wKiom1gSH_ng8QAoAABFTHq_AHE735.png" />

650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />然後使用chkconfig --add httpd,chkconfig httpd on後,就可以使用service控制了,至此操作完成

實驗中發現一個不理解的現象:按照理解,httpd服務運行時應該先讀主設定檔httpd,然後再讀指令檔,但主設定檔中指定LockFile檔案位置後,通過httpd -t檢查文法會報錯,不添加啟動後會遵循指令碼中的設定使用/var/lock/subsys/httpd;如果主設定檔中不添加PidFile檔案,使用Service可以正常啟動httpd服務,但是不會讀取指令檔,即不會產生/var/run/httpd.pid檔案,啟動後無法使用service httpd stop關閉,提示沒有pid檔案




本文出自 “兔樣兔森破” 部落格,請務必保留此出處http://arkling.blog.51cto.com/2844506/1866548

LAMP編譯安裝(一)——安裝Apache2.4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.