LAMMP架构的企业级应用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

       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的架构拓扑图:

211841557.png

此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)测试结果

133839137.png


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)测试结果134745994.png


在生产环境中是否要用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)测试结果

155516216.png

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

三、LAMMP适用的生产环境

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










本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1282360,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
运维 Cloud Native 持续交付
探索云原生架构:构建现代应用的基石
【7月更文挑战第9天】本文深入探讨了云原生架构的核心概念、关键技术组件以及实施的最佳实践。通过分析云原生技术如何促进微服务架构的实现,容器化技术的利用,以及持续集成与持续部署(CI/CD)流程的自动化,本文旨在为读者提供一个全面的云原生技术框架视图,并揭示其在加速企业数字化转型过程中的关键作用。
|
20小时前
|
监控 前端开发 JavaScript
构建高效实时应用:Python WebSocket在前后端分离架构中的实践
【7月更文挑战第18天】WebSocket助力实时Web应用,通过一次握手建立持久连接,解决HTTP实时性问题。Python中可用Flask-SocketIO创建WebSocket服务器,前端JavaScript使用Socket.IO库连接。确保安全可采用HTTPS、认证及跨域限制。示例代码展示如何实现双向实时通信。
13 4
|
2天前
|
运维 分布式计算 大数据
自动化运维的利剑:Ansible在现代IT架构中的应用
【7月更文挑战第16天】本文深入探讨了Ansible作为自动化运维工具的核心价值及其在现代IT架构中的多维度应用。我们将通过具体案例分析,揭示Ansible如何优化IT运维流程、提升工作效率,并讨论其在云环境、容器化及大数据处理等领域的创新应用。文章旨在为读者提供一套实用的Ansible应用策略,助力企业构建更加高效、稳定的IT运维体系。
|
6天前
|
Cloud Native 安全 API
云原生架构在现代企业中的应用与挑战
随着云计算技术的飞速发展,云原生架构逐渐成为推动企业数字化转型的重要力量。本文深入探讨了云原生架构的核心组件、实施策略以及面临的主要挑战,旨在为读者提供一套系统的云原生应用框架和解决方案。通过分析多个行业案例,本文揭示了云原生技术如何助力企业提升业务灵活性、加快产品上市时间并优化资源管理。
|
9天前
|
运维 Cloud Native Devops
云原生架构在现代企业中的应用与挑战
随着数字化转型的深入,云原生技术成为支撑企业创新和灵活性的关键。本文将探讨云原生架构的核心概念、优势以及在实际应用中面临的主要挑战。通过分析不同行业的案例,我们将揭示云原生如何助力企业实现资源的最优配置和业务流程的自动化,同时指出安全性、合规性和技术复杂性等实施障碍,为读者提供一套实施云原生架构时的考量框架。
|
10天前
|
消息中间件 Java 微服务
构建可扩展的Java Web应用架构
构建可扩展的Java Web应用架构
|
10天前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
15天前
|
运维 Kubernetes Docker
容器化技术在微服务架构中的应用
【7月更文挑战第3天】容器化技术在微服务架构中的应用,为现代应用的开发、部署和运维带来了革命性的变化。通过容器化,我们可以实现服务的快速部署、独立运行和高效扩展,同时提高资源的利用率和系统的可维护性。随着容器技术的不断发展和完善,相信它将在未来的软件开发中发挥更加重要的作用。
|
16天前
|
大数据 数据处理 数据中心
x86和x64架构的区别及应用
x86和x64架构的区别及应用
|
17天前
|
大数据 数据处理 数据中心
x86和x64架构的区别及应用
x86和x64架构的区别及应用