天天看點

總結之:CentOS 6.5 LAMP分主機平台的搭建及測試

前言

   前面的文章我們談到過了LAMP的基礎原理以及很多的相關知識了、尤其是httpd、這個強大的、牛氣轟轟的web伺服器想必大們都再熟悉不過了吧、對他的介紹我們也談了很多了、這裡不再做介紹、那接下來我們就是分主機來實作LAMP平台的搭建以及動靜頁面的測試、話不多說、我們下面來實作吧!

正文

   準備工作:

   apr-1.5.0.tar.bz2

   apr-util-1.5.2.tar.bz2

   pcre-devel-7.8-6.el6.x86_64 (用yum安裝)

   httpd-2.4.9.tar.bz2 (httpd 2.4的版本)

   ==========程式包分三台主機存放、以上是HTTPD的===============

   bzip2-devel、libmcrypt-devel、libxml2-deve (這三個是安裝php所需要的開發包、用yum裝)

   php-5.4.26.tar.bz2 (php 5.4的版本)

   ============以上是PHP的=======================

  mysql-5.5.33-linux2.6-x86.tar.gz (mysql 5.5.33的版本)

   ============以上是mysql的=======================

<a href="http://s3.51cto.com/wyfs02/M01/23/6D/wKioL1M2LUfAeYllAADnh7meSO4488.jpg" target="_blank"></a>

   以上準備了好多的程式包呀、但他們不是都放在一台主機上的、上面我們有說明的哦、這裡還要注意的是伺服器配置安裝的順序問題,如果是在同一台主機上安裝搭建LAMP平台主話,那麼就必須把php放到最後去安裝,因為php的安裝要依賴于httpd和要用到的mysql、而我們這裡分别置于不同的主機上實作LAMP平台,是以沒有太多的順序要求,但是,還是建議建議先安裝httpd、mysql然後再安裝php。

   以下是LAMP的工作過程中使用到的協定以及工作圖:

<a href="http://s3.51cto.com/wyfs02/M02/23/6D/wKioL1M2LCqi0Cd5AAJbbBNhwWM147.jpg" target="_blank"></a>

補充:

(1)建構MPM為靜态子產品

   在全部平台中,MPM都可以建構為靜态子產品。在建構時選擇一種MPM,連結到伺服器中。如果要改變MPM,必須重新建構。為了使用指定的MPM,請在執行configure腳本 時,使用參數 --with-mpm=NAME。NAME是指定的MPM名稱。編譯完成後,可以使用 ./httpd -l 來确定選擇的MPM。 此指令會列出編譯到伺服器程式中的所有子產品,包括 MPM。

(2)建構 MPM 為動态子產品

   在Unix或類似平台中,MPM可以建構為動态子產品,與其它動态子產品一樣在運作時加載。 建構 MPM 為動态子產品允許通過修改LoadModule指令内容來改變MPM,而不用重新建構伺服器程式。在執行configure腳本時,使用--enable-mpms-shared選項即可啟用此特性。當給出的參數為all時,所有此平台支援的MPM子產品都會被安裝。還可以在參數中給出子產品清單。預設MPM,可以自動選擇或者在執行configure腳本時通過--with-mpm選項來指定,然後出現在生成的伺服器配置檔案中。編輯LoadModule指令内容可以選擇不同的MPM。

httpd 2.4編譯安裝過程

   1、解決依賴關系

   prel相容的正規表達式庫

   # yum -y install pcre-devel

   # yum -y groupinstall "Server Platform Development"

   # yum -y groupinstall "Development tools"

   2、編譯安裝apr

   # tar xf apr-1.5.0.tar.bz2

   # cd apr-1.5.0

   # ./configure --prefix=/usr/local/apr

   # make &amp;&amp; make install

   3、編譯安裝apr-util

   # 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

   4、編譯安裝httpd 2.4

   # 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

指定配置檔案的路徑、24表示版本、為了不跟我本機上的2.2的重複

--enable-so

表示基于DSO動态加載子產品的

--enable-ssl

這項是支援https協定的

--enable-cgi

支援CGI機制的

--enable-rewrite

支援URL重寫的

--with-zlib

zlib是一個網絡上發送資料封包時的一個通用壓縮庫的API

--with-pcre

通常支援Perl所用到的一個庫

