LAMP簡介
LAMP(Linux- Apache-MySQL-PHP)網(wǎng)站架構(gòu)是目前國際流行的Web框架庶柿,該框架包括:Linux操作系統(tǒng),Apache網(wǎng)絡(luò)服務(wù)器秽浇,MySQL數(shù)據(jù)庫浮庐,Perl、PHP或者Python編程語言柬焕,所有組成產(chǎn)品均是開源軟件审残,是國際上成熟的架構(gòu)框架,很多流行的商業(yè)應(yīng)用都是采取這個架構(gòu)斑举。LAMP具有通用搅轿、跨平臺、高性能懂昂、低價格的 優(yōu)勢介时,因此LAMP無論是性能、質(zhì)量還是價格都是企業(yè)搭建網(wǎng)站的首選平臺凌彬。
相關(guān)說明
1沸柔、本篇(LAMP系列之一)主要介紹整個平臺架構(gòu)的搭建:Apache2.4.9的編譯安裝,mysql-5.5.33的安裝铲敛,php-5.4.26的編譯安裝褐澎,以及整個平臺的互聯(lián)互通;第二篇將介紹《LAMP的性能測試以及安裝xcache伐蒋,為php加速》工三。
2、為了模擬環(huán)境的真實(shí)性先鱼,實(shí)驗(yàn)中使用3臺服務(wù)器俭正,Apache服務(wù)器,php服務(wù)器和Mysql數(shù)據(jù)庫服務(wù)器
3焙畔、關(guān)于IP:Apache(172.16.251.93)掸读,php(172.16.150.150),Mysql(172.16.251.104)
4、介于在本文中會使用到名稱解析儿惫,而關(guān)于DNS的博文在本博客中已經(jīng)有兩篇澡罚,所以這里為了方便,不再搭建DNS服務(wù)器肾请,而是使用修改hosts文件來做名稱解析
Apache2.4.9的編譯安裝
1留搔、解決依賴關(guān)系
httpd-2.4.9需要較新版本的apr和apr-util,因此需要事先對其進(jìn)行升級铛铁。事先我們還應(yīng)該裝好開發(fā)包組和pcre隔显。
yum -y install pcre-devel
yum -y groupinstall "Development tools"
yum -y groupinstall "Server Platform Development"
對于安裝過程中使用的apr,apr-util和httpd就使用下圖中的這幾個
1.1、編譯安裝apr
tar xf apr-1.5.0.tar.bz2
cd apr-1.5.0
./configure --prefix=/usr/local/apr
make && make install
1.2避归、編譯安裝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
1.3荣月、編譯安裝httpd-2.4.9
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
- 在httpd-2.4.9的安裝路徑選擇上,為了不和系統(tǒng)的httpd沖突梳毙,我們指定其安裝路徑為/usr/local/apache,配置文件裝到/etc/httd24中哺窄,同時一會兒的服務(wù)也要改為httpd24
- 選項(xiàng)解釋說明:--prefix指定安裝路徑,--sysconfdir指定配置文件目錄账锹,--enalbe-so支持基于DMO的方式動態(tài)加載模塊萌业,--enable-ssl支持https協(xié)議,--enable-cgi支持cgi機(jī)制奸柬,--enable-rewrite支持URL重寫生年,--with-zlib支持網(wǎng)頁數(shù)據(jù)壓縮,--enable-modules=most啟用大多數(shù)的常用模塊廓奕,--with-mpm=event默認(rèn)的mpm模塊為event
2抱婉、修改httpd的主配置文件,設(shè)置其pid文件的路徑 因?yàn)樵趆ttpd2.4中桌粉,其pid的位置變的很詭異蒸绩,不再是在/var/run下,所以我們就給它修改到/var/run下铃肯,其實(shí)不改也無妨患亿,只要設(shè)置對了就好了
vim /etc/httpd/httpd.conf
3、提供SysV服務(wù)腳本/etc/rc.d/init.d/http24
這個腳本就不寫了押逼,直接稍微改改httpd的服務(wù)腳本就好了步藕,先拷貝一份
4、修改httpd的腳本挑格,改為適合httd24的咙冗,只需把這幾個變量改了就好了,下面的start(),stop()等參數(shù)都是調(diào)用的這幾個變量漂彤,所以別的無需修改雾消。保存退出后不需要再給執(zhí)行權(quán)限了瞬逊,已經(jīng)有了。
5仪或、把httpd24添加到系統(tǒng)服務(wù),并測試
6士骤、導(dǎo)出頭文件
7范删、導(dǎo)出man幫助手冊
8、輸出二進(jìn)制程序
vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
. /etc/profile.d/httpd.sh
四拷肌、安裝mysql-5.5.33
1到旦、準(zhǔn)備數(shù)據(jù)存放的文件系統(tǒng)
因?yàn)閿?shù)據(jù)總是在動態(tài)增長的,所以我們要創(chuàng)建一個邏輯卷來保存數(shù)據(jù)巨缘。使用/dev/sdb1這個分區(qū)來創(chuàng)建邏輯卷添忘。
1)準(zhǔn)備磁盤為LVM格式
2)創(chuàng)建lvm并格式化
2、設(shè)置開機(jī)自動掛載
這里假設(shè)其邏輯卷的掛載目錄為/data若锁,而后需要創(chuàng)建/data/mydata目錄做為mysql數(shù)據(jù)的存放目錄搁骑。
3、查看掛載情況
4又固、為mysql準(zhǔn)備系統(tǒng)用戶和組
5仲器、進(jìn)入/data掛載目錄,創(chuàng)建mydata數(shù)據(jù)存放的目錄仰冠,并修改屬主和屬組
6乏冀、解壓mysql并為其創(chuàng)建一個鏈接,以后升級的時候洋只,直接改鏈接地址就可以了
7辆沦、進(jìn)入/usr/local/mysql文件夾,修改屬主與屬組
8识虚、初始化系統(tǒng)庫肢扯,進(jìn)入到/usr/local/mysql
9、為mysql提供主配置文件舷礼,并修改此文件中thread_concurrency的值為你的CPU個數(shù)乘以
2鹃彻,另外還需要添加如下行指定mysql數(shù)據(jù)文件的存放位置
cd /usr/local/mysql
cp support-files/my-large.cnf /etc/my.cnf
10、為mysql提供sysv服務(wù)腳本并添加為系統(tǒng)服務(wù)
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
11妻献、啟動mysql服務(wù)蛛株,看能否正常啟動
12、后續(xù)操作
為了使用mysql的安裝符合系統(tǒng)使用規(guī)范育拨,并將其開發(fā)組件導(dǎo)出給系統(tǒng)使用谨履,這里還需要進(jìn)行如下步驟:
1)輸出mysql的man手冊至man命令的查找路徑:
編輯/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
2)輸出mysql的頭文件至系統(tǒng)頭文件路徑/usr/include:
這可以通過簡單的創(chuàng)建鏈接實(shí)現(xiàn):
# ln -sv /usr/local/mysql/include /usr/include/mysql
3)輸出mysql的庫文件給系統(tǒng)庫查找路徑:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而后讓系統(tǒng)重新載入系統(tǒng)庫:
# ldconfig
4)修改PATH環(huán)境變量熬丧,讓系統(tǒng)可以直接使用mysql的相關(guān)命令笋粟。具體實(shí)現(xiàn)過程這里不再給出。
# vim /etc/profile.d/mysql.sh
#export PATH=/usr/local/mysql/bin:$PATH
#. /etc/profile.d/mysql.sh
五、編譯安裝php-5.4.26
1害捕、編譯安裝php 绿淋,步驟和上面的都一樣,就不再給圖了尝盼,只給步驟
因?yàn)槲覀冞@里php和mysql服務(wù)器是分開部署的吞滞,不在本地,所以得考慮到數(shù)據(jù)庫的連接問題盾沫。
說明:如果使用PHP5.3以上版本裁赠,為了鏈接MySQL數(shù)據(jù)庫,可以指定mysqlnd赴精,這樣在本機(jī)就不需要先安裝MySQL或MySQL開發(fā)包了佩捞。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴)蕾哟,但從PHP 5.4開始它就是默認(rèn)設(shè)置了一忱。
tar xf php-5.4.26.tar.bz2
cd php-5.4.26
./configure --prefix=/usr/local/php --with-openssl --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 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
make
make intall
2、為php提供配置文件(我的php解壓在了/root/soft下谭确,安裝在了/usr/local/php下)
cp /root/soft/php-5.4.26/php.ini-production /etc/php.ini
3掀潮、 編輯apache配置文件httpd.conf,以apache支持php
3# vim /etc/httpd24/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改為:DirectoryIndex index.php index.html
六琼富、配置php-fpm
因?yàn)锳pache服務(wù)器連接php服務(wù)器是通過fastcgi協(xié)議的仪吧,因此我們還需通過php-fpm對其進(jìn)行配置。
1鞠眉、為php-fpm提供SysV init腳本薯鼠,并將其添加至服務(wù)列表:
cp /root/soft/php-5.4.26/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
2、為php-fpm提供配置文件:
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
3械蹋、配置php-fpm的相關(guān)選項(xiàng)出皇,并啟用pid文件
···
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php/var/run/php-fpm.pid
pm.max_children:靜態(tài)方式下開啟的php-fpm進(jìn)程數(shù)量。
pm.start_servers:動態(tài)方式下的起始php-fpm進(jìn)程數(shù)量哗戈。
pm.min_spare_servers:動態(tài)方式下的最小php-fpm進(jìn)程數(shù)量郊艘。
pm.max_spare_servers:動態(tài)方式下的最大php-fpm進(jìn)程數(shù)量。
如果dm設(shè)置為static唯咬,那么其實(shí)只有pm.max_children這個參數(shù)生效纱注。系統(tǒng)會開啟設(shè)置數(shù)量的php-fpm進(jìn)程。
如果dm設(shè)置為dynamic胆胰,那么pm.max_children參數(shù)失效狞贱,后面3個參數(shù)生效。系統(tǒng)會在php-fpm運(yùn)行開始的時候啟動pm.start_servers個php-fpm進(jìn)程蜀涨,然后根據(jù)系統(tǒng)的需求動態(tài)在pm.min_spare_servers和pm.max_spare_servers之間調(diào)整php-fpm進(jìn)程數(shù)瞎嬉。
···
4蝎毡、修改fpm的默認(rèn)監(jiān)聽端口
默認(rèn)情況下,fpm監(jiān)聽在127.0.0.1的9000端口氧枣,也可以使用如下命令驗(yàn)正其是否已經(jīng)監(jiān)聽在相應(yīng)的套接字沐兵。
netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm
所以我們要把監(jiān)聽端口改到我們的php服務(wù)器上
vim /usr/local/php/etc/php-fpm.conf
接下來就可以啟動php-fpm并驗(yàn)證其否成功監(jiān)聽了
使用如下命令來驗(yàn)正(如果此命令輸出有中幾個php-fpm進(jìn)程就說明啟動成功了):
ps aux | grep php-fpm
七、配置httpd-2.4.9
1便监、啟用httpd的相關(guān)模塊
在Apache httpd 2.4以后已經(jīng)專門有一個模塊針對FastCGI的實(shí)現(xiàn)痒筒,此模塊為mod_proxy_fcgi.so,它其實(shí)是作為mod_proxy.so模塊的 擴(kuò)充茬贵,因此,這兩個模塊都要加載
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2移袍、配置虛擬主機(jī)支持使用fcgi
1)要使用虛擬主機(jī)解藻,首先要關(guān)閉中心主機(jī),再開啟虛擬主機(jī)的模塊兒葡盗,也是在/etc/httpd24/httpd.conf中
2)配置虛擬主機(jī)
vim /etc/httpd24/extra/httpd-vhosts.conf
ProxyPassMatch:把以.php結(jié)尾的文件請求發(fā)送到php-fpm進(jìn)程螟左,php-fpm至少需要知道運(yùn)行的目錄和URI,所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個參數(shù)觅够,其它的參數(shù)的傳遞已經(jīng)被mod_proxy_fcgi.so進(jìn)行了封裝胶背,不需要手動指定。所以在Apache服務(wù)器和php服務(wù)器都應(yīng)該建立/www/shuishui.com/這個目錄喘先,然后把網(wǎng)頁文件放到這個目錄中來钳吟,Apache下要保存靜態(tài)的index.html和動態(tài)的index.php,php服務(wù)器上只需保存動態(tài)的index.php即可窘拯。
3红且、繼續(xù)編輯Apache的主配置文件,讓apache能識別php格式的頁面涤姊,并支持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
八暇番、測試Apache服務(wù)器與php服務(wù)器的互連
在Apache服務(wù)器與php服務(wù)器下的/www/shuishui.com/目錄中分別創(chuàng)建index.php。Apache中的index.php只需要有這個名就可以思喊,因?yàn)樗鼤フ{(diào)用php服務(wù)器中的php.index壁酬,所以php服務(wù)器中的index.php必須要有內(nèi)容。
給php服務(wù)器中的主頁文件來個測試頁恨课,并重啟下服務(wù):
service httpd24 restart
到windows上去訪問下www.shuishui.com試試舆乔,下面就是見證奇跡的時刻
Apache與pah服務(wù)器的互聯(lián)成功
補(bǔ)充:Apache httpd 2.4以前的版本中,要么把PHP作為Apache的模塊運(yùn)行剂公,要么添加一個第三方模塊支持PHP-FPM實(shí)現(xiàn)蜕煌。
九、測試php服務(wù)器與mysql服務(wù)器的互聯(lián)
1诬留、在php服務(wù)器上的index.php中加入連接mysql服務(wù)器的選項(xiàng)
2斜纪、測試能否成功連上mysql數(shù)據(jù)庫
哎贫母,失敗了!這是為什么呢盒刚?為什么呢腺劣?雖然在index.php中要求連接數(shù)據(jù)庫,可是你想使用人家mysql的資源因块,也不獲得mysql的授權(quán)橘原,這怎么可以?除非你想黑了它涡上。沒那技術(shù)就去拿授權(quán)吧趾断!
3、在mysql服務(wù)器上授權(quán)
4吩愧、再來芋酌,重新連接
本文出自 “nmshuishui的博客” 博客,請務(wù)必保留此出處http://nmshuishui.blog.51cto.com/1850554/1381822