CentOS 6系統的 lamp (編譯安裝,模塊或php-fpm)詳解

        

   LAMP 是指一組通常一起使用來運行動態網站或者服務器的 自由軟件 名稱首字母縮寫:

            1、Linux;操作系統;

            2、Apache;網頁服務器;

            3、 MariaDB或MySQL,數據庫管理系統(或者數據庫服務器);

            4、PHP、Perl或Python,腳本語言;


  實驗要求:

           (1) 三者分離於兩臺或三臺主機;

           (2) 一個虛擬主機用於提供phpMyAdmin;另一個虛擬主機用於提供wordpress;

           (3) xcache

           (4) 嘗試mpm爲非prefork機制;




       

   IP  系統  軟件
192.168.1.102 CentOS 6.7httpd(event)
192.168.1.103 CentOS 6.7php-fpm,xcache
192.168.1.104 CentOS 6.7 mariadb



         CentOS 6:

            PHP-5.3.2-:默認不支持fpm機制;需要自行打補丁並編譯安裝;

            httpd-2.2:默認不支持fcgi協議,需要自行編譯此模塊;



           解決方案:編譯安裝httpd-2.4,apr,apr-util版本爲1.4+,php-5.3.3+;


          實驗安裝版本:httpd-2.4.10 + apr-1.5.0+ apr-util-1.5.3 + php-5.4.40 + xcache-3.2.0 + mariadb-5.5.46

    

             




                  wKiom1dTuyqgmu3UAABMnwaJ4hY069.png





 

 192.168.1.102主機,編譯安裝httpd-2.4.10 +  apr-1.5.0 +  apr-util-1.5.3


    httpd-2.4.10需要較新版本的apr和apr-util,因此需要事先對其進行升級,這裏使用源代碼編譯安裝。

               apr和apr-util的包下載地址:https://archive.apache.org/dist/apr/ 
               httpd程序源碼包下載地址https://archive.apache.org/dist/httpd/


    

   1、安裝開發環境包組和開發程序包


     #  hwclock -s  //將軟件時間同步爲硬件時間

    yum grouplist  //查看包組

     # yum groupinstall "Development Tools" "Server Platform Development" -y   //開發環境包組

     # yum install pcre-devel -y      //httpd-2.4.10編譯過程要依賴於pcre-devel軟件包

    


    wKiom1dT35vB_dGXAAA_7YEN8CQ911.png


   2、編譯安裝apr


    # tar xf apr-1.5.0.tar.bz2

    # cd apr-1.5.0

    # ./configure --prefix=/usr/local/apr   

    # make && make install


    wKioL1dTxIiDAvrpAAAq2RHrPbY500.png


   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


     wKiom1dTxGChfes7AAAUSmGPZcs757.png


   4、編譯安裝並配置httpd-2.4.10

    

    4.1 編譯安裝


     # rpm -qa httpd      

    httpd-2.2.15-45.el6.centos.x86_64

     # yum remove httpd -y  //卸載之前rpm包安裝的httpd

 

    # tar xf httpd-2.4.10.tar.bz2

    # cd httpd-2.4.10

     # ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-cgid --enable-rewrite --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

    # make && make install

 


       

      //sysconfdir=/etc/httpd24    指定配置文件安裝位置

        //enable-so    支持動態共享模塊(DOS),如果沒有這個模塊PHP將無法與apache結合工作

        //enable-ssl    支持ssl功能

       //enable-proxy   支持代理

      //enable-proxy-fcgi  支持fcgi

        // enable-cgi    支持cgi

        //enable-rewrite    支持URL重寫

        //enable-modules=most    啓用哪些模塊

        //enable-mpms-shared=all  支持多道處理模塊

        //with-mpm=event     設定默認模塊爲prefork模塊

        //with-zlib    支持壓縮庫,便於頁面壓縮後的發送和接收,互聯網傳播時可節約帶寬

        //with-pcre    支持cre擴展的正則表達式,支持更強大的正則表達式分析功能




    

    4.2 修改httpd.pid路徑,默認安裝時的路徑在/usr/local/apache24/logs


         # /usr/local/apache24/bin/apachectl start

          wKioL1dhIALxiSzrAAAXW3yGJFU359.png

            # /usr/local/apache24/bin/apachectl stop

            # vim /etc/httpd24/httpd.conf

               pidfile "/var/run/httpd.pid" //在ServerRoot "/usr/local/apache24" 下面添加這一行

        

            # /usr/local/apache24/bin/apachectl start

            # ls /var/run  //發現httpd.pid出現


    4.3 修改PATH環境變量,讓系統可以直接使用apachectl的相關命令



        # vim  /etc/profile.d/httpd24.sh

         export PATH=/usr/local/apache24/bin:$PATH  

 

      編輯配置文件(全局有效且重啓shell後依然有效)此時,環境變量不會立即生效,但是對新登錄的用戶有效,然後新用戶登錄進行驗證


    wKioL1dTzWjy_8PUAAA2eY-cEAg497.png


    

   4.4、提供SysV服務腳本/etc/rc.d/init.d/httpd24


     # vim /etc/rc.d/init.d/httpd24  //內容如下


   

    #!/bin/bash

    #

    # httpd        Startup script for the Apache HTTP Server

    #

    # chkconfig: - 85 15

    # description: Apache is a World Wide Web server.  It is used to serve \

    #        HTML files and CGI.

    # processname: httpd

    # config: /etc/httpd24/httpd.conf

    # config: /etc/sysconfig/httpd24

    # pidfile: /var/run/httpd.pid

    

    # Source function library.

    . /etc/rc.d/init.d/functions

    

    if [ -f /etc/sysconfig/httpd24 ]; then

            . /etc/sysconfig/httpd24

    fi

    

    # Start httpd in the C locale by default.

    HTTPD_LANG=${HTTPD_LANG-"C"}

    

    # This will prevent initlog from swallowing up a pass-phrase prompt if

    # mod_ssl needs a pass-phrase from the user.

    INITLOG_ARGS=""

    

    # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

    # with the thread-based "worker" MPM; BE WARNED that some modules may not

    # work correctly with a thread-based MPM; notably PHP will refuse to start.

    

    # Path to the apachectl script, server binary, and short-form for messages.

    apachectl=/usr/local/apache24/bin/apachectl

    httpd=${HTTPD-/usr/local/apache24/bin/httpd}

    prog=httpd

    pidfile=${PIDFILE-/var/run/httpd.pid}

    lockfile=${LOCKFILE-/var/lock/subsys/httpd}

    RETVAL=0

    

    start() {

            echo -n $"Starting $prog: "

            LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

            RETVAL=$?

            echo

            [ $RETVAL = 0 ] && touch ${lockfile}

            return $RETVAL

    }

    

    stop() {

      echo -n $"Stopping $prog: "

      killproc -p ${pidfile} -d 10 $httpd

      RETVAL=$?

      echo

      [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

    }

    reload() {

        echo -n $"Reloading $prog: "

        if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

            RETVAL=$?

            echo $"not reloading due to configuration syntax error"

            failure $"not reloading $httpd due to configuration syntax error"

        else

            killproc -p ${pidfile} $httpd -HUP

            RETVAL=$?

        fi

        echo

    }

    

    # See how we were called.

    case "$1" in

      start)

      start

      ;;

      stop)

      stop

      ;;

      status)

            status -p ${pidfile} $httpd

      RETVAL=$?

      ;;

      restart)

      stop

      start

      ;;

      condrestart)

      if [ -f ${pidfile} ] ; then

        stop

        start

      fi

      ;;

      reload)

            reload

      ;;

      graceful|help|configtest|fullstatus)

      $apachectl $@

      RETVAL=$?

     ;;

      *)

     echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

      exit 1

    esac

    

    exit $RETVAL


    

    而後爲此腳本賦予執行權限:

    # chmod +x /etc/rc.d/init.d/httpd24


    加入服務列表:

    # chkconfig --add httpd24

    

    開機自動啓動

    # chkconfig httpd24 on 


    啓動服務

    # service httpd24 start

    # ss -tnl


    wKiom1dhIE6CNwEPAAAfjEbjGOg205.png

    




  附加:這裏httpd編譯安裝時指定MPM模塊類型爲event,想要切換MPM中的類型可以編輯主配置文件即可。

       

    例如:改爲prefork模型

        

           # vim /etc/httpd24/httpd.conf  //編輯生成的主配置文件


         Include /etc/httpd24/extra/httpd-mpm.conf   //去掉註釋符,啓用extra模塊

        # LoadModule mpm_event_module modules/mod_mpm_event.so  //註釋掉當前模型

         LoadModule mpm_prefork_module modules/mod_mpm_prefork.so  //改成要使用的MPM模塊類型

          

        

      重啓httpd服務後發現MPM模塊類型切換爲prefork模型


        # httpd -M


        wKiom1dTB2HCojPRAAA25YyAXqU015.png



