今天給大家帶來的是lamp的構架
一、lamp簡介
lamp(linux- apache-mysql-php)網站架構是目前國際流行的web架構,該架構包括:linux作業系統,apache網絡伺服器,mysql資料庫,perl、php或者python程式設計語言,所有組成産品均是開源軟體,是國際上成熟的架構架構,很多流行的商業應用都是采取這個架構。lamp具有通用、跨平台、高性能、低價格的 優勢,是以lamp無論是性能、品質還是價格都是企業搭建網站的首選平台。
二、相關說明
1、本篇(lamp系列之一)主要介紹整個平台架構的搭建:apache2.4.9的編譯安裝,mysql-5.5.33的安裝,php-5.4.26的編譯安裝,以及整個平台的互聯互通;第二篇将介紹《lamp的性能測試以及安裝xcache,為php加速》。
2、為了模拟環境的真實性,實驗中使用3台伺服器,apache伺服器,php伺服器和mysql資料庫伺服器
3、關于ip:apache(172.16.251.93),php(172.16.150.150),mysql(172.16.251.104)
4、介于在本文中會使用到名稱解析,而關于dns的博文在本部落格中已經有兩篇,是以這裡為了友善,不再搭建dns伺服器,而是使用修改hosts檔案來做名稱解析
三、apache2.4.9的編譯安裝
1、解決依賴關系
httpd-2.4.9需要較新版本的apr和apr-util,是以需要事先對其進行更新。事先我們還應該裝好開發包組和pcre。
1
2
3
<code>yum -y</code><code>install</code><code>pcre-devel</code>
<code>yum -y groupinstall</code><code>"development tools"</code>
<code>yum -y groupinstall</code><code>"server platform development"</code>
1)編譯安裝apr
4
<code># tar xf apr-1.5.0.tar.bz2</code>
<code># cd apr-1.5.0</code>
<code># ./configure --prefix=/usr/local/apr</code>
<code># make && make install</code>
2)編譯安裝apr-util
<code># tar xf apr-util-1.5.3.tar.bz2</code>
<code># cd apr-util-1.5.3</code>
<code># ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr</code>
2、編譯安裝httpd-2.4.9
<code># tar xf httpd-2.4.9.tar.bz2</code>
<code># cd httpd-2.4.9</code>
<code># ./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</code>
在httpd-2.4.9的安裝路徑選擇上,為了不和系統的httpd沖突,我們指定其安裝路徑為/usr/local/apache,配置檔案裝到/etc/httd24中,同時一會兒的服務也要改為httpd24
選項解釋說明:--prefix指定安裝路徑,--sysconfdir指定配置檔案目錄,--enalbe-so支援基于dmo的方式動态加載子產品,--enable-ssl支援https協定,--enable-cgi支援cgi機制,--enable-rewrite支援url重寫,--with-zlib支援網頁資料壓縮,--enable-modules=most啟用大多數的常用子產品,--with-mpm=event預設的mpm子產品為event
3、修改httpd的主配置檔案,設定其pid檔案的路徑
因為在httpd2.4中,其pid的位置變的很詭異,不再是在/var/run下,是以我們就給它修改到/var/run下,其實不改也無妨,隻要設定對了就好了
<code>vim</code><code>/etc/httpd/httpd</code><code>.conf</code>
<code>添加如下項</code>
<code>pidfile “/var/run/http24.pid”</code>
4、提供sysv服務腳本/etc/rc.d/init.d/http24
這個腳本就不寫了,直接稍微改改httpd的服務腳本就好了,先拷貝一份
修改httpd的腳本,改為适合httd24的,隻需把這幾個變量改了就好了,下面的start(),stop()等參數都是調用的這幾個變量,是以别的無需修改。儲存退出後不需要再給執行權限了,已經有了。
5、把httpd24添加到系統服務,并測試
6、導出頭檔案
7、導出man幫助手冊
8、輸出二進制程式
<code>#vim /etc/profile.d/httpd.sh</code>
<code>export</code><code>path=</code><code>/usr/local/apache/bin</code><code>:$path</code>
<code>#. /etc/profile.d/httpd.sh</code>
四、安裝mysql-5.5.33
1、準備資料存放的檔案系統
因為資料總是在動态增長的,是以我們要建立一個邏輯卷來儲存資料。使用/dev/sdb1這個分區來建立邏輯卷。
1)準備磁盤為lvm格式
2)建立lvm并格式化
2、設定開機自動挂載
這裡假設其邏輯卷的挂載目錄為/data,而後需要建立/data/mydata目錄做為mysql資料的存放目錄。
3、檢視挂載情況
4、為mysql準備系統使用者群組
5、進入/data挂載目錄,建立mydata資料存放的目錄,并修改屬主和屬組
6、解壓mysql并為其建立一個連結,以後更新的時候,直接改連結位址就可以了
7、進入/usr/local/mysql檔案夾,修改屬主與屬組
8、初始化系統庫,進入到/usr/local/mysql
9、為mysql提供主配置檔案,并修改此檔案中thread_concurrency的值為你的cpu個數乘以2,另外還需要添加如下行指定mysql資料檔案的存放位置
<code># cd /usr/local/mysql</code>
<code># cp support-files/my-large.cnf /etc/my.cnf</code>
10、為mysql提供sysv服務腳本并添加為系統服務
5
<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>
11、啟動mysql服務,看能否正常啟動
12、後續操作
為了使用mysql的安裝符合系統使用規範,并将其開發元件導出給系統使用,這裡還需要進行如下步驟:
1)輸出mysql的man手冊至man指令的查找路徑:
編輯/etc/man.config,添加如下行即可:
manpath /usr/local/mysql/man
2)輸出mysql的頭檔案至系統頭檔案路徑/usr/include:
這可以通過簡單的建立連結實作:
# ln -sv /usr/local/mysql/include /usr/include/mysql
3)輸出mysql的庫檔案給系統庫查找路徑:
# echo ‘/usr/local/mysql/lib‘ > /etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
4)修改path環境變量,讓系統可以直接使用mysql的相關指令。具體實作過程這裡不再給出。
# vim /etc/profile.d/mysql.sh
#export path=/usr/local/mysql/bin:$path
#. /etc/profile.d/mysql.sh
五、編譯安裝php-5.4.26
1、編譯安裝php ,步驟和上面的都一樣,就不再給圖了,隻給步驟
因為我們這裡php和mysql伺服器是分開部署的,不在本地,是以得考慮到資料庫的連接配接問題。
說明:如果使用php5.3以上版本,為了連結mysql資料庫,可以指定mysqlnd,這樣在本機就不需要先安裝mysql或mysql開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的mysql用戶端庫綁定形成依賴),但從php 5.4開始它就是預設設定了。
<code># tar xf php-5.4.26.tar.bz2</code>
<code># cd php-5.4.26</code>
<code># ./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</code>
<code># make</code>
<code># make intall</code>
2、為php提供配置檔案(我的php解壓在了/root/soft下,安裝在了/usr/local/php下)
<code>cp</code><code>/root/soft/php-5</code><code>.4.26</code><code>/php</code><code>.ini-production</code><code>/etc/php</code><code>.ini</code>
3、 編輯apache配置檔案httpd.conf,以apache支援php
<code># vim /etc/httpd24/httpd.conf</code>
<code>addtype application</code><code>/x-httpd-php</code><code>.php</code>
<code>addtype application</code><code>/x-httpd-php-source</code><code>.phps</code>
定位至directoryindex index.html
修改為:directoryindex index.php index.html
六、配置php-fpm
因為apache伺服器連接配接php伺服器是通過fastcgi協定的,是以我們還需通過php-fpm對其進行配置。
1、為php-fpm提供sysv init腳本,并将其添加至服務清單:
<code># cp /root/soft/php-5.4.26/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm</code>
<code># chmod +x /etc/rc.d/init.d/php-fpm</code>
<code># chkconfig --add php-fpm</code>
<code># chkconfig php-fpm on</code>
2、為php-fpm提供配置檔案:
<code># cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf</code>
3、配置php-fpm的相關選項,并啟用pid檔案
<code>pm.max_children = 50</code>
<code>pm.start_servers = 5</code>
<code>pm.min_spare_servers = 2</code>
<code>pm.max_spare_servers = 8</code>
<code>pid =</code><code>/usr/local/php/var/run/php-fpm</code><code>.pid</code>
4、修改fpm的預設監聽端口
預設情況下,fpm監聽在127.0.0.1的9000端口,也可以使用如下指令驗正其是否已經監聽在相應的套接字。
# netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* listen 689/php-fpm
是以我們要把監聽端口改到我們的php伺服器上
<code>vim</code><code>/usr/local/php/etc/php-fpm</code><code>.conf</code>
listen = 172.16.9.147:9000
接下來就可以啟動php-fpm并驗證其否成功監聽了
使用如下指令來驗正(如果此指令輸出有中幾個php-fpm程序就說明啟動成功了):
# ps aux | grep php-fpm
七、配置httpd-2.4.9
1、啟用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
2、配置虛拟主機支援使用fcgi
1)要使用虛拟主機,首先要關閉中心主機,再開啟虛拟主機的子產品兒,也是在/etc/httpd24/httpd.conf中
2)配置虛拟主機
<code>vim</code><code>/etc/httpd24/extra/httpd-vhosts</code><code>.conf</code>
proxypassmatch:把以.php結尾的檔案請求發送到php-fpm程序,php-fpm至少需要知道運作的目錄和uri,是以這裡直接在fcgi://127.0.0.1:9000後指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。是以在apache伺服器和php伺服器都應該建立/www/shuishui.com/這個目錄,然後把網頁檔案放到這個目錄中來,apache下要儲存靜态的index.html和動态的index.php,php伺服器上隻需儲存動态的index.php即可。
3、繼續編輯apache的主配置檔案,讓apache能識别php格式的頁面,并支援php格式的首頁
<code>vim</code><code>/etc/httpd24/httpd</code><code>.conf</code>
1)添加如下二行
addtype application/x-httpd-php .php
addtype application/x-httpd-php-source .phps
2)定位至 directoryindex index.html
修改為:directoryindex index.php index.html
八、測試apache伺服器與php伺服器的互連
在apache伺服器與php伺服器下的/www/shuishui.com/目錄中分别建立index.php。apache中的index.php隻需要有這個名就可以,因為它會去調用php伺服器中的php.index,是以php伺服器中的index.php必須要有内容。
給php伺服器中的首頁檔案來個測試頁,并重新開機下服務:
<code>service httpd24 restart</code>
到windows上去通路下www.shuishui.com試試,下面就是見證奇迹的時刻
apache與pah伺服器的互聯成功
補充:apache httpd 2.4以前的版本中,要麼把php作為apache的子產品運作,要麼添加一個第三方子產品支援php-fpm實作。
九、測試php伺服器與mysql伺服器的互聯
1、在php伺服器上的index.php中加入連接配接mysql伺服器的選項
2、測試能否成功連上mysql資料庫
哎,失敗了!這是為什麼呢?為什麼呢?雖然在index.php中要求連接配接資料庫,可是你想使用人家mysql的資源,也不獲得mysql的授權,這怎麼可以?除非你想黑了它。沒那技術就去拿授權吧!
3、在mysql伺服器上授權
4、再來,重新連接配接