微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.7 httpd(event)
192.168.1.103  CentOS 6.7 PHP-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

    

             



                  

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解




 

 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软件包

    


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


   2、编译安装apr

    # tar xf apr-1.5.0.tar.bz2

    # cd apr-1.5.0

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

    # make && make install

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

   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


     

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


   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

          

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

            # /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后依然有效)此时,环境变量不会立即生效,但是对新登录用户有效,然后新用户登录进行验证


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

    

   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

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

    


  附加:这里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


        

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

二、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

     

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


   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

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


   8、修改PATH环境变量,让系统可以直接使用MysqL的相关命令

    

       此时必须指明全路径才可以进入MySQL命令行界面,想要直接使用MysqL进入命令行,需要编辑配置文件(全局有效且重启shell后依然有效,对当前shell无效,需要登出再登入) 

     

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

   

    

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

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

    

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



  为了使用MysqL的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

   9、输出MysqL的man手册至man命令的查找路径

       编辑/etc/man.config添加如下行即可:

        MANPATH /usr/local/MysqL/man

      

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

   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,这样在本机就不需要先安装MysqLMysqL开发包了。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

    

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


 四、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

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

    

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

     # make && make install


    

     安装结束时,会出现类似如下行:

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    

  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

                

     

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

    注意:如果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

     

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



   

    定位至DirectoryIndex index.html 

      修改为:

        DirectoryIndex  index.PHP  index.html

  2、编辑虚拟主机的配置文件

    

    1)配置虚拟主机的配置文件使虚拟主机支持使用fcgi


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

        修改如下



    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    2)为虚拟主机提供认访问页面和日志存放目录

      

     # mkdir /var/log/httpd24 //创建的日志存放位置

    # mkdir /apps/vhosts/{b.net,c.org} -pv //httpd主机和PHP主机都需要创建访问路径



     # vim /apps/vhosts/b.net/index.PHP    //PHP主机上创建测试页

    


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

     # vim /apps/vhosts/c.org/index.PHP   //PHP主机上创建测试页


    

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



  3)重启服务,物理主机浏览器测试


    # httpd -t   //习惯做配置语法测试                         

      Syntax OK

    # service httpd24 restart

    
    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    

     然后windows主机加192.168.1.102主机名解析

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



    浏览器访问www.b.net和www.c.og

    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


                     

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



 六、192.168.1.103主机,为虚拟主机安装配置wordpressPHPMyAdmin

    

  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


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    # scp -r /apps/vhosts/b.net/wordpress root@192.168.1.102:/apps/vhosts/b.net/   //此时需要把PHP主机的wordpress文件放到httpd主机的页面访问路径下


 2httpd主机

 

     # httpd -t  //测试语法

    Syntax OK

     # service httpd24 restart

 

 3windows浏览器访问 www.b.net/wordpress,按之前授权的信息填写相关内容


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    


  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 //编辑配置文件


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解


    #  scp -r /apps/vhosts/c.org/pma root@192.168.1.102:/apps/vhosts/c.org  // 此时需要把PHP主机的pma文件放到httpd主机的页面访问路径下


  3httpd主机

     # httpd -t  //测试语法

     Syntax OK

     # service httpd24 restart

    
  4)windows浏览器访问  www.c.org/pma,按之前授权的信息填写相关内容


    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



    

CentOS 6系统的  lamp (编译安装,模块或php-fpm)详解



    至此看似浩瀚的lamp编译工程结束,如果哪里有写的不对甚至欠缺的地方,希望大牛们批评指出。之前以为一台主机安装lamp比较简单,现在才明白,主要是搞清楚他们之间的关系,几台主机安装都是相通的。个人总结:配置系统时,需要屡清楚各个程序之间的关系,遇到困难需要结合相应的日志文件查看哪里出错,配置文件时需要做好必要的备份,配置完成后可以语法测试的需要测试一下,不要盲目的百度和问别人,要自己动脑筋思考。



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