--with-apr=/usr/local/apr

指定新的apr的路徑

--with-apr-util=/usr/local/apr-util/

指定新的apr-util的路徑

--enable-modules=most

most表示啟用大多數常用的子產品

--enable-mpms-shared=all

所有的MPM子產品都編譯

--with-mpm=event

明确指定啟用event子產品

後續的配置:

   1) 導出頭檔案

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

   2) 導出庫檔案

       沒生成就不用導出了

   3) 導出man手冊

       # vim /etc/man.config

       MANPATH /usr/local/apache/man

   4) 輸出二進制程式

       # vim /etc/profile.d/httpd.sh

       export PATH=/usr/local/apache/bin:$PATH

為httpd2.4提供服務腳本    

   我們可以每次開機後都手動去啟動httpd服務,這個很明顯不符合我們的正常需求,是以我們需要給httpd2.4提供服務腳本,并且加到系統自動啟動服務中、我們可以自己手工編寫腳本,也可以使用httpd2.2(系統自自帶的httpd服務)的服務腳本,稍加修改,就可以為httd24服務了。

   這裡我借用了httd2.2的服務腳本,進行簡單修改。為了差別原有的服務腳本httpd,這裡複制httpd為httpd24

   注意:服務腳本存放在/etc/init.d目錄下,必須要可執行權限

   # cp /etc/init.d/httpd /etc/init.d/httpd24

   # vim /etc/init.d/httpd24

   httpd24的安裝路徑為/usr/local/apache,且沒有sbin,隻有bin是以修改下面的路徑為目前路徑

   apachectl=/usr/local/apache/bin/apachectl

   httpd=${HTTPD-/usr/local/apache/bin/httpd}

<a href="http://s3.51cto.com/wyfs02/M02/23/6D/wKioL1M2LYOjjMoLAADl92-Rh_s512.jpg" target="_blank"></a>

   添加至系統服務、并開機自動啟動

   # chkconfig --add httpd24

   # chkconfig  httpd24 on

   修改配置檔案、主要是添加一條PidFile的檔案路徑。這裡系統讀取PidFile的順序是配置檔案、服務腳本,如果配置檔案沒有,再去找服務腳本。

   # vim /etc/httpd24/httpd.conf    

   PidFile "/var/run/httpd/httpd.pid"

<a href="http://s3.51cto.com/wyfs02/M01/23/6C/wKiom1M2LeHSzQgDAABvO-g9Nvs341.jpg" target="_blank"></a>

mysql 5.5編譯安裝過程

   1、準備資料存放的檔案系統、這裡我們建立一個分區來專門存放資料檔案、建立一個邏輯卷,并将其挂載至/data、這個應該很熟悉了、這裡不做過多的解釋、什麼可以留言交流。

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>############這些不做過多的解析、一看就明白了################</code>

<code># mkdir /data</code>

<code># fdisk /dev/sda</code>

<code>n p 3  +20G t  3 8e w</code>

<code># pvcreate /dev/sda3</code>

<code># vgcreate myvg /dev/sda3</code>

<code># lvcreate -L 10G -n mydata myvg</code>

<code># mke2fs -t ext4 /dev/myvg/mydata</code>

<code># vim /etc/fstab</code>

<code>/dev/myvg/mydata</code>    <code>/data</code>    <code>ext4    defaults,noatime 0 0</code>

<code># monut -a</code>

<code># cd /data/</code>

<code># mkdir mydata</code>

   2、建立使用者以安全方式運作程序:    

<code># groupadd -r mysql</code>

<code># useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql</code>

<code># chown -R mysql:mysql /mydata/data</code>

   3、安裝并初始化mysql-5.5.33    

<code># tar xf mysql-5.5.33-linux2.6-i686.tar.gz -C /usr/local</code>

<code># cd /usr/local/</code>

<code># ln -sv mysql-5.5.33-linux2.6-i686  mysql</code>

<code># cd mysql</code>

<code># chown -R mysql:mysql  .</code>

<code># scripts/mysql_install_db --user=mysql --datadir=/mydata/data</code>

<code># chown -R root  .</code>

   4、為mysql提供主配置檔案:    

<code># cd /usr/local/mysql</code>

