分離式LAMP平台構建

來源:互聯網
上載者:User

標籤:分離式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平台構建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.