一)实验目的

通过3台主机搭建分别跑三个服务,依次,apache,php,mysql。主要实现当用户访问的网站的时候,网站分为动态,静态,当访问静态的时候交给apache,访问php动态格式时,交给php,作用减少服务器的压力,和提高用户访问的速度。apache和php之间的通信通过fastcgi,php和mysql之间的通信通过mysqlnd。

二)实验设置环境

服务器版本
[root@station106 ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
Mage Education Learning Services
http://www.magedu.com
[root@station106 ~]# uname -r
2.6.32-358.el6.x86_64


服务IP地址软件版本官方网站
apache前端服务器,提供静态页面。
192.168.1.116http-2.4.9.tar.bz2http://www.apache.org/
php后端服务器,提供动态页面。192.168.1.114php-5.4.26.tar.bz2http://php.net/downloads.php
xcache加速缓存器,和php一台主机。192.168.1.114xcache-3.0.3.tar.bz2http://xcache.lighttpd.net/
mysql数据库服务器192.168.1.108mysql-5.5.33-linux.2.6-x86.64.tar.gzhttp://dev.mysql.com/downloads/

三)图形解释工作模式

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机




四)http主配置文件的配置。

ps:

    http和mysql的安装这里参考http://shunzi.blog.51cto.com/8289655/1381677,这里就不在讲述。

vim /etc/httpd/http.conf

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_02

DirectoryIndex index.html index.php最好这样写。如果按上面的方法写访问html页面会显示文件不存在。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_03

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_04

配置虚拟主机,首先就要注释掉中心主机,并且开启虚拟主机配置文件。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_05

注意如果下面的虚拟主机的目录:写成了别的,比如/www/benet/

那么<Directory "/www">这里必须写www,否则提示目录访问权限是拒绝的。

还有一种解决办法就是在虚拟主机中直接授权。这里选择第二种。


LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_06

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

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_07

mkdir -pv /www/{benet,accp}/htdocs

分别在两个虚拟主机下方入不同的网页,测试,启动httpd。

service httpd24 restart

在本机测试,如果不做dns就把ip 域名写入到hosts文件中。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_08


五)php的安装和配置。

1)解压编译。

tar xf php-5.4.26.tar.bz2
cd php-5.4.26
./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
make && make install

php单独使用需要的编译模块。--enable=fpm

2)提供配置文件

mkdir /etc/php5

cp php.ini-production /etc/php5/php.ini提供配置文件。

3)提供fpm,fpm管理php单独工作。

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 --list php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf

编辑php-fpm配置文件

vim php-fpm.conf

pid = /usr/local/php/var/run/php-fpm.pid 启动pid文件
error_log = log/php-fpm.log启动错误日志
listen = 192.168.1.114:9000 监听端口写本机的。
pm.max_children = 50最多最大子进程数
pm.start_servers = 5默认启动几个子进程
pm.min_spare_servers = 3最小空闲数
pm.max_spare_servers = 6最大空闲数

保存退出

 /etc/init.d/php-fpm start启动

 ss -tln查看端口默认9000是否启动

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_09



浏览器访问发现没有访问到。这是因为前端服务器没有把请求数据交给后台php处理。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_10发现访问不到,因为没有找到php。

解决办法是需要支持反向代理功能。

1)修改前端服务器apache主配置文件。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_11

重启httpd

2)在php后端服务器,创建和fcgi中相同的目录。

mkdir -p /www.accp.com

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_12

/etc/init.d/php-fpm restart

浏览器访问测试。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_13

经过测试发现已经能顺利的把客户端请求的php的网站能通过前端调用到后台php后端处理。

六)开始处理php和mysql中的通信做测试。

在mysql服务器上授权给php后端服务器,能通信的一个用户。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_14在php服务器上写个mysql测试页,测试php和mysql能否正常通信。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_15

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_16

七)安装phpmyadmin。

前端服务器上放一份,因为图片需要在前端处理。

unzip phpMyAdmin-4.0.5-all-languages.zip

mv phpMyAdmin-4.0.5-all-languages/ /www/accp/htdocs/

后端php上放一份。因为里面有php的网页需要,有的需要去php访问。

php上存放的目录时/www.accp.com里,这里就是在apache上定义的fcgi里的同一个目录。

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_17


页面访问成功,输入登录账号和密码无法登陆。

解决办法。在php后端服务器上修改。

修改的是phpmyadmin里的配置文件。

mv config.sample.inc.php config.inc.php

vim config.inc.php

LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_LAMP基于不同主机_18


LAMP分布式架构,通过fcgi通信方式进行工作详解和缓存加速之压力测试。_通过fcgi的方式工作。_19

ps:

    php已经能和mysql正常通信。授权的用户也已生效。

以上三台机器,均已都正常通信。

下面对服务器做优化。

先做压力测试看效果,在前端执行。

ab -c 500 -n 2000 http://www.accp.com/php
Concurrency Level:      500
Time taken for tests:   7.870 seconds
Complete requests:      2000
Failed requests:        0
Non-2xx responses:      2000
Total transferred:      906000 bytes
HTML transferred:       464000 bytes
Requests per second:    254.14 [#/sec] (mean)
Time per request:       1967.421 [ms] (mean)
Time per request:       3.935 [ms] (mean, across all concurrent requests)
Transfer rate:          112.43 [Kbytes/sec] received


八)安装xcache后在看压力效果,作对比

1)tar xf xcache-3.0.3.tar.bz2
cd xcache-3.0.3
/usr/local/php/bin/phpize
./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/安装完成。
2)修改xcache配置文件。
mkdir /etc/php.d
cp xcache.ini /etc/php.d/
vim /etc/php.d/xcache.ini
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
/etc/init.d/php-fpm restart重启

九)前端继续做压力测试看效果。

ab -c 500 -n 2000 http://www.accp.com/php

Concurrency Level:      500

Time taken for tests:   2.584 seconds

Complete requests:      2000

Failed requests:        0

Non-2xx responses:      2000

Total transferred:      906000 bytes

HTML transferred:       464000 bytes

Requests per second:    773.99 [#/sec] (mean)

Time per request:       646.004 [ms] (mean)

Time per request:       1.292 [ms] (mean, across all concurrent requests)

Transfer rate:          342.40 [Kbytes/sec] received

PS:

    效果挺明显。访问时间减少了将近2倍。实验操作完成。