<code># cp support-files/my-large.cnf  /etc/my.cnf</code>

   并修改此檔案中thread_concurrency的值為你的CPU個數乘以2,比如這裡使用如下行:

   thread_concurrency = 2

   另外還需要添加如下行指定mysql資料檔案的存放位置:

   datadir = /mydata/data

   5、為mysql提供sysv服務腳本:    

<code># cp support-files/mysql.server  /etc/rc.d/init.d/mysqld</code>

<code># chmod +x /etc/rc.d/init.d/mysqld</code>

   添加至服務清單、而後就可以啟動服務測試使用了:    

<code># chkconfig --add mysqld</code>

<code># chkconfig mysqld on</code>

<code># service mysqld start</code>

   為了使用mysql的安裝符合系統使用規範,并将其開發元件導出給系統使用,這裡還需要進行如下步驟:

   6、輸出mysql的man手冊至man指令的查找路徑、編輯/etc/man.config,添加如下行即可:

   MANPATH  /usr/local/mysql/man

   7、輸出mysql的頭檔案至系統頭檔案路徑/usr/include:

   這可以通過簡單的建立連結實作:

   # ln -sv /usr/local/mysql/include  /usr/include/mysql

   8、輸出mysql的庫檔案給系統庫查找路徑:

   # echo '/usr/local/mysql/lib' &gt; /etc/ld.so.conf.d/mysql.conf

   而後讓系統重新載入系統庫:

   # ldconfig

   9、修改PATH環境變量,讓系統可以直接使用mysql的相關指令:

   # vim /etc/profile.d/mysql.sh

   export PATH=/usr/local/mysql/bin:$PATH

<a href="http://s3.51cto.com/wyfs02/M01/23/6D/wKioL1M2L23iMQCBAAIz137hw7M873.jpg" target="_blank"></a>

php 5.4編譯安裝過程

   1、解決依賴關系、請配置好yum源(可以是本地系統CD光牒)後執行如下指令:

   # yum -y groupinstall "Desktop Platform Development" 

   # yum -y install bzip2-devel libmcrypt-devel

   2、編譯安裝php-5.4.26

   # tar xf php-5.4.26.tar.bz2

   # cd php-5.4.26

   # ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

--prefix=/usr/local/php

指定安裝路徑

--with-mysql=mysqlnd 

--with-pdo-mysql=mysqlnd 

--with-mysqli=mysqlnd

資料庫與php不在一個伺服器上,指定此種方式,安裝資料庫連接配接驅動

--enable-mbstring

多位元組字串、像我們的中文就是多位元組字串

--with-freetype-dir

支援freetype、就要裝freetype-devel、跟字型相關的、字型解析工具

--with-jpeg-dir

--with-png-dir

處理jpeg、png圖檔的、php可以動态生成jpeg圖檔

是個壓縮庫、在網際網路傳輸時用來壓縮傳輸的

--with-libxml-dir=/usr

這個libxml是用來解析xml的、指定/usr下

--enable-xml

支援xml的

--enable-sockets

支援基于sockets通信的

--enable-fpm

使用fpm服務

--with-mcrypt

libmcrypt-devel這個程式包所指定的

--with-config-file-path=/etc

指定配置檔案的存放路徑的

--with-config-file-scan-dir=/etc/php.d

去掃描指定目錄下以.d結束的檔案

--with-bz2

支援bz2壓縮格式

<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2LLWwZXmCAAL3jyd6JBM346.jpg" target="_blank"></a>

說明:

   1、這裡為了支援apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。

   2、如果使用PHP5.3以上版本,為了連結MySQL資料庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL用戶端庫綁定形成依賴),但從PHP 5.4開始它就是預設設定了。

   # ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

   # make

   # make intall

   為php提供配置檔案:

   # cp php.ini-production /etc/php.ini

配置php-fpm

   為php-fpm提供Sysv init腳本,并将其添加至服務清單:

   # cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

   # chmod +x /etc/rc.d/init.d/php-fpm

   # chkconfig --add php-fpm

   # chkconfig php-fpm on