二、192.168.1.104主機,通用二進制格式安裝mariadb-5.5.46

    


   1、下載加壓mariadb


  下載平臺對應的mysql版本至本地,下載地址爲https://downloads.mariadb.com/archives/


     # tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local

     # cd /usr/local/

     # ln -sv mariadb-5.5.46-linux-x86_64/ mysql

     # cd mysql


   2、創建用戶以安全方式運行進程


     # groupadd -r -g 306 mysql

     # useradd -g 306 -r -u 306 mysql

     # chown -R mysql:mysql /usr/local/mysql/*

    

   3、準備數據存放的文件系統


    新建一個邏輯卷,並將其掛載至特定目錄即可。這裏假設其邏輯卷的掛載目錄爲/mydata,而後需要創建/mydata/data目錄做爲mysql數據的存放目錄。


     # mkdir /mydata/data -pv

     # chown -R mysql.mysql /mydata/data

     # chmod 750 /mydata/data

   4、初始化mysql-5.5.46


     # cd /usr/local/mysql

     # scripts/mysql_install_db --user=mysql --datadir=/mydata/data

    

 

    5、爲mysql提供主配置文件


    

    # cd /usr/local/mysql

    # cp support-files/my-large.cnf  /etc/my.cnf

    # vim /etc/my.cnf

    cat /proc/cpuinfo  //查看CPU個數


    並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,比如這裏使用如下行:

    thread_concurrency = 2


    另外還需要在[mysqld]下添加數據文件的存放位置:

    datadir = /mydata/data

     

    wKiom1dS4-ThMJxeAAAdH5tx1rM199.png


   6、爲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


   7、啓動mysql服務


    # service mysqld start

    wKioL1dS5djC4PldAAAZjRFt-a8338.png


   8、修改PATH環境變量,讓系統可以直接使用mysql的相關命令

    

       此時必須指明全路徑纔可以進入mysql命令行界面,想要直接使用mysql進入命令行,需要編輯配置文件(全局有效且重啓shell後依然有效,對當前shell無效,需要登出再登入) 

     wKiom1dS5zChYrXwAAAdQUmUdSA058.png   

    

     # vim  /etc/profile.d/mysql.sh


     export PATH=/usr/local/mysql/bin:$PATH 

    

    wKiom1dS6AHgzYh7AAAsNwHiL34612.png



  爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:


   9、輸出mysql的man手冊至man命令的查找路徑


       編輯/etc/man.config,添加如下行即可:

        MANPATH /usr/local/mysql/man


      wKiom1dS6SOCadp2AAAI-9bQJQs080.png


   10、輸出mysql的頭文件至系統頭文件路徑/usr/include


    # ln -sv /usr/local/mysql/include  /usr/include/mysql


   11、輸出mysql的庫文件給系統庫查找路徑


     # echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf


   12、系統重新載入系統庫


     # ldconfig


   13、創建和授權wordpressphpMyAdmin用戶 

 

    MariaDB [(none)]> CREATE DATABASE wpdb; //創建wordpress數據庫

     MariaDB [(none)]> GRANT ALL ON wpdb.* TO wpuser@'192.168.1.%' IDENTIFIED BY 'wppass';  //授權wordpress用戶

    MariaDB [(none)]> FLUSH PRIVILEGES;

 

    MariaDB [(none)]> CREATE DATABASE pma;  //創建phpMyAdmin數據庫

    Query OK, 1 row affected (0.00 sec)

    MariaDB [(none)]> GRANT ALL ON pma.* TO pmauser@'192.168.1.%' IDENTIFIED BY 'pmapass';   

    Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> FLUSH PRIVILEGES;   

    Query OK, 0 rows affected (0.00 sec)



 


