设为首页 收藏本站
查看: 4475|回复: 0

[经验分享] CentOS 6系统的 lamp (编译安装,模块或php

[复制链接]

尚未签到

发表于 2018-12-16 12:48:57 | 显示全部楼层 |阅读模式
   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

     

              
  

  

  

                    
  

  

  

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





2、编译安装apr



    # tar xf apr-1.5.0.tar.bz2
    # cd apr-1.5.0
    # ./configure --prefix=/usr/local/apr
    # make && make install


   


   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


     


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

   


   
  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
  

   
   





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

        




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


  
   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
     
  

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

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

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


  


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

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

  编辑/etc/man.config,添加如下行即可:
  MANPATH /usr/local/mysql/man
  


  

  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、创建和授权wordpress和phpMyAdmin用户

    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
     

     
  

  、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
     
     
  
  
  
       # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
       # make && make install
  
  
  

  

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

  

     
  
    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
                 
       
  

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

       

  

  
  
     
      定位至DirectoryIndex index.html
  

        修改为:
          DirectoryIndex  index.php  index.html
  

  

  

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

  # vim /etc/httpd24/extra/httpd-vhosts.conf
  修改如下
  
  
  

  
   
  

  

      2)为虚拟主机提供默认访问页面和日志存放目录
   # mkdir /var/log/httpd24 //创建的日志存放位置
      # mkdir /apps/vhosts/{b.net,c.org} -pv //httpd主机和php主机都需要创建访问路径
  

  

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

  

  

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

     
  

  

  
    3)重启服务,物理主机浏览器测试
  
  # httpd -t   //习惯做配置语法测试                        
  Syntax OK
  # service httpd24 restart
     
   
  

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

  

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

                       
  

     
  

  

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

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

  

  
2)httpd主机

     # httpd -t  //测试语法
    Syntax OK
     # service httpd24 restart

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


   


   
  
   

  

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

  
    #  scp -r /apps/vhosts/c.org/pma root@192.168.1.102:/apps/vhosts/c.org // 此时需要把php主机的pma文件放到httpd主机的页面访问路径下
  
   3)httpd主机
  
     # httpd -t  //测试语法
     Syntax OK
     # service httpd24 restart
   
4)windows浏览器访问  www.c.org/pma,按之前授权的信息填写相关内容。
  
   
  

  

     
  

  

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

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652012-1-1.html 上篇帖子: yum安装PHP/yum升级PHP 下篇帖子: PHP安装memcache模块时报错Cannot find autoconf. Please check……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表