<a href="http://s3.51cto.com/wyfs02/M02/23/6D/wKioL1M2L-XjCPltAAGXKwTniHw155.jpg" target="_blank"></a>

   為php-fpm提供配置檔案:

   # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 

   編輯php-fpm的配置檔案:

   # vim /usr/local/php/etc/php-fpm.conf

   配置fpm的相關選項為你所需要的值,并啟用pid檔案

   pm.max_children = 50

   pm.start_servers = 5

   pm.min_spare_servers = 2

   pm.max_spare_servers = 8

   pid加在[global]這個區域内

   pid = /usr/local/php/var/run/php-fpm.pid 

   再把配置檔案中所監聽的IP改為本主機的IP

   listen = 172.16.251.134:9000

<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2MEWCLuxjAAEM15wPdDk277.jpg" target="_blank"></a>

   接下來就可以啟動php-fpm了:

   # service php-fpm start

   使用如下指令來驗正(如果此指令輸出有中幾個php-fpm程序就說明啟動成功了):

   # ss -tnl | grep 9000

編輯apache配置檔案httpd.conf,以apache支援php

    # vim /etc/httpd24/httpd.conf

    1、添加如下二行

      AddType application/x-httpd-php  .php

      AddType application/x-httpd-php-source  .phps

<a href="http://s3.51cto.com/wyfs02/M01/23/6D/wKioL1M2MPiQA0nqAADCjZW7tns214.jpg" target="_blank"></a>

    2、定位至DirectoryIndex index.html 修改為:

       DirectoryIndex  index.php  index.html

<a href="http://s3.51cto.com/wyfs02/M00/23/6C/wKiom1M2MhTwYEu-AABTa9v4LfA760.jpg" target="_blank"></a>

    3、啟用httpd的相關子產品

       在Apache httpd 2.4以後已經專門有一個子產品針對FastCGI的實作,此子產品為mod_proxy_fcgi.so,它其實是作為mod_proxy.so子產品的擴充,是以,這兩個子產品都要加載

   LoadModule proxy_module modules/mod_proxy.so

   LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so    

<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2MMzhl9pqAADdPYOYigM868.jpg" target="_blank"></a>

   4、關閉正向代理

   ProxyRequests Off:關閉正向代理

   ProxyPassMatch:把以.php結尾的檔案請求發送到php-fpm程序,php-fpm至少需要知道運作的目錄和URI,是以這裡直接在fcgi://xxx.x.x.x:9000後指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。

<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2MeuR-18wAAF1bA7lgiU032.jpg" target="_blank"></a>

   而後重新啟動httpd,或讓其重新載入配置檔案即可測試php是否已經可以正常使用。

最後在php的指定的fcgi的路徑上提供一個php的測試頁面:    

<code># vim /usr/local/apache/htdocs/index.php </code>

<code>&lt;?php</code>

<code>      </code><code>$link</code> <code>= mysql_connect(</code><code>'172.16.251.171'</code><code>,</code><code>'wei'</code><code>,</code><code>'wei'</code><code>);</code>

<code>      </code><code>if</code> <code>(</code><code>$link</code><code>)</code>

<code>          </code><code>echo</code> <code>"Connection Success....."</code>

<code>      </code><code>else</code>

<code>          </code><code>echo</code> <code>"Connection Failrue....."</code>

<code>      </code><code>mysql_close();</code>

<code>      </code><code>phpinfo();</code>

<code>?&gt;</code>

<a href="http://s3.51cto.com/wyfs02/M01/23/6C/wKiom1M2MqCBKsxmAAEoSuq45M8575.jpg" target="_blank"></a>

為了說明問題、我們還要在httpd伺服器上提供一個靜态的html頁面:

   # vim /usr/local/apache/htdocs/test.html

   &lt;h2&gt;tanxw.blog.51cto.com&lt;/h2&gt;

<a href="http://s3.51cto.com/wyfs02/M00/23/6C/wKiom1M2MsSQETzjAABQMfOEbTM387.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/23/6D/wKioL1M2Mvez903XAADIxOZqpT0626.jpg" target="_blank"></a>

結束:

   OK、做到這裡算是分主機LAMP平台搭建算是有個大概了吧、頁面通路應該說沒有什麼問題了、都正常可以通路、東西好像有點多、不過都是前前的知識了、安裝程式包比較多點而了、最後、如果各位大神發現有什麼不妥或做得不好的可以留言哦、歡迎交流學習、在此謝謝您的關注!

本文轉自 wei0164 51CTO部落格,原文連結:http://blog.51cto.com/tanxw/1386381,如需轉載請自行聯系原作者