zoukankan      html  css  js  c++  java
  • LAMMP架构的企业级应用

                  LAMMP架构的企业级应用

    =========================================

    LAMMP是什么

    LAMMP的实现

    LAMMP适用的生产环境

    ==========================================

    一、LAMMP是什么

         LAMMP,是几个英文单词首字母的缩写。

         L是Linux的缩写,Linux操作系统,Linux以稳定、安全、且开源著称的操作系统,适用于做  服务器。

         A是Apache的缩写,Apache是一款提供Web服务器的开源软件,Apache是一个极具稳定安全、高度模块化、支持模块动态扩展的Web服务器,是搭建Web服务器的首选之一,据统计全球有50%左右的Web服务器是用Apache搭建的。http://www.netcraft.com/ 这个网站,是对全球web服务器的排名。

          M是Mysql的缩写,Mysql是数据库管理系统,数据库管理软件,也是开源软件。

          M是Memcached的缩写,Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。

         Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:

        1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;

        2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;

        3. 各服务器间彼此之间不互相通信:不在服务器间进行数据同步;服务器宕机,存储的数据立即丢失

        4. O(1)的执行效率

        5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;

        P是PHP的缩写,是一种面向对象的编程语言。


    LAMMP的架构拓扑图:

    此LAMMP架构是分别搭建在不同的服务器上面,在生产环境中,更是应该如此,一台服务器提供多种应用,服务器会很消耗资源,提供服务的性能也会降低。

    此架构中各服务器的工作

          Apache在此架构中,响应回复用户html的请求

          FastCGI是把php程序执行的结果响应给Apache

          Memcached是根据用户请求的动态网页文件中是否需要Memcached服务器缓存数据,Memcached是把数据存储在内存中的,速度可想而知了。

          Mysql是响应用户是否需写入查询数据

    用户的请求资源到获取资源的过程

         1、当用户只需要请求web服务器的html页面时,Apache直接响应请求,所经过的过程为1--->8

         2、当用户需请求一个web服务器的动态的页面时,Apache把用户请求的php执行程序发送给FastCGI服务器执行,FastCGI把执行的结果返回给Apache服务器,服务器把程序生成的的静态页面响应给客户端。所经过的过程1--->2--->7--->8

         3、当用户需要请求的web服务器资源中需要数据时,Apache把用户请求的php执行  程序给FastCGI执行,执行过程中需要对数据进行操作时且Memcached中没有缓存时,FastCGI去请求Mysql服务器的资源,mysql服务器把数据响应给FastCGI,如果此数据需要缓存则FastCGI把数据缓存到Memcached服务器上,然后把数据响应给Apache,Apache生成静态的页面响应给客户端。所经过的过程1--->2--->5--->6[--->3]--->7--->8(如果需要缓存则会经过3过程)

         4、当用户需要请求的web服务器资源中需要数据时,Apache把用户请求的php执行程序给 FastCGI执行,执行过程中需要对数据进行操作时Memcached中有缓存时,Memcached直接把 数据响应给FastCGI,然后把数据响应给Apache,Apache生成静态的页面响应给客户端。所经过的过程1--->2--->3--->4--->7--->8

    二、LAMMP的实现

    Apache服务器所需的软件包

         apr-1.4.6.tar.bz2

    http://mirror.esocc.com/apache/apr/apr-1.4.6.tar.bz2

        apr-util-1.5.2.tar.bz2  

    http://mirror.esocc.com/apache/apr/apr-util-1.5.2.tar.bz2

        httpd-2.4.6.tar.bz2(提供Web服务器的软件包)

    http://mirror.esocc.com/apache/httpd/httpd-2.4.6.tar.bz2

        由于httpd-2.4的包linux系统中的apr版本不够新,所以需要下载更新的apr相关的包,直接下载源码包进行安装。

    FastCGI服务器所需的软件包

              libmcrypt  

    http://mirrors.sohu.com/fedora-epel/6Server/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm

            libmcypt-devel

    http://mirrors.sohu.com/fedora-epel/6Server/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

              xcache-3.0.3.tar.bz2 (缓存php执行好的代码,加速opcode)

    http://xcache.lighttpd.net/pub/Releases/3.0.3/xcache-3.0.3.tar.bz2

              php-5.4.19.tar.bz2  (提供php-fpm(FastCGI)服务的软件包)

    http://downloads.php.net/stas/php-5.4.19.tar.bz2

              memcache-2.2.7.tgz  (FastCGI连接Memcache服务器的软件包)

    http://pecl.php.net/get/memcache-2.2.7.tgz

    Memcached服务器所需的软件包

             libevent-2.0.21-stable.tar.gz

    http://nchc.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.21-stable.tar.gz

             memcached-1.4.15.tar.gz (安装Memcached服务器的软件包)

    http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

    Mysql服务器所需的软件包

           mysql-5.5.33-linux2.6-x86_64.tar.gz

    http://downloads.skysql.com/archives/mysql-5.5/mysql-5.5.33-linux2.6-x86_64.tar.gz

        安装的是mysql的通用二进制程序包,此软件包解压之后就可以使用

     

    思路:

    1、每个服务器的安装操作都是独立,但是最后需要建立关系

    2、解决WEB怎么连接PHP-FPM(FastCGI)

    3、解决PHP-FPM(FastCGI)怎么连接Memcached

    4、解决PHP-FPM(FastCGI)怎么连接Mysql

    Apache服务器的配置安装:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    [root@jie1 ~]# ls
    anaconda-ks.cfg    apr-util-1.5.2.tar.bz2  install.log
    apr-1.4.6.tar.bz2  httpd-2.4.6.tar.bz2     install.log.syslog
    ##1、解压下载的软件包######
    [root@jie1 ~]# tar xf apr-1.4.6.tar.bz2
    [root@jie1 ~]# tar xf apr-util-1.5.2.tar.bz2
    [root@jie1 ~]# tar xf httpd-2.4.6.tar.bz2
    ###2、安装开发库,和依赖性包######
    [root@jie1 ~]# yum -y groupinstall "Development tools" "Server Platform Development"
    [root@jie1 ~]# yum -y install pcre-devel  #安装依赖性包
    [root@jie1 ~]# rpm -qa | grep httpd    #检查系统是否安装httpd的rpm包
    httpd-tools-2.2.15-26.el6.centos.x86_64
    ####3、编译安装apr软件#######
    [root@jie1 ~]# cd apr-1.4.6
    [root@jie1 apr-1.4.6]# ./configure --prefix=/usr/local/apr && make && make install
    ###4、编译安装apr-util软件包######
    [root@jie1 ~]# cd apr-util-1.5.2
    [root@jie1 apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
    ####5、编译安装httpd的软件包#####
    [root@jie1 ~]# cd httpd-2.4.6
    [root@jie1 httpd-2.4.6]# ./configure --prefix=/usr/local/apache  --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event  && make && make install
    [root@jie1 ~]# cp httpd-2.4.6/build/rpm/httpd.init  /etc/rc.d/init.d/httpd    #复制源码包里面提供的httpd的SystemV脚本
    [root@jie1 ~]# vim /etc/rc.d/init.d/httpd
    ###6、需要改动httpd的SystemV脚本的一些内容#####
    ##############vim /etc/rc.d/init.d/httpd ########################
    prog=httpd
    httpd=${HTTPD-/usr/local/apache/bin/httpd}
    pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}
    lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
    RETVAL=0
    # check for 1.3 configuration
    check13 () {
            CONFFILE=/usr/local/apache/conf/httpd.conf
    ###################################################################
    [root@jie1 ~]# vim /usr/local/apache/conf/httpd.conf
    ServerName 172.16.22.1:80 #在配置文件中找到ServerName改成服务器的IP:端口
    #这样启动的时候就不会报错
    [root@jie1 ~]# service httpd start  #启动服务
    Starting httpd:                                            [  OK  ]
    ###7、使系统能识别源码包安装的软件############
    [root@jie1 apache]# echo "PATH=/usr/local/apache/bin/:$PATH" >/etc/profile.d/httpd.sh
    [root@jie1 apache]# source /etc/profile.d/httpd.sh
    [root@jie1 apache]# ln -sv /usr/local/apache/include/  /usr/include/httpd
    [root@jie1 apache]# chkconfig --add httpd #把服务加到开机自动启动的列表
    [root@jie1 apache]# chkconfig --level 35 httpd  on

    FastCGI(php-fpm)服务器的配置安装:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    [root@jie2 ~]# ls
    anaconda-ks.cfg     xcache-3.0.3.tar.bz2  install.log
    memcache-2.2.7.tgz  php-5.4.19.tar.bz2   install.log.syslog
    ###1、解压下载的源码包
    [root@jie2 ~]#tar xf php-5.4.19.tar.bz2
    [root@jie2 ~]#tar xf memcache-2.2.7.tgz
    [root@jie2 ~]#tar xf xcache-3.0.3.tar.bz2
    ###2、安装开发包和安装依赖性包,由于我的编译参数只指定了这些,所以只需这些依赖性包,如果指定的参数不一样,则需要的依赖性包也不尽相同
    [root@jie2 ~]#yum -y groupinstall "Server Platform Development" "Development tools"
    [root@jie2 ~]#yum -y install libxml2-devel bzip2-devel  libmcrypt-devel
    #libmcrypt-devel在光盘里面是没有提供相应的包,mirrors.sohu.com镜像站点的#epel源里面有此包,各位可以搭建一个epel的yum源,直接安装此包,我就是直接
    #搭建的sohu的光盘yum源和epel  yum源
    [root@jie2 ~]# cd php-5.4.19
    ###编译参数--enable-fpm,支持FastCGI PHP模块,此参数决定是否能把PHP安装成#FastCGI服务器
    [root@jie2 php-5.4.19]#./configure --prefix=/usr/local/php  --enable-fpm --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets  --with-mcrypt  --with-bz2 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd && make && make install
    ###3、建立php的配置文件,此配置文件在php的解压包中
    [root@jie2 php-5.4.19]# cp php.ini-production   /etc/php.ini
    [root@jie2 php]#cd /usr/local/php/
    ###4、使系统能够识别源码包安装的软件
    [root@jie2 php]# echo "PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH" >/etc/profile.d/php-fpm.sh
    [root@jie2 php]# source /etc/profile.d/php-fpm.sh
    [root@jie2 php]#cd /usr/local/php/etc
    ###5、建立php-fpm服务的配置文件,此配置文件的路径 /usr/local/php/etc
    [root@jie2 etc]# mv php-fpm.conf.default php-fpm.conf
    ##修改php-fpm服务配置文件的监听的IP地址改为本地IP地址
     ### vim /usr/local/php/etc/php-fpm.conf####
                  Listen 172.16.22.2:9000
     ############################################
    [root@jie2 fpm]# pwd
    /root/php-5.4.19/sapi/fpm
    ###6、建立php-fpm的systemV脚本,此脚本的路径是在php解压包的php-5.4.19/sapi/fpm路径下
    [root@jie2 fpm]# cp init.d.php-fpm /etc/rc.d/init.d/php-fpm
    ###7、把服务脚本加执行权限,开启服务,把服务加到开机自启动列表中
    [root@jie2 fpm]# chmod +x /etc/rc.d/init.d/php-fpm
    [root@jie2 fpm]# service php-fpm start
    [root@jie2 fpm]# chkconfig --add php-fpm
    [root@jie2 fpm]# chkconfig --level 35 php-fpm on
    ###8、安装FastCGI与memcached服务连接的接口的一个软件
    [root@jie2 ~]# cd /root/memcache-2.2.7
    [root@jie2 memcache-2.2.7]# /usr/local/php/bin/phpize
    [root@jie2 memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache   && make && make install
    ####==============================================================######
    Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
    #编译安装完成后最后为提示这样一句
    ###=================================================================####
    ###9、在php的配置文件里面装载memcache.so的模块路径
    ###vim /etc/php.ini##########
    extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
    ##########################################
    [root@jie2 ~]# cd xcache-3.0.3
    ###10、安装FastCGI加速opcode代码的软件
    [root@jie2 xcache-3.0.3]# /usr/local/php/bin/phpize
    [root@jie2 xcache-3.0.3]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config && make && make install
    ####==============================================================######
    Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
    #编译安装完成后最后为会提示这样一句
    ###=================================================================####
    ###11、建立xcache的配置文件,在xcache的解压的源码包里面
    [root@jie2 xcache-3.0.3]# mkdir /etc/php.d
    [root@jie2 xcache-3.0.3]# cp xcache.ini /etc/php.d/
    ##建立这个xcache的配置文件,则可以把xcache.so的模块装载进去,不建立xcache的配置文件,则也可以把xcache.so的模块装载到php.ini的配置文件中,装载方法和装载memcache.so模块的方法一样
    [root@jie2 xcache-3.0.3]# service php-fpm restart  #重启php-fpm服务
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done

    Memcached服务器的配置安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    [root@jie3 ~]#yum -y groupinstall "Server Platform Development" "Development tools" #安装开发包
    [root@jie3 ~]# ls
    anaconda-ks.cfg  install.log.syslog             memcached-1.4.15.tar.gz
    install.log      libevent-2.0.21-stable.tar.gz
    ###1、解压下载的软件
    [root@jie3 ~]# tar xf libevent-2.0.21-stable.tar.gz
    [root@jie3 ~]# tar xf memcached-1.4.15.tar.gz
    ###2、编译安装libevent软件
    [root@jie3 ~]# cd libevent-2.0.21-stable
    [root@jie3 libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent && make && make install
    [root@jie3 ~]# cd /usr/local/libevent/
    ###3、使系统识别libevent的库文件和头文件
    [root@jie3 libevent]# echo "/usr/local/libevent/lib" >/etc/ld.so.conf.d/libevent.conf
    [root@jie3 libevent]# ldconfig -v | grep libevent
    /usr/local/libevent/lib:
        libevent_core-2.0.so.5 -> libevent_core.so
        libevent_openssl-2.0.so.5 -> libevent_openssl.so
        libevent_pthreads-2.0.so.5 -> libevent_pthreads.so
        libevent-2.0.so.5 -> libevent.so
        libevent_extra-2.0.so.5 -> libevent_extra.so
        libevent-1.4.so.2 -> libevent-1.4.so.2.1.3
        libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3
        libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3
    [root@jie3 libevent]# ln -sv /usr/local/libevent/ /usr/include/libevent
    `/usr/include/libevent' -> `/usr/local/libevent/'
    ###4、编译安装memcached软件包
    [root@jie3 ~]#cd memcached-1.4.15
    [root@jie3 ~]#./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ && make && make install
    ###5、建立memcached的systemV脚本,copy下面的脚本为服务脚本
    #############vim  /etc/init.d/memcached#######################
    #!/bin/bash
    #
    # Init file for memcached
    #
    # chkconfig: - 86 14
    # description: Distributed memory caching daemon
    #
    # processname: memcached
    # config: /etc/sysconfig/memcached
    /etc/rc.d/init.d/functions
    ## Default variables
    PORT="11211"
    USER="nobody"
    MAXCONN="1024"
    CACHESIZE="64"
    IP="172.16.22.3"
    RETVAL=0
    prog="/usr/local/memcached/bin/memcached"
    desc="Distributed memory caching"
    lockfile="/var/lock/subsys/memcached"
    start() {
            echo -n $"Starting $desc (memcached): "
            daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE -l $IP
            RETVAL=$?
            [ $RETVAL -eq 0 ] && success && touch $lockfile || failure
            echo
            return $RETVAL
    }
    stop() {
            echo -n $"Shutting down $desc (memcached): "
            killproc $prog
            RETVAL=$?
            [ $RETVAL -eq 0 ] && success && rm -f $lockfile || failure
            echo
            return $RETVAL
    }
    restart() {
            stop
            start
    }
    reload() {
            echo -n $"Reloading $desc ($prog): "
            killproc $prog -HUP
            RETVAL=$?
            [ $RETVAL -eq 0 ] && success || failure
            echo
            return $RETVAL
    }
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart)
            restart
            ;;
      condrestart)
            [ -e $lockfile ] && restart
            RETVAL=$?
            ;;
      reload)
            reload
            ;;
      status)
            status $prog
            RETVAL=$?
            ;;
       *)
            echo $"Usage: $0 {start|stop|restart|condrestart|status}"
            RETVAL=1
    esac
    exit $RETVAL
    ####################################################################
    ###6、把服务脚本给予执行权限,然后把服务加到开机启动列表中
    [root@jie3 memcached]# chmod +x /etc/init.d/memcached
    [root@jie3 memcached]# chkconfig --add memcached
    [root@jie3 memcached]# chkconfig --level 35 memcached on
    [root@jie3 /]# service memcached start
    Starting Distributed memory caching (memcached):           [  OK  ]
    [root@jie3 /]# netstat -pant | grep memcached
    tcp        0      0 172.16.22.3:11211           0.0.0.0:*                   LISTEN      9802/memcached

    Mysql服务器的配置安装:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    [root@jie4 ~]# ls
    anaconda-ks.cfg  install.log.syslog
    install.log      mysql-5.5.33-linux2.6-x86_64.tar.gz
    ###1、解压下载的mysql的通用二进制软件包
    [root@jie4 ~]#tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/
    [root@jie4 ~]# cd /usr/local/
    [root@jie4 local]# mv mysql-5.5.33-linux2.6-x86_64/ mysql
    ###2、创建存放数据库的文件,生产环境数据库存放在独立的建LVM的硬盘上面
    [root@jie4 local]# mkdir -pv /mysql/data
    mkdir: created directory `/mysql'
    mkdir: created directory `/mysql/data'
    ###3、创建用户,和设置文件的属主和权限
    [root@jie4 local]# useradd -r mysql
    [root@jie4 local]# chown -R mysql:mysql /mysql/data
    [root@jie4 local]# chmod -R 755 /mysql/data/
    [root@jie4 local]# cd /usr/local/mysql/
    [root@jie4 mysql]# cd support-files/
    ###4、建立mysql的配置文件
    [root@jie4 support-files]# cp my-large.cnf /etc/my.cnf
    cp: overwrite `/etc/my.cnf'? y
    ###5、建立mysql的systemV服务脚本
    [root@jie4 support-files]# cp mysql.server  /etc/rc.d/init.d/mysqld
    [root@jie4 ~]# vim /etc/my.cnf
    ###6、修改mysql的配置文件,修改或添加这两行
    #############vim /etc/my.cnf###############
    thread_concurrency = 4
    datadir = /mysql/data
    ###########################################
    ###7、初始化mysql的脚本
    [root@jie4 support-files]# cd /usr/local/mysql/scripts/
    [root@jie4 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/data
    ###8、开启mysql服务和把mysql的服务加入到开机自启的列表中
    [root@jie4 scripts]# service mysqld start
    Starting MySQL...........                                  [  OK  ]
    [root@jie4 local]# chkconfig  --add mysqld
    [root@jie4 local]# chkconfig --level 35 mysqld on
    [root@jie4 scripts]# cd /usr/local/mysql/
    ###9、使系统能识别源码包安装的软件############
    ####1)修改环境变量PATH的路径
    ####2)链接头文件的路径
    ####3)连接库文件
    ####4)提供man帮助文档
    [root@jie4 mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysqld.sh
    [root@jie4 mysql]# source /etc/profile.d/mysqld.sh
    [root@jie4 mysql]# ln -sv /usr/local/mysql/include/ /usr/include/mysqld
    `/usr/include/mysqld' -> `/usr/local/mysql/include/'
    [root@jie4 mysql]# echo "/usr/local/mysql/lib/" >/etc/ld.so.conf.d/mysqld.conf
    [root@jie4 mysql]# ldconfig -v | grep mysql
    ####10、创建登录数据库的用户的密码
    [root@jie4 local]# mysqladmin -u root password redhat
    [root@jie4 local]# mysql -u root -p
    mysql> select user,password,host from mysql.user;
    #查询mysql数据库中user表的用户,密码和host
    +------+-------------------------------------------+-----------+
    | user | password                                  | host      |
    +------+-------------------------------------------+-----------+
    | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | localhost |
    | root |                                           | jie4.com  |
    | root |                                           | 127.0.0.1 |
    | root |                                           | ::1       |
    |      |                                           | localhost |
    |      |                                           | jie4.com  |
    +------+-------------------------------------------+-----------+
    6 rows in set (0.00 sec)
    #删除数据库的安全隐患的用户
    mysql> drop user root@'::1';
    Query OK, 0 rows affected (0.00 sec)
    mysql> drop user root@'jie4.com';
    Query OK, 0 rows affected (0.00 sec)
    mysql> drop user ''@'jie4.com';
    Query OK, 0 rows affected (0.00 sec)
    mysql> drop user ''@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    #创建指定网段能访问数据库的用户名和密码
    mysql> create user root@'172.16.%.%' identified by 'mypass';
    Query OK, 0 rows affected (0.00 sec)
    mysql> select user,password,host from mysql.user;
    +------+-------------------------------------------+------------+
    | user | password                                  | host       |
    +------+-------------------------------------------+------------+
    | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | localhost  |
    | root |                                           | 127.0.0.1  |
    | root | *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 | 172.16.%.% |
    +------+-------------------------------------------+------------+
    3 rows in set (0.01 sec)
    mysql> flush privileges;  #重读授权表,及时生效
    Query OK, 0 rows affected (0.00 sec)
    mysql> q

       到此为止每个服务器独立提供的服务已经安装搭建完成,现在需要让他们协同一起工作,用户的体验就好像是工作在一台机器上面

    1)解决Apache与FastCGI的协同工作

       a)Apache服务器的操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    [root@jie1 ~]# vim /usr/local/apache/conf/httpd.conf
    ###########vim /usr/local/apache/conf/httpd.conf ###########
    #DocumentRoot "/usr/local/apache/htdocs"  #注释这行
    LoadModule proxy_module modules/mod_proxy.so  #开启代理的模块
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so#开启连接fastcgi的模块
    Include conf/extra/httpd-vhosts.conf #开启让主配置文件载入虚拟主机的配置文件
    ############################################################
    [root@jie1 ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
    #####vim  /usr/local/apache/conf/extra/httpd-vhosts.conf############
    #开启一个虚拟主机即可
    <VirtualHost *:80>
        DocumentRoot "/web/htdocs/"  #Apache服务器存放网页的目录
        ServerName www.jie.com
       <Directory "/web/htdocs">
           AllowOverride None
           Options None
         Require all granted
       </Directory>
        ProxyRequests Off  #关闭代理请求
        ProxyPassMatch ^/(.*.php)$ fcgi://172.16.22.2:9000/website/$1
       #把接收客户端来着php的请求,转到FastCGI服务器上面去执行,website是指
    #FastCGI服务存放php网页的目录
    </VirtualHost>
    #####################################################################
    [root@jie1 ~]# mkdir -pv /web/htdocs
    mkdir: created directory `/web'
    mkdir: created directory `/web/htdocs'
    [root@jie1 ~]# vim /web/htdocs/test.php
    ####vim /web/htdocs/test.php####
    #测试php网页的页面
    <?php
        phpinfo();
    ?>
    #####################################
    [root@jie1 htdocs]# service httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]
    [root@jie1 htdocs]#

     b)FastCGI服务器的操作

    1
    2
    3
    4
    5
    [root@jie2 ~]# mkdir /website  #建立存放网页的目录
    [root@jie2 website]# scp 172.16.22.1:/web/htdocs/test.php  ./  #把Apache服务器上面的网页文件copy到FastCGI服务器上面,且存放在website目录下
    [root@jie2 website]# service php-fpm restart  #重启FastCGI服务器
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done

       c)测试结果

     

    2、解决PHP-FPM(FastCGI)怎么连接Memcached

    因为我们之前已经在FastCGI安装了连接memcached的软件包memcache且把memcache.so模块装载到php的配置文件中了,这样就实现了PH-FPM(FastCGI)连接Memcached。

    a)在Apache服务器上网页存放路径下新建mem.php的测试页面

       [root@jie1 htdocs]# cat /web/htdocs/mem.php

       <?php

       $mem = new Memcache;

       $mem->connect("172.16.22.3", 11211);

       $mem->set('key','test info');

       print_r($mem->get('key'));

       print_r($mem->getstats());

       ?>

    b)在FastCGI服务器上面copy mem.php的测试页面

    [root@jie2 website]# scp 172.16.22.1:/web/htdocs/mem.php  ./

    c)测试结果

     

    在生产环境中是否要用memcached服务器缓存数据,取决于客户请求的php程序,当用户请求的php程序中,开发人员将此程序开发需要请求memcached服务器则会用到memcached服务器来缓存客户的数据。在此仅供测试FastCGI服务器是否能连接memcached服务器。

     

    3、解决PHP-FPM(FastCGI)怎么连接Mysql

    PHP-FPM连接mysql,在编译的时候可以加这三个参数,然后PHP-FPM服务器上也可以不用安装mysql也可以连接mysqld服务器。

    --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

    a)在Apache服务器上网页存放路径下新建testdb.php的测试页面

           [root@jie1 htdocs]# cat testdb.php

           <?php

           $link=mysql_connect('172.16.22.4','root','mypass');

           if($link) echo "mysql test success!!";

           else echo "mysql test failed!!!";

           mysql_close();

           ?>

    b)在FastCGI服务器上面copy testdb.php的测试页面

        [root@jie2 website]# scp 172.16.22.1:/web/htdocs/testdb.php  ./

    c)测试结果

        自此,已经解决WEB怎么连接PHP-FPM(FastCGI),解决PHP-FPM(FastCGI)怎么连接Memcached,解决PHP-FPM(FastCGI)怎么连接Mysql,LAMMP分别搭建在不同的服务器上且可以协同工作已经完成。

    三、LAMMP适用的生产环境

        由于memcached只是把数据缓存到内存中,当memcached服务器宕机之后,memcached保存的数据就丢失了,所以在电商站点对session的数据要求严格是memcached服务器不能适用于此生成环境,如果不是电商站点,只是想加快客户访问自己的网站的速度,那memcached所能提供的速度还是很大的,因为数据时直接缓存在内存中了,那速度就可以而知,“尽情期待能保存电商站点的session回话中的数据之Redis架构的搭建”。

  • 相关阅读:
    .net core web
    ASP.NET HttpContext类
    页面周期与事件
    (49) C# npoi 读写office
    vs2017 vs2019秘钥
    HDU 2767 Proving Equivalences(强连通 Tarjan+缩点)
    【bzoj1013】[JSOI2008]球形空间产生器sphere
    P1979 [NOIP]华容道
    hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
    hdu3709 Balanced Number 树形dp
  • 原文地址:https://www.cnblogs.com/sysk/p/4877410.html
Copyright © 2011-2022 走看看