三、192.168.1.103主機,編譯安裝php-5.4.40


    1、解決依賴關係


    自行配置好yum源(系統安裝源及epel源)後執行如下命令:


    # yum groupinstall "Server Platform Development" "Development tools" -y

    # yum install bzip2-devel libmcrypt-devel libxml2-devel mhash mhash-devel libmcrypt-devel libmcrypt -y



   2、編譯安裝php-5.4.40


    下載源碼包至本地目錄,下載位置 http://mirrors.sohu.com/php/


    # tar xf php-5.4.40.tar.bz2 

    # cd php-5.4.40

     # ./configure --prefix=/usr/local/php --with-openssl --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 --enable-maintainer-zts



    要想支持fpm時,需要去掉 --with-apxs2=/usr/local/apache/bin/apxs ,  添加 --enable-fpm  ,注意兩者不能同時存在。

說明:如果使用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 -j 4 && make install

   


    3、爲php提供配置文件:


    # cp php.ini-production /etc/php.ini


   4、配置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 = run/php-fpm.pid //啓用

     listen = 192.168.1.103:9000

     listen.allowed_clients = 192.168.1.102


     然後就可以啓動php-fpm了,查看9000端口。

     # service php-fpm start

    

    wKiom1dhKtDQ-AMrAAAV1vQSOWc261.png


 四、192.168.1.103主機,安裝xcache,爲php加速:(可以支持php-5.4的xcache版本必須爲2.0+)

         下載地址 https://xcache.lighttpd.net/pub/Releases


  1、編譯安裝


     # tar xf xcache-3.2.0.tar.bz2 

     # cd xcache-3.2.0

     # /usr/local/php/bin/phpize

    wKioL1dhLHGTdZnSAAANrPiLqNw252.png

    

     # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

     # make && make install



    

     安裝結束時,會出現類似如下行:

    wKiom1dhK8rhXSJsAAAOC0SBC1o922.png



    

  2、編輯php.ini,整合php和xcache:


    首先將xcache提供的樣例配置導入php.ini


     # mkdir /etc/php.d

     # cp /root/xcache-3.2.0/xcache.ini /etc/php.d

   

    編輯配置文件/etc/php.d/xcache.ini


     # vim /etc/php.d/xcache.ini


    在[xcache-common]開下,修改爲如下行:

    extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

                

     wKiom1dhLHzzJmjZAAASOtEnM9k251.png


    注意:如果php.ini文件中有多條extension指令行,要確保此新增的行排在第一位。




