標籤:分離式lamp
LAMP平台是常用的動態網站平台,現在很多情況下,因為業務請求的原因需要把Apache服務、Mysql(Mariadb)服務和PHP服務分別使用各自的Linux伺服器承載,下面我就總結一下分離式LAMP平台構建過程。(我這邊使用的源碼編譯安裝)
一、平台構建準備:
1、Centos 6.6 final系統三個(基礎安裝,裝有包組Development Tools):
192.168.2.3(Apache伺服器)
192.168.2.5(PHP伺服器)
192.168.2.6(Mariadb伺服器)
2、軟體版本選擇:
Apache:httpd-2.4.9 另包含apr-1.5.0和apr-util-1.5.3
PHP:php-5.4.26
Mariadb:mariadb-5.5.36
另外需要測試平台的軟體有資料庫管理軟體phpMyAdmin-4.0.5-all-languages和中文的部落格wordpress-4.2.2-zh_CN
二、分別構建各個伺服器:
@安裝Apache伺服器:
1、安裝apr:
#tar -xf apr-1.5.0.tar.bz2
#cd apr-1.5.0
#./configure --prefix=/usr/local/apr
#make && make install
2、安裝apr-util:
#tar -xf apr-util-1.5.3.gz.bz2
#cd apr-util-1.5.3
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make && make install
3、根據httpd-2.4的新特性,在編譯的時候,我們也可以指定一些特定的選項實現對應的效能。下面先總結一下新特性,再在編譯./configure時使用一些特定的選項。
①MPM支援在運行時裝載
②支援event MPM
③非同步讀寫
④在每模組及每目錄分別使用不同的記錄層級
⑤每請求的配置;<If>,<Elseif>
⑥增強版的運算式分析器
⑦毫秒級的keep alive的timeout
⑧基於FQDN的虛擬機器主機不再需要NameVirtualHost指令
⑨支援使用者使用自訂變數
第一個選項,使得我們可以在編譯的時候不再特定編譯成某個模式的多道處理模組,使得我們可以把這個系統當前支援的模式都編譯出來,根據需要再設定成相應的模式運行apache就可以了。
第二個選項,使得我們的apache的處理模組可以以線程方式運行。
#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 --enable-deflate --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-mpms-shared=all --with-mpm=event --enable-modules=most
#make && make install
在給定參數下檢查環境,少什麼就裝什麼。一般是裝XXX-devel包就可以了。
和以前那篇部落格一樣,編譯安裝就得手動去 添加PATH變數,匯出man手冊,若需要二次開發就匯出標頭檔,匯出庫檔案,當然服務指令碼是必須提供的,最後若是需要就是將服務加入服務列表chkconfig。
這個版本的設定檔有這些:
#/etc/httpd24為編譯安裝時定義的目錄 /etc/httpd24/httpd.conf # 主設定檔
/etc/httpd24/extra/httpd-default.conf # 預設設定檔(keepalive、AccessFileName等設定)
/etc/httpd24/extra/httpd-userdir.conf # 使用者目錄設定檔
/etc/httpd24/extra/httpd-mpm.conf # MPM設定檔
/etc/httpd24/extra/httpd-ssl.conf # SSL設定檔
/etc/httpd24/extra/httpd-vhosts.conf # 虛擬機器主機設定檔
/etc/httpd24/extra/httpd-info.conf # server-status頁面設定檔
httpd2.4不再支援使用order, allow, deny這些機制,而是統一使用require進行存取控制。
哦,都弄好了那就啟動apache服務吧,不過要記得關閉或允許存取Selinux和iptables哦。
@安裝Mariadb伺服器:
這個伺服器我直接下載的二進位包解壓配置就行了。不過為了保證資料的安全和其它操作的方便,準備把資料庫的資料存放目錄單獨設定出來,不使用預設的。
具體命令就不寫了,無非就是加個分區,格式化成所需要的檔案系統類型,編輯/etc/fstab,掛載到系統某個路徑,我這裡是/mydata/data。
因為是二進位包解壓這樣安裝的,所以為了服務啟動並執行穩定和系統的安全,最好使用特定的使用者來運行。
#groupadd -r mysql #建立一個系統使用者組
#useradd -g mysql -r mysql #建立以mysql使用者組為基本使用者組的系統使用者mysql
#id mysql #建立完了使用id命令查看結果
#chown -R mysql.mysql /mydata/data #將資料存放目錄的屬主和屬組修改成我們建立以運行mariadb的使用者和其使用者組
接著就是解壓安裝Mariadb了:
#tar -xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local/ # -C指定解壓到哪個目錄
#cd /usr/local
#ln -sv mariadb-5.5.36-linux-x86_64 mysql #建立軟連結方便使用
#chown -R mysql.msyql ./mysql #將程式目錄的屬主和屬組修改成我們建立以運行mariadb的使用者和其使用者組
接下來就是提供設定檔並初始化資料庫了。
#mkdir /etc/mysql #建立資料庫設定檔的目錄,不直接放/etc下面以方便區分
#cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf
#vim /etc/mysql/my.cnf
修改thread_concurrency後面的數值為CPU數量的2倍
添加datadir = /mydata/data 以指明資料檔案存放的位置
初始化資料庫#/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data
接著當然也是提供指令碼,加入服務列表,添加PATH變數,匯出man手冊、庫檔案和標頭檔,就可以正常啟動服務了。
服務指令碼是#cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
#chmod +x /etc/rc.d/init.d/mysqld
@安裝PHP伺服器
同樣還是先解決依賴問題,最好先裝上bzip2-devel和libmcrypt-devel這兩個開發包。
同樣的步驟:
#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 --with-openssl
#make && make install
因為是分離式的,而且PHP的版本是5.4的版本,所以不用指定mysql位置,統一使用PHP自己開發的mysqlnd這個驅動來串連遠端Mysql伺服器,--with-jpeg和png可以使請求能更快的響應,mbstring可以使用不同類型的字元集,enable-fpm啟用Fast-cgi 進程管理器。
同樣的提供服務指令碼,設定檔,因為LAMP是以PHP-FPM的方式工作的,所以設定檔是要2份的。
#cp /php-5.4.26/php.ini-production /etc/php.ini
PHP-FPM設定檔是:
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
PHP-FPM服務指令碼
#cp /php-5.4.26/sapi/ftp/init.d.php-fpm /etc/rc.d/init.d/php-fpm
PHP-FPM設定檔修改以下部分:
pid =/usr/local/php/var/run/php-fpm.pid
listen = 172.16.10.110:9000
pm.max_children = 25 #最大子進程數
pm.start_servers = 5 #開機開機前子進程數
pm.min_spare_servers = 2 #最小空閑子進程數
pm.max_spare_servers = 6 #最大空閑子進程數
加入服務列表後,啟動服務,
使用#ss -tnl | grep 9000查看是否服務已經正常啟動了。
@將httpd、PHP和Mariadb三個伺服器串連起來
首先,我們先將三台伺服器的iptables和selinux關閉或允許存取。
然後,修改httpd伺服器的相關配置以使其能結合PHP工作:
載入相應的模組,使請求動態內容如PHP頁面能反向 Proxy
#vim httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
如果要使用虛擬機器主機,就得注釋掉主設定檔裡的
#DocumentRoot "/usr/local/apache/htdocs" #這樣來關閉主伺服器
同時添加Include /etc/httpd24/extra/httpd-vhost來開啟虛擬機器主機
為了支援PHP,還得在主設定檔裡面加入以下內容
找到AddType添加以下內容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
另外找到Directory
在後面加上 index.php添加網站預設首頁。
不管是虛擬機器主機還是主伺服器配置,要串連PHP都得關閉正向 Proxy匹配,啟用反向 Proxy所有請求的php頁面。
在配置段內是這樣實現的:
ProxyRequests Off #關閉正向 Proxy
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.10.110:9000/web/pma/$1 #代理至php伺服器
這些差不多就完成了分離式LAMP平台的構建了。
還有一些小tips:
如每安裝完一個伺服器,可以先單獨測試那個伺服器能不能正常使用;如httpd寫個測試頁訪問一下;Mariadb串連到伺服器試一下,對了,遠程主機串連資料庫伺服器還得在資料庫做相應的使用者添加和設定哦;
另分離式的LAMP平台,最好就把網站目錄使用共用的檔案系統,這樣就可以保證httpd伺服器和PHP伺服器的網站目錄內容是一樣的了,這裡就沒有實驗哈。
分離式LAMP平台構建