一、LAMMP简介
二、使用软件及服务器架构说明
三、配置及安装过程
1.安装arp与httpd
2.安装mysql
3.安装php(php-fpm)
4.安装Xcache
5.安装PHP的memcache插件
四、安装libevent与Memcached
1、Memcache简介及原理
2、Memcache安装及配置
五、整合Httpd、Php、Mysql、Memcached
一、LAMMP简介:
LAMMP指的是:Linux(操作系统)、Apache(HTTP服务器)、Memcached(缓存服务器)、Mysql(数据库)及PHP(有时也指Perl或Python)的首字母缩写。是一组知名的高性能廉价的用来架构WEB服务器的开源软件;它们各自都是一个独立的程序,但因为常被结合在一起使用,拥有较好的兼容性,组合起来共同构建了一个非常强大而又稳定WEB应用程序平台。
相信博友们都对LAMMP平台已经有了初步的认识,接下来我们讲解如何在生产环境中部署编译安装LAMMP;这里我们使用的软件包都是比较新的稳定版本。废话不多说,下面直接切入正题:
二、环境配置及架构介绍:
所需软件:
1、操作系统版本:CentOS6.4 x86_64
2、apr版本:apr-1.4.8 下载地址:http://mirror.bit.edu.cn/apache//apr/apr-1.4.8.tar.bz2
3、apr-util版本:apr-util-1.5.2 下载地址:http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.2.tar.bz2
4、Httpd版本:httpd-2.4.6 下载地址:http://mirror.esocc.com/apache//httpd/httpd-2.4.6.tar.bz2
5、Memcached版本:memcached-1.4.15 下载地址:http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
6、Mysql版本:mysql-5.5.33 下载地址:http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.33-linux2.6-x86_64.tar.gz
7、PHP版本:php-5.4.19 下载地址:http://mirrors.sohu.com/php/php-5.4.19.tar.bz2
8、Xcache版本:xcache-3.0.3 http://xcache.lighttpd.net/pub/Releases/3.0.3/xcache-3.0.3.tar.bz2
9、PHP的Memcache模块版本:memcache-2.2.7 下载地址:http://pecl.php.net/get/memcache-2.2.7.tgz
10、Libevent版本:libevent-2.0.21-stable 下载地址:http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
服务器架构说明:
客户端请求一个网页数据所要经过的过程如:
1、客户端向Apache服务器发出一个请求经过Internet,由Internet路由到Apache服务器上
2、Apache服务器首先判断请求的是动态还是静态网页,如果是静态页面,由Apache服务器直接返回给客户端;如果是动态页面则自已不处理,交给后台php服务器处理
3、php服务器在处理过程中如果需要调用Mysql数据库服务器的数据,则先查找Memcached缓存服务器(应用程序中要定义),如果Memcached服务器缓存的有要查询的数据则直接返回给php服务器;如果Memcached服务器中缓存的没有要查询的数据,php服务器则会向数据库服务器查询数据
4、php服务器从数据查询到数据不会立即返回给前台Apache服务器;则会先缓存到Memcached服务器然后再返回给Apache服务器(应用程序中要定义缓存)
5、再由Apache服务器返回给客户端
三、配置及安装过程
1、在apache服务器上安装apr与httpd服务器
由于我们安装的Httpd比较新,低版本的apr不支持,至少要1.4版本以上才支持,而apr1.4版本的Rpm包目前还没有发布,所以我们需要先编译安装apr;在安装前解释下什么是apr?
APR:(Apache portable Run-time libraries.Apache可移植运行库)APR目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库;而Apache使用这个之后可以有效提高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
|
######安装开发环境和依赖包
[root@localhost ~]
# yum -y groupinstall "Development tools" "Server Platform Development"
[root@localhost ~]
# yum -y install pcre-devel
######解压并安装apr
[root@localhost ~]
# tar xf apr-1.4.8.tar.bz2 #解压apr软件包
[root@localhost ~]
# cd apr-1.4.8 #切换到apr目录
[root@localhost apr-1.4.8]
# ./configure \\
--prefix=
/usr/local/apr
#编译前配置,并指定安装目录,方便维护
[root@localhost apr-1.4.8]
# make && make install #编译并安装
######解压并安装apr-util
[root@localhost ~]
# tar xf apr-util-1.5.2.tar.bz2
[root@localhost ~]
# cd apr-util-1.5.2
[root@localhost apr-util-1.5.2]
# ./configure \\
--prefix=
/usr/local/apr-util
\\
--with-apr=
/usr/local/apr
#依赖于apr,指定上一步apr安装目录
[root@localhost apr-util-1.5.2]
# make && make install
######解压并安装httpd
[root@localhost ~]
# tar xf httpd-2.4.6.tar.bz2
[root@localhost ~]
# cd httpd-2.4.6
[root@localhost httpd-2.4.6]
# ./configure \\
--prefix=
/usr/local/apache
\\
--sysconfdir=
/etc/httpd
\\
--
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
|
第22行~第33行注释依次为:
1
2
3
4
5
6
7
8
9
10
11
12
|
#配置文件目录
#启用动态模块加载
#基于ssl加密传输
#开启CGI脚本
#允许URL重写
#支持压缩
#支持perl的正则表达式
#指定apr安装路径
#指定apr-util安装路径
#支持大多数模块
#mpm模块的动态切换
#默认加载使用的mpm
|
提供Sysv服务脚本,方便管理维护Httpd:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
######复制源码包里的SysV脚本
[root@localhost httpd-2.4.6]
# cp build/rpm/httpd.init /etc/rc.d/init.d/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=
/etc/httpd/httpd
.conf
######让系统能识别源码包安装的软件,并加入到系统服务
[root@localhost ~]
# echo "PATH=/usr/local/apache/bin:$PATH" >> /etc/profile.d/http.sh
[root@localhost ~]
# . /etc/profile.d/http.sh
[root@localhost ~]
# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@localhost ~]
# chkconfig --add httpd
[root@localhost ~]
# chkconfig httpd on
[root@localhost ~]
# chkconfig --list httpd
httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@localhost ~]
# service httpd start
正在启动 httpd:AH00558: httpd: Could not reliably determine the server
's fully qualified domain name, using localhost.localdomain. Set the '
ServerName' directive globally to suppress this message
[确定]
######提示这个警告,是因为Httpd主配置文件没有配置ServerName;如下修改;重启就不会提示了:
[root@localhost ~]
# vim /etc/httpd/httpd.conf
ServerName 172.16.14.1:80
|
在客户端访问测试:
Apache的配置选项有很多,可以切换到解压的Httpd目录下使用./configure --help获取;不过都是全英文,如果想详细了解请参考官方文档。
MPM:
MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,在执行configure编译配置时,使用参数 --with-mpm=MPM_NAME。MPM_NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。此命令会列出编译到服务器程序中的所有模块,包括 MPM模块。
MPM可以构建为动态模块。与其它动态模块一样在运行时加载。构建 MPM为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此项特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。通过--with-mpm选项来指定默认MPM,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。
2、安装Mysql数据库服务器
安装之前先添加一块80G的硬盘,创建两个分区分别为10G,调整分区类型为8e;创建一个逻辑卷。这样如果空间不够用的话可以随时扩展磁盘空间。这里把逻辑卷挂载到“/Mydata”目录下,后面需要在Mydata目录下新建一个data目录做为Mysql数据存放目录。这里不在详细讲解LVM逻辑卷的创建,如有兴趣学习可以看本人前面发布的博客。
1
2
3
4
5
6
7
8
9
|
[root@localhost ~]
# partx /dev/sda #重新让内核读取分区如果读取不成功需要重启系统
[root@localhost ~]
# pvcreate /dev/sda{3,5}
[root@localhost ~]
# vgcreate myvg /dev/sda{3,5}
[root@localhost ~]
# lvcreate -n mydata -L 10G /dev/myvg
[root@localhost ~]
# mkfs.ext4 /dev/myvg/mydata
[root@localhost ~]
# mkdir /Mydata
[root@localhost ~]
# vim /etc/fstab #添加如下行,系统重启自动挂载
/dev/myvg/mydata
/Mydata
ext4 defaults 0 0
[root@localhost ~]
# mount -a
|
开始安装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
|
######创建Mysql系统用户
[root@localhost ~]
# useradd -r -s /sbin/nologin mysql
######解压Mysql通用二进制软件包并创建软链接
[root@localhost ~]
# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/
[root@localhost ~]
# cd /usr/local/
[root@localhost
local
]
# ln -sv mysql-5.5.33-linux2.6-x86_64/ mysql
`mysql
' -> `mysql-5.5.33-linux2.6-x86_64/'
######创建Mysql数据存放目录并修改属主、属组
[root@localhost
local
]
# mkdir /Mydata/data
[root@localhost
local
]
# chown -R mysql:mysql /Mydata/data
######从Mysql源码包复制一个模板主配置文件
[root@localhost
local
]
# cp mysql/support-files/my-large.cnf /etc/my.cnf
cp
: overwrite `
/etc/my
.cnf'? y
######创建Mysql的SysV服务启动脚本并添加到系统服务
[root@localhost
local
]
# cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]
# chkconfig --add mysqld
[root@localhost mysql]
# chkconfig mysqld on
[root@localhost mysql]
# chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
######修改Mysql主配置文件添加如下行
[root@localhost
local
]
# vim /etc/my.cnf
thread_concurrency = 2
datadir=
/Mydata/data
######设置Mysql根目录下属组权限并初始化Mysql
[root@localhost mysql]
# cd /usr/local/mysql
[root@localhost mysql]
# chown -R :mysql *
[root@localhost mysql]
# ./scripts/mysql_install_db --user=mysql --datadir=/Mydata/data
######让系统识别源码包安装的软件
[root@localhost mysql]
# echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile.d/mysqld.sh
[root@localhost mysql]
# . /etc/profile.d/mysqld.sh
[root@localhost mysql]
# ln -s /usr/local/mysql/include /usr/include/mysql
[root@localhost mysql]
# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysqld.conf
[root@localhost mysql]
# ldconfig
######启动Mysql数据库
[root@localhost mysql]
# service mysqld start
Starting MySQL... [ OK ]
######设置Mysql数据库root用户的密码
[root@localhost mysql]
# mysqladmin -uroot password 'mypass'
|
第22、23行,第29行~33行注释依次为:
1
2
3
4
5
6
7
|
#这个值可以是CPU核心数的两倍
#数据存放位置
#修改PATH环境变量,将Mysql的命令加入到PATH变量中
#重新读取环境变量文件,让系统能识别
#将Mysql头文件加入到系统中
#将Mysql库文件添加到系统中
#重新加载库文件,让系统能识别
|
3、安装PHP(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
|
######解压软件包
[root@localhost ~]
# tar xf php-5.4.19.tar.bz2
[root@localhost ~]
# tar xf xcache-3.0.3.tar.bz2
[root@localhost ~]
# tar xf memcache-2.2.7.tgz
######安装php依赖环境"libmcrypt-devel"可以到搜狐镜像去下载
[root@localhost ~]
# yum -y groupinstall "Server Platform Development" "Development tools"
[root@localhost php-5.4.19]
# yum -y install libmcrypt-devel bzip2-devel gcc-c++ libxml2-devel openssl-devel autoconf
######编译安装php
[root@localhost ~]
# cd php-5.4.19
[root@localhost php-5.4.19]
# ./configure --prefix=/usr/local/php \\
--with-openssl \\
--
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 \\
--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
[root@localhost php-5.4.19]
# make && make install
######为PHP提供主配置文件
[root@localhost php-5.4.19]
# cp php.ini-production /etc/php.ini
######为php-fpm提供SysV服务脚本,添加执行权限并加入到系统服务
[root@localhost php-5.4.19]
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost etc]
# chmod +x /etc/rc.d/init.d/php-fpm
[root@localhost php-5.4.19]
# chkconfig --add php-fpm
[root@localhost php-5.4.19]
# chkconfig php-fpm on
[root@localhost php-5.4.19]
# chkconfig --list php-fpm
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
######为php-fpm提供配置文件
[root@localhost php-5.4.19]
# cd /usr/local/php/etc/
[root@localhost etc]
# mv php-fpm.conf.default php-fpm.conf
######配置PATH路径让系统能够找到源码包安装的PHP命令
[root@localhost etc]
# echo "PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH" >> /etc/profile.d/php-fpm.sh
[root@localhost etc]
# . /etc/profile.d/php-fpm.sh
[root@localhost etc]
# ln -sv /usr/local/php/include /usr/include/php
`
/usr/include/php
' -> `/usr/local/php/include'
######修改php-fpm主配置文件如下:
[root@localhost etc]
# vim php-fpm.conf
pid = run
/php-fpm
.pid
error_log = log
/php-fpm
.log
listen = 172.16.14.2:9000
pm.max_children = 50
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
######启动php-fpm服务
[root@localhost etc]
# service php-fpm start
Starting php-fpm
done
|
第11行~24行注释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#支持SSL加密
#支持多字节、多字符串
#开启对freetype字体库的支持
#开启对jpeg、png图片的支持
#开启对zlib库的支持
#开启对libxml库的支持
#开启xml文件的支持
#开启套接字支持
#以fastcgi方式编译安装
#支持的算法扩展
#指定主配置文件路径
#额外扫描的配置文件目录
#支持bz2压缩
#开启php-fpm连接数据库支持
|
第45行~51行注释:
1
2
3
4
5
6
7
|
#PID文件
#开启错误日志
#监听的地址与端口
#静态方式下开启的php-fpm进程数
#动态方式下启动的php-fpm进程数
#动态方式下最小php-fpm进程数
#动态方式下最大php-fpm进程数
|
4、安装Xcache
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#安装php加速opcode代码的软件Xcache
[root@localhost etc]
# cd /root/xcache-3.0.3
[root@localhost xcache-3.0.3]
# /usr/local/php/bin/phpize
[root@localhost xcache-3.0.3]
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
[root@localhost xcache-3.0.3]
# make && make install
#在安装结束时会提示如下代码:
Installing shared extensions:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
#创建php配置文件扫描目录
[root@localhost xcache-3.0.3]
# mkdir /etc/php.d
#提供Xcache配置文件到php
[root@localhost xcache-3.0.3]
# vim /etc/php.d/xcache.ini
#在xcache.ini文件中装载xcache.so模块
extension =
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache
.so
|
5、安装memcache插件
1
2
3
4
5
6
7
8
9
10
|
#安装php连接memcached缓存服务器插件memcache
[root@localhost xcache-3.0.3]
# cd /root/memcache-2.2.7
[root@localhost memcache-2.2.7]
# /usr/local/php/bin/phpize
[root@localhost memcache-2.2.7]
# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
[root@localhost memcache-2.2.7]
# make && make install
#在安装结束时会提示如下代码:
Installing shared extensions:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
#在php.ini文件中加入如下代码,装载memcache模块
[root@localhost memcache-2.2.7]
# vim /etc/php.ini
extension=
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache
.so
|
重新启动php-fpm服务
1
2
3
|
[root@localhost ~]
# service php-fpm restart
Gracefully shutting down php-fpm .
done
Starting php-fpm
done
|
四、Libevent与Memcached安装配置
1、Memcached简介
Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等
Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:
1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成
2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期
3. 各服务器间彼此无视:不在服务器间进行数据同步
4. O(1)的执行效率
5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长
2、安装与配置
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
|
######安装libevent
[root@localhost ~]
# tar xf libevent-2.0.21-stable.tar.gz
[root@localhost ~]
# cd libevent-2.0.21-stable
[root@localhost libevent-2.0.21-stable]
# ./configure --prefix=/usr/local/libevent
[root@localhost libevent-2.0.21-stable]
# make && make install
######调整libevent库
[root@localhost libevent-2.0.21-stable]
# echo "/usr/local/libevent/lib" >> /etc/ld.so.conf.d/libevent.conf
[root@localhost libevent-2.0.21-stable]
# ldconfig
#####################################################################
######安装Memcached
[root@localhost ~]
# tar xf memcached-1.4.15.tar.gz
[root@localhost ~]
# cd memcached-1.4.15
[root@localhost memcached-1.4.15]
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
[root@localhost memcached-1.4.15]
# make && make install
######为Memcached提供SysV服务脚本
[root@localhost ~]
# vim /etc/rc.d/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"
IPADDR=
"172.16.14.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
"$IPADDR"
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
######为脚本添加执行权限,加入到系统服务并设置为开机自启动
[root@localhost ~]
# chmod +x /etc/rc.d/init.d/memcached
[root@localhost ~]
# chkconfig --add memcached
[root@localhost ~]
# chkconfig memcached on
[root@localhost ~]
# chkconfig --list memcached
memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off
######启动Memcached服务
[root@localhost ~]
# service memcached start
Starting Distributed memory caching (memcached): [ OK ]
|
五、整合Httpd、Php、Mysql、Memcached
1、在Apache服务器上新建虚拟主机并整合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
|
######打开主配置文件修改如下内容
[root@localhost ~]
# vim /etc/httpd/httpd.conf
#DocumentRoot "/usr/local/apache/htdocs"
LoadModule proxy_fcgi_module modules
/mod_proxy_fcgi
.so
LoadModule proxy_module modules
/mod_proxy
.so
Include
/etc/httpd/extra/httpd-vhosts
.conf
######添加下面两行内容
AddType application
/x-httpd-php
.php
AddType application
/x-httpd-php-source
.phps
######添加默认php主页
DirectoryIndex index.php index.html
######添加虚拟主机
[root@localhost ~]
# vim /etc/httpd/extra/httpd-vhosts.conf
DocumentRoot
"/web/allen"
ServerName www.allen.com
ProxyRequests Off
ProxyPassMatch ^/(.*\\.php)$ fcgi:
//172
.16.14.2:9000
/web/allen/
$1
<Directory
"/www/allen"
>
Options none
AllowOverride none
Require all granted
<<>
# ErrorLog "logs/www.allen.com-error_log"
# CustomLog "logs/www.allen.com-access_log" common
<<>
######创建网站存放目录
[root@localhost ~]
# mkdir -pv /web/allen
mkdir
: created directory `
/web
'
mkdir
: created directory `
/web/allen
'
######添加本地hosts解析
C:\\Windows\\System32\\drivers\\etc\\hosts
172.16.14.1 www.allen.com
|
2、在Php服务器上创建网站目录并新建测试页:
1
2
3
4
5
6
7
|
[root@localhost ~]
# mkdir -pv /web/allen
mkdir
: created directory `
/web
'
mkdir
: created directory `
/web/allen
'
[root@localhost ~]
# cat > /web/allen/index.php << EOF
>
> phpinfo();
> EOF
|
3、在客户端访问是否能解析php测试页,并查看是否加载Xcache、Memcache模块:
4、在Php服务器上创建test.php页面,测试连接memcached服务器:
1
2
3
4
5
6
7
8
9
10
|
[root@localhost ~]
# vim /web/allen/test.php
$mem = new Memcache;
$mem->connect(
"172.16.14.3"
, 11211) or die(
"Could not connect"
);
$version = $mem->getVersion();
echo
"Server's version: "
.$version.
"
;
$mem->
set
(
'hellokey'
,
'Hello World'
, 0, 600) or die(
"Failed to save data at the memcached server"
);
echo
"Store data in the cache (data will expire in 600 seconds)
;
$get_result = $mem->get(
'hellokey'
);
echo
"$get_result is from memcached server."
;
|
5、在客户端访问test.php页面,如果访问成功则会显示版本信息等:
6、在php服务器上面安装一个论坛,论坛中间需要连接数据库,这样即测试了连接数据库又演示了怎么安装一个论坛系统:
a)、在数据库服务器上授权一个用户,允许远程连接,这里我们就使用root用户了,但在生产环境中千万不能使用root用户:
1
2
3
4
5
6
7
8
9
10
|
[root@localhost ~]
# mysql -uroot -pmypass
######创建论坛所使用的数据库
mysql> create database phpwind;
Query OK, 1 row affected (0.04 sec)
######授权172.16.0.0网段可以使用root用户远程连接
mysql> grant all on *.* to
'root'
@
'172.16.%.%'
identified by
'root@pass'
;
Query OK, 0 rows affected (0.03 sec)
######授权完成后,刷新生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
|
b)、在php和Apache服务器上面分别解压已下载的论坛软件包并安装:
先在Php服务器上解压:
1
2
3
4
5
6
|
######解压phpwind软件包
[root@localhost ~]
# unzip phpwind_v9.0_utf8.zip > /dev/null
######拷贝到网站目录下并重命名
[root@localhost ~]
# mv phpwind_v9.0_utf8/upload /web/allen/bbs
######更改属主权限为运行php-fpm的用户
[root@localhost ~]
# chown -R nobody /web/allen/bbs/*
|
在apache服务器上解压:
1
2
|
[root@localhost ~]
# unzip phpwind_v9.0_utf8.zip > /dev/null
[root@localhost ~]
# mv phpwind_v9.0_utf8/upload /web/allen/bbs
|
7、在客户端访问安装论坛系统:
检查安装环境:
配置数据库信息及用户,点创建数据会自动创建数据库文件,然后自动跳转到主页:
安装成功,进入主页面:
登录到论坛,进入后台设置:
phpwind论坛后台管理界面:
修改phpwind论坛让其支持memcache
下面我们在php与apache服务器上面都要修改一下phpwind的配置文件,修改内容一致,这就里给出一个服务器的代码;让其支持memcached;如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
'mem.isopen'
=> 1,
//开启memcache缓存,请确保服务器上已安装 memcache 服务,并已作好相应配置。值修改为1
'mem.server'
=>
'MemCache'
,
//memcache服务名,有MemCache和MemCached两种,看当前php扩展安装的是哪个
'mem.servers'
=>
array
(
'default'
=>
array
(
array
(
'host'
=>
'172.16.14.3'
,
//Memcached缓存服务器地址
'port'
=> 11211,
//Memcached缓存服务器监听端口
'pconn'
=> false,
'weight'
=> 1,
'timeout'
=> 15,
'retry'
=> 15,
'status'
=> true,
'fcallback'
=> null,
),
),
),
|
再次用客户端访问论坛,如下:
查看Memcached服务器状态如:
1
2
3
4
5
6
|
######安装telnet远程工具
[root@localhost ~]
# yum -y install telnet
######远程登录到Memcached的服务器
[root@localhost ~]
# telnet 172.16.14.3 11211
######执行如下命令获取Memcached状态
stats
|