前言
前面的文章我們談到過了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的=======================
以上準備了好多的程序包呀、但他們不是都放在一臺主機上的、上面我們有說明的哦、這裏還要注意的是服務器配置安裝的順序問題,如果是在同一臺主機上安裝搭建LAMP平臺主話,那麼就必須把php放到最後去安裝,因爲php的安裝要依賴於httpd和要用到的mysql、而我們這裏分別置於不同的主機上實現LAMP平臺,因此沒有太多的順序要求,但是,還是建議建議先安裝httpd、mysql然後再安裝php。
以下是LAMP的工作過程中使用到的協議以及工作圖:
補充:
(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 && 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
# make && make install
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
# make && make install
--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}
添加至系統服務、並開機自動啓動
# chkconfig --add httpd24
# chkconfig httpd24 on
修改配置文件、主要是添加一條PidFile的文件路徑。這裏系統讀取PidFile的順序是配置文件、服務腳本,如果配置文件沒有,再去×××腳本。
# vim /etc/httpd24/httpd.conf
PidFile "/var/run/httpd/httpd.pid"
mysql 5.5編譯安裝過程
1、準備數據存放的文件系統、這裏我們新建一個分區來專門存放數據文件、新建一個邏輯卷,並將其掛載至/data、這個應該很熟悉了、這裏不做過多的解釋、什麼可以留言交流。
############這些不做過多的解析、一看就明白了################ # mkdir /data # fdisk /dev/sda n p 3 +20G t 3 8e w # pvcreate /dev/sda3 # vgcreate myvg /dev/sda3 # lvcreate -L 10G -n mydata myvg # mke2fs -t ext4 /dev/myvg/mydata # vim /etc/fstab /dev/myvg/mydata /data ext4 defaults,noatime 0 0 # monut -a # cd /data/ # mkdir mydata
2、新建用戶以安全方式運行進程:
# groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql # chown -R mysql:mysql /mydata/data
3、安裝並初始化mysql-5.5.33
# tar xf mysql-5.5.33-linux2.6-i686.tar.gz -C /usr/local # cd /usr/local/ # ln -sv mysql-5.5.33-linux2.6-i686 mysql # cd mysql # chown -R mysql:mysql . # scripts/mysql_install_db --user=mysql --datadir=/mydata/data # chown -R root .
4、爲mysql提供主配置文件:
# cd /usr/local/mysql # cp support-files/my-large.cnf /etc/my.cnf
並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,比如這裏使用如下行:
thread_concurrency = 2
另外還需要添加如下行指定mysql數據文件的存放位置:
datadir = /mydata/data
5、爲mysql提供sysv服務腳本:
# cd /usr/local/mysql # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld
添加至服務列表、而後就可以啓動服務測試使用了:
# chkconfig --add mysqld # chkconfig mysqld on # service mysqld start
爲了使用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' > /etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
9、修改PATH環境變量,讓系統可以直接使用mysql的相關命令:
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
啓動服務、查看監聽的端口、3306:
php 5.4編譯安裝過程
1、解決依賴關係、請配置好yum源(可以是本地系統光盤)後執行如下命令:
# 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-zlib | 是個壓縮庫、在互聯網傳輸時用來壓縮傳輸的 |
--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壓縮格式 |
說明:
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
爲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
接下來就可以啓動php-fpm了:
# service php-fpm start
使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啓動成功了):
# ss -tnl | grep 9000
# ps aux | grep php-fpm
編輯apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd24/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html 修改爲:
DirectoryIndex index.php index.html
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
4、關閉正向代理
ProxyRequests Off:關閉正向代理
ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這裏直接在fcgi://xxx.x.x.x:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。
而後重新啓動httpd,或讓其重新載入配置文件即可測試php是否已經可以正常使用。
最後在php的指定的fcgi的路徑上提供一個php的測試頁面:
# vim /usr/local/apache/htdocs/index.php <?php $link = mysql_connect('172.16.251.171','wei','wei'); if ($link) echo "Connection Success....." else echo "Connection Failrue....." mysql_close(); phpinfo(); ?>
爲了說明問題、我們還要在httpd服務器上提供一個靜態的html頁面:
# vim /usr/local/apache/htdocs/test.html
<h2>tanxw.blog.51cto.com</h2>
結束:
OK、做到這裏算是分主機LAMP平臺搭建算是有個大概了吧、頁面訪問應該說沒有什麼問題了、都正常可以訪問、東西好像有點多、不過都是前前的知識了、安裝程序包比較多點而了、最後、如果各位大神發現有什麼不妥或做得不好的可以留言哦、歡迎交流學習、在此謝謝您的關注!