五、192.168.1.102主機,配置httpd-2.4.10


 1、編輯httpd主配置文件,關閉中心主機,啓用虛擬主機配置文件,啓用httpd的相關模塊


      # vim /etc/httpd24/httpd.conf

  

      #DocumentRoot "/usr/local/apache24/htdocs"  //註釋掉這一行

      Include /etc/httpd24/extra/httpd-vhosts.conf //找到並啓用這一行

        

      LoadModule log_config_module modules/mod_log_config.so   //確認這一行啓用,虛擬主機  配置文件中會用到mod_log_config


    在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 //啓用

   添加如下二行

       AddType application/x-httpd-php  .php

       AddType application/x-httpd-php-source  .phps


     wKiom1dhLxLzcLZpAAANMfhMlpY601.png


   

    定位至DirectoryIndex index.html 


      修改爲:

        DirectoryIndex  index.php  index.html




  2、編輯虛擬主機的配置文件

    

    1)配置虛擬主機的配置文件使虛擬主機支持使用fcgi


     # vim /etc/httpd24/extra/httpd-vhosts.conf

        修改如下




    wKiom1dhMjzBKUiyAABPoc-2h0g614.png



    2)爲虛擬主機提供默認訪問頁面和日誌存放目錄

      

     # mkdir /var/log/httpd24 //創建的日誌存放位置

    # mkdir /apps/vhosts/{b.net,c.org} -pv //httpd主機和php主機都需要創建訪問路徑



     # vim /apps/vhosts/b.net/index.php    //php主機上創建測試頁

    


    wKioL1dhNZ_jmlIFAAATfVgD20k745.png


     # vim /apps/vhosts/c.org/index.php   //php主機上創建測試頁


    

    wKiom1dhNO_AXjk3AAAT0ZJP7qw332.png



  3)重啓服務,物理主機瀏覽器測試


    # httpd -t   //習慣做配置語法測試                         

      Syntax OK

    # service httpd24 restart

    
    wKiom1dhNWfQe709AAAX94rThPg283.png


    

     然後windows主機加192.168.1.102主機名解析

    wKioL1dhNrfQyO0PAAAiIY2y_BQ805.png

    wKiom1dhNnbxAPAIAAAEw3YBGgI353.png



    瀏覽器訪問www.b.net和www.c.og

    wKioL1dhOO7w8TWSAACS48dN0g8272.png


                     wKiom1dhN-ugdsHnAAAfFDURcEw409.png


    wKioL1dhOQuiE6E5AACWzizZWDk050.png



 六、192.168.1.103主機,爲虛擬主機安裝配置wordpress和phpMyAdmin

    

  1、 安裝wordpress //php主機


   1)下載、配置wordpress

 

    # cd /apps/vhosts/b.net/ 

     # ls  //下載wordpress壓縮包(下載地址:https://wordpress.org/download/ 

     wordpress-4.3.1-zh_CN.zip

     # unzip wordpress-4.3.1-zh_CN.zip

     # cd wordpress/

     # mv wp-config-sample.php wp-config.php

    # vim wp-config.php


    wKioL1dhOiqh6uTzAAA6GKrDAWE451.png


    # scp -r /apps/vhosts/b.net/wordpress [email protected]:/apps/vhosts/b.net/   //此時需要把php主機的wordpress文件放到httpd主機的頁面訪問路徑下


 2httpd主機

 

     # httpd -t  //測試語法

    Syntax OK

     # service httpd24 restart

 

 3windows瀏覽器訪問 www.b.net/wordpress,按之前授權的信息填寫相關內容。


    wKiom1dhPO_TIOhFAABjXWt83WI517.png


    wKioL1dhPhXjnRx9AAC-FMX5pIg437.png


    


  2安裝phpMyAdmin

 

    1)下載解壓phpMyAdmin

 

     # cd  /apps/vhosts/c.org

     # ls

     phpMyAdmin-4.4.14.1-all-languages.zip  //下載phpMyAdmin壓縮包https://www.phpmyadmin.net/downloads/

     # unzip phpMyAdmin-4.4.14.1-all-languages.zip

    # mv phpMyAdmin-4.4.14.1-all-languages pma

     # cd pma

     # mv config.sample.inc.php config.inc.php

   

   2)配置phpMyAdmin 

 

    # openssl rand -base64 18 //生成一段隨機數

     fUDTA121uzwkoWMr4m4DGKQv

 

     # vim config.inc.php //編輯配置文件


    wKiom1dhPjuQhJNcAAAp_S14eQY130.png


    #  scp -r /apps/vhosts/c.org/pma [email protected]:/apps/vhosts/c.org  // 此時需要把php主機的pma文件放到httpd主機的頁面訪問路徑下


  3httpd主機

     # httpd -t  //測試語法

     Syntax OK

     # service httpd24 restart

    
  4)windows瀏覽器訪問  www.c.org/pma,按之前授權的信息填寫相關內容。


    wKioL1dhQQ-iTcpxAACkpu2DxzM032.png



    wKiom1dhQBTz13NUAAFwPcYZPNc985.png



    至此看似浩瀚的lamp編譯工程結束,如果哪裏有寫的不對甚至欠缺的地方,希望大牛們批評指出。之前以爲一臺主機安裝lamp比較簡單,現在才明白,主要是搞清楚他們之間的關係,幾臺主機安裝都是相通的。個人總結:配置系統時,需要屢清楚各個程序之間的關係,遇到困難需要結合相應的日誌文件查看哪裏出錯,配置文件時需要做好必要的備份,配置完成後可以語法測試的需要測試一下,不要盲目的百度和問別人,要自己動腦筋思考。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章