分离部署lamp环境+xcache

分离部署lamp环境+xcache
LAMP:Linux操作系统+apache+mysql+php
FastCGI 工作机制:
首先客户端发起请求,请求分为 2 种,一种是静态请求它可以直接由 Apache 直接响应返回; 另一种是动态的请求,如其中包含中 php 或者 Perl 这种脚本解释性语言,则由 Apache 服务 器通过 fastcgi 协议调用 php 服务器执行并返回给Apache由 Apache返回解释执行后的结果, 如果这个过程中涉及到对数据的操作,此时 php 服务器还会还会通过 mysql 协议调用 mysql 服务器。
php 的工作模式:
php 在 lamp 环境下共有三种工作模式:CGI 模式、apache 模块、FastCGI 模式。CGI 模式下 运行 PHP,性能不是很好。作为 apache 的模块方式运行,在以前的课程中编译安装 lamp 已 经介绍过了。FastCGI 的方式和 apache 模块的不同点在于:FastCGI 方式 PHP 是一处独立的 进程,所有 PHP 子进程都由 PHP 的一个叫作 php-fpm 的组件负责管理;而 apache 模块化方 式运行的 PHP,则是 apache 负责调用 PHP 完成工作。PHP 的 FastCGI 方式性能要比 apache 模块化方式强很多。

编译环境及各软件版本:

主机规划分配:
1台httpd服务器(192.168.1.10/24)
1台php服务器(192.168.1.20/24)
1台MySQL服务器(192.168.1.30/24)
编译安装LAMP:
编译安装apache
编译安装MySQL
Fast CGI方式安装php
1、 解决php的依赖关系:

[[email protected] ~]# yum -y install libxml2-devel lzip2-devel libcurl-devel libmcrypt-devel openssl-devel bzip2-deve

安装libmcrypt:

[[email protected] ~]# tar zxf libmcrypt-2.5.7.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/libmcrypt-2.5.7/
[[email protected] libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
2、 编译安装php:
[[email protected] ~]# tar zxf php-5.6.27.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/php-5.6.27/

[[email protected] php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
[[email protected] php-5.6.27]# make && make install
相关解释:
--prefix=/usr/local/php5.6//安装位置
--with-mysql=mysqlnd //支持 mysql
--with-pdo-mysql=mysqlnd //支持 pdo 模块
--with-mysqli=mysqlnd //支持 mysqli 模块
--with-openssl //支持 openssl 模块
--enable-fpm //支持 fpm 模式
--enable-sockets //启用 socket 支持
--enable-sysvshm //启用系统共享内存支持
--enable-mbstring //多字节字串、像我们的中文就是多字节字串
--with-freetype-dir //支持 freetype、就要装 freetype-devel、跟字体相关的、字体解析工具
--with-jpeg-dir
--with-png-dir //处理 jpeg、png 图片的、php 可以动态生成 jpeg 图片
--with-zlib //是个压缩库、在互联网传输时用来压缩传输的
--with-libxml-dir=/usr //这个 libxml 是用来解析 xml 的、指定/usr 下
--enable-xml //支持 xml 的
--with-mhash //支持 mhash
--with-mcrypt=/usr/local/libmcrypt //libmcrypt-devel //这个程序包所指定的
--with-config-file-path=/etc //指定配置文件的存放路径的
--with-config-file-scan-dir=/etc/php.d //配置文件扫描路径
--with-bz2 //支持 BZip2
--with-bz2--enable-maintainer-zts //为了支持 apache 的 worker 或 event 这两个 MPM,编译时使用了--enable-maintainer-zts 选项
如果使用 PHP5.3 以上版本,为了链接 MySQL 数据库,可以指定 mysqlnd,这样在本机就不 需要先安装 MySQL 或 MySQL 开发包了。mysqlnd 从 php 5.3 开始可用,可以编译时绑定到它 (而不用和具体的 MySQL 客户端库绑定形成依赖),但从 PHP 5.4 开始它就是默认设置了。
3、配置php文件:
在php源码包路径下操作:

[[email protected] php-5.6.27]# cp php.ini-production /etc/php.ini
[[email protected] php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[[email protected] php-5.6.27]# chmod +x /etc/init.d/php-fpm
[[email protected] php-5.6.27]# chkconfig --add php-fpm
[[email protected] php-5.6.27]# chkconfig php-fpm on
[[email protected] php-5.6.27]# cd /usr/local/php5.6/etc/
[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
[[email protected] etc]# vim php-fpm.conf
修改如下内容:

pid = run/php-fpm.pid //php的pid
listen = 0.0.0.0:9000 //监听地址,0.0.0.0代表监听所有
pm.max_children = 50 //最大启动进程数
pm.start_servers = 5 //启动时的进程个数
pm.min_spare_servers = 5 //最小空闲进程
pm.max_spare_servers = 35 //最大空闲进程
4、 启动php-fpm服务:

[[email protected] etc]# service php-fpm start
Starting php-fpm done
[[email protected] etc]# netstat -anput | grep 9000 //php的端口为9000
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 14920/php-fpm: mast
在该主机上新建虚拟主机目录用于存放网页问文件:

php已经安装配置完毕,下面配置apache通过fastcgi协议调用
5、 安装apache并配置:
安装apache所需软件包:(用脚本一键安装即可)
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
pcre-8.39.tar.gz
httpd-2.4.23.tar.gz
openssl-1.0.1u.tar.gz
zlib-1.2.8.tar.gz
配置apache:
在 Apache2.4 以后已经专门有一个模块针对 FastCGI 的实现,此模块为 mod_proxy_fcgi.so, 它其实是作为 mod_proxy.so 模块的扩充,因此,这两个模块都要加载
在主配置文件里修改以下内容:[[email protected] ~]# vim /usr/local/http-2.4.23/conf/httpd.conf
加载模块(去掉注释):
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
启用虚拟主机功能:(去掉注释)
Include conf/extra/httpd-vhosts.conf
定位到AddType,添加下面两行:让apache能够识别php格式的页面
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
同时定位到Direcorylndx:添加index.php,以支持php格式的主页
DirectoryIndex index.php index.html //添加 index.php(最好添加在最前面)
6、 配置虚拟主机支持使用fcgi:(在默认模板上进行修该即可)

[[email protected] ~]# vim /usr/local/http-2.4.23/conf/extra/httpd-vhosts.conf
<VirtualHost :80>
ServerAdmin [email protected]
DocumentRoot "/var/www/pdx"
ServerName www.pdx.com
ServerAlias pdx.com
ErrorLog "logs/pdx.com-error_log"
CustomLog "logs/pdx.com-access_log" common
ProxyRequests Off
ProxyPassMatch ^/(.
.php(/.)?)$ fcgi://192.168.1.20:9000/var/www/pdx/$1
<Directory "/var/www/pdx">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
其中:
ProxyRequests off #关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到 php-fpm 进程,php-fpm 至少需要知道运行的目录和 URI,所以这里直接在 fcgi://192.168.1.20:9000 后指明了这两个参数,其它的参数的传递已经被 mod_proxy_fcgi.so 进行了封装,不需要手动指定。 特别注意的是,红色字体部分需要与<VirtualHost>中的 DocumentRoot后的路径一致
ProxyPassMatch
只有满足特定正则模式的内容才会匹配并执行此规则,这里的模式是,^/(.
.php(/.*)?)$ 从网站(虚拟主机<VirtualHost>的根目录开始,匹配任何以 .php 结尾,或者在 .php 之后 紧跟一个 / 再跟别的内容的路径。
^ (caret) 和 $ (dollar)标志要匹配的路径的开始和结束
( )括号里的内容可以用 $1 来表示,以方便后面引用它。
fcgi:// 192.168.1.20:9000 通过 mod_proxy_fcgi 来转发的代理,使用 fastCGI 协议,转到 PHP-FPM 监听的端口。
/path/to/your/documentroot/
非常重要!必须与虚拟主机的路径匹配,且必须是对应 php 文件在操作系统中的绝对路径。 否则会找不到文件
$1 可以从原始请求扩展成整个请求路径的变量,这里指代前面( ) 里面匹配的那个路径(uri)
Apache httpd 2.4 以前的版本中,要么把 PHP 作为 Apache 的模块运行,要么添加一个第 三方模块支持 PHP-FPM 实现。
创建一个目录作为虚拟主机的家目录:

[[email protected] ~]# mkdir -p /var/www/pdx
重启apache服务:

[[email protected] ~]# apachectl restart
7、 安装MySQL数据库:
用脚本一键安装即可:

[[email protected] ~]# sh mysql.sh

////说明安装成功////
8、 测试LAMP环境:
在 mysql 主机上创建用于 php 服务器连接的 mysql 账户

mysql> grant all on . to [email protected]‘%‘ identified by ‘123456‘;
////注意防火前墙允许mysql连接////
在 php 服务器上的/var/www/benet 目录下创建.php 的测试页:

[[email protected] ~]# cat /var/www/pdx/index.php
<?php
phpinfo();
?>
[[email protected] ~]# cat /var/www/pdx/test.php
<?php
$link=mysql_connect(‘192.168.1.30‘,‘pdx‘,‘123456‘);
if ($link)echo "connection success......";
mysql_close();
?>
访问php测试页:


9、 ab压力测试:
网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压 情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。
性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege
ab 是 apache 自带的压力测试工具。ab 非常实用,它不仅可以对 apache 服务器进行网站访 问压力测试,也可以对或其它类型的服务器进行压力测试。比如 nginx、tomcat、IIS 等。
ab命令的使用:
1):ab的原理:
ab 是 apachebench 命令的缩写。
ab 命令会创建多个并发访问线程,模拟多个访问者同时对某一 URL 地址进行访 问。它的测试目标是基于 URL 的,因此,它既可以用来测试 apache 的负载压力,也可以测 试 nginx、lighthttp、tomcat、IIS 等其它 Web 服务器的压力。
ab 命令对发出负载的计算机要求很低,它既不会占用很高 CPU,也不会占用很多内存。但 却会给目标服务器造成巨大的负载,其原理类似 CC 。自己测试使用也需要注意,否则 一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
2)ab的安装:
ab 的安装非常简单,如果是源码安装 apache 的话,那就更简单了。apache 安装完毕后 ab 命令存放在 apache 安装目录的 bin 目录下 ///usr/local/http2.4.23/bin/ab
如果 apache 是通过 yum 的 RPM 包方式安装的话,ab 命令默认存放在/usr/bin 目录下
////可以是用which ab查找////
注意:如果不想安装 apache 但是又想使用 ab 命令的话,我们可以直接安装 apache 的工具 包 httpd-tools ///yum -y install httpd-tools
查看 ab 是否安装成功,可以切换到上述目录下,使用 ab –V 命令进行检测

如果出现以上错误,有两种解决办法:

  1. export LD_LIBRARY_PATH="/usr/local/openssl/lib/",
  2. vim /etc/ld.so.conf,在里面添加/usr/loocal/openssl/lib----wq保存退出,使用ldconfig命令刷新

    3)ab的参数:
    -n:在测试会话中所执行的请求个数(即总请求数)。
    -c:一次产生的请求个数(即并发用户数)。
    ////更多参数可以使用ab --help查看详细说明
    [[email protected] ~]# ab -c 500 -n 10000 http://192.168.1.10/index.html

这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间 都不超过 66ms,这个处理时间是指前面的 Time per request,即对于单个用户而言,平均 每个请求的处理时间。
4)ab性能指标:
1、吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是 reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 记住:吞吐率是基于并发用户数的。这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的
计算公式:总请求数/处理完成这些请求数所花费的时间,即 Request per second=Complete requests/Time taken for tests 必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。
2、 并发连接数(The number of concurrent connections)
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话 3、并发用户数(Concurrency Level)
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连 接数。
4、用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
5、服务器平均请求等待时间(Time per request:across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间/总请求数,即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也等于用户平均请求等待时间/并发用户数,即
Time per request/Concurrency Level
10、 安装php加速软件xcache(在php主机上进行操作)
说明:
php 安装目录:/usr/local/php5.6
php.ini 配置文件路径:/etc/php.ini
php 网页根目录:/var/www/pdx
1) 安装xcache

[[email protected] ~]# tar zxf xcache-3.2.0.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/xcache-3.2.0/
[[email protected] xcache-3.2.0]# /usr/local/php5.6/bin/phpize //用 phpize 生成 configure 配置文件
[[email protected] xcache-3.2.0]# ./configure --enable-xcache --enable-xcache-coverager --enable-xcache-optimizer --with-php-config=/usr/local/php5.6/bin/php-config && make && make install
///配置、编译、安装///
安装完成后会出下一下界面:(记住路径,后面要用到)

2) 创建xcache缓存文件:
[[email protected] xcache-3.2.0]# touch /tmp/xcache
[[email protected] xcache-3.2.0]# chmod 777 /tmp/xcache
3) 拷贝 xcache 后台管理程序到网站根目录
[[email protected] xcache-3.2.0]# cp -r htdocs/ /var/www/pdx/xcache
4) 配置 php 支持 xcache
vim /etc/php.ini ///编译配置文件,在最后一行添加一下内容:
[xcache-common]
extension = /usr/local/php5.6/lib/php/extensions/no-debug-zts-20131226/xcache.so
[xcache.admin]
xcache.admin.enable_auth = Off
[xcache]
xcache.shm_scheme ="mmap"
xcache.size=60M
xcache.count =1
xcache.slots =8K
xcache.ttl=0
xcache.gc_interval =0
xcache.var_size=64M
xcache.var_count =1
xcache.var_slots =8K
xcache.var_ttl=0
xcache.var_maxttl=0
xcache.var_gc_interval =300
xcache.test =Off
xcache.readonly_protection = Off
xcache.mmap_path ="/tmp/xcache"
xcache.coredump_directory =""
xcache.cacher =On
xcache.stat=On
xcache.optimizer =Off
[xcache.coverager]
xcache.coverager =On
xcache.coveragedump_directory =""
将 xcache 目录拷贝到 apache 主机的网页文档目录下
[[email protected] xcache-3.2.0]# scp -r /var/www/pdx/xcache/ [email protected]:/var/www/pdx/
5) 测试:
重启php-fpm:service php-fpm restart
浏览器打开网站根目录下面的 xcache:
http://192.168.1.10/xcache/cacher/可以看到如下界面

至此,Linux 下安装 php 加速软件 Xcache 教程完成
再次执行ab压力测试:
[[email protected] ~]# ab -c 500 -n 10000 http://192.168.1.10/index.php

11、 部署bbs论坛:
将Discuz 的程序文件解压,并且将 upload 中所有文件放置到网站目录(php 服务器的操作)
[[email protected] ~]# unzip Discuz_7.0.0_FULL_SC_UTF8.zip
[[email protected] ~]# cp -r Discuz_7.0.0_FULL_SC_UTF8/upload/ /var/www/pdx/bbs
设置 php-fpm 的服务用户为下面文件的属主或者对其设置写权限,否则安装时会报错
[[email protected] ~]# chmod -R 777 /var/www/pdx/bbs/
修改 php.ini 文件(/etc/php.ini)
[[email protected] ~]# vim /etc/php.ini
将php.ini 中的 short_open_tag 设置为 On //否则程序无法正常运行
设置完成后重启php-fpm ///[[email protected] ~]# service php-fpm restart

web 服务器也需要有静态文件(apache 服务器上操作)
直接使用scp命令处复制一份就行:
[[email protected] ~]# scp -r /var/www/pdx/bbs/ [email protected]:/var/www/pdx/

配置完成后,浏览器输入http://192.168.1.10/bbs/install/即可安装


出现上面这种情况是由于 php 服务器安装了 discuz 之后导致程序发生变化从而导致动态服 务器和静态服务器的程序不一致,只需要手动把 bbs 服务器的文件和 web 服务器进行一次 同步即可,如果想实现自动同步,需要使用其他服务,如 initory+rsync、sersync 等工具
[[email protected] ~]# scp -r /var/www/pdx/bbs/* [email protected]:/var/www/pdx/bbs/
动态服务器和静态服务器同步文件之后,再次访问 bbs 的网址就正常了。

原文地址:https://blog.51cto.com/14256937/2442689

时间: 2024-08-12 12:15:06

分离部署lamp环境+xcache的相关文章

使用Ansible部署LAMP环境

使用Ansible部署LAMP环境 前言 Ansible在部署实验环境真的很好用,今天向大家分享如何使用Ansible部署LAMP环境. 实验环境 今天实验环境比较简单, 所以就不画图了 主机 IP地址 功用 server1.anyisalin.com 172.16.1.2 控制主机 web.anyisalin.com 172.16.1.3 httpd和php data.anyisalin.com 172.16.1.4 MySQL 实验步骤 配置ssh公钥认证 ansible是agentless

ansible集中化自动管理(部署LAMP环境)

##ansible集中化自动管理 目标:1.生成公钥,并上传ssh的公钥到被控端主机 2.在ansible的主控端配置本地yum源和网络yum源 3.安装ansible,用ansible上传yum源目录到被控端主机. 4.用ansible管理被控端主机的系统.软件和服务. 5.用playbooks剧本(yaml脚本文件)来管理被控端. 各种网络yum仓库: 6zabbix-2.4: rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/

CentOS7单机部署lamp环境和apache虚拟主机

(1)apache介绍 apache : httpd.apache.org 软件包:httpd 端口服务:80/tcp(http) 443/tcp(https,http+ssl) 配置文件: /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf /etc/httpd/conf.d/welcome.conf //默认测试页面 (2)lamp环境安装 1.关闭防火墙和selinux systemctl stop firewalld.service s

ubuntu下部署LAMP环境

目标: 以源码编译的方式安装一个lamp webserver服务器,有下列php扩展或功能,memcache, xcache, pdo, zip, imagemagick等 软件环境版本 ubuntu 14.0.4 apache 2.2 mysql 5 php 5 软件下载地址 /home/eric/下载/software/dev/server/lamp/ 安装目标目录 /usr/local/ 最终安装后要形成的路径 apache: /usr/local/apache mysql:  /usr/

CentOS7 一键部署LAMP环境

一.准备工作: 1)所需素材网盘链接:https://pan.baidu.com/s/17bQNJJ1-FwNzvtJI4rP5cw 提取码:m0hi 2)编写脚本,脚本内容如下: [[email protected] ~]# vim lamp.sh #!/bin/bash #安装Apache mount /dev/cdrom /mnt cd /mnt rpm -ivh apr-1.4.8-3.el7.x86_64.rpm rpm -ivh apr-devel-1.4.8-3.el7.x86_6

部署lamp环境

一.安装centos7 #参考https://www.cnblogs.com/wcwen1990/p/7630545.html 1.使用虚拟机安装centOS7作为服务器,打开vmware workstations,文件->新建虚拟机,选择"自定义(高级)"选项 2.步骤基本默认,下一步继续:(可以选择"稍后安装操作系统"选项) 3.在出现如下界面,客户机操作系统选择"linux",版本选择"CentOS 64位",下一

CentOS7下安装部署LAMP环境

(1)配置概要:  1. 172.16.100.31主机运行httpd+php服务(php为模块工作模式)  配置两台虚拟主机:wordpress个人博客系统.PHPmyadmin远程控制mysql 2.172.16.100.31主机运行mariadb服务(mysql) (2)配置流程:  首先配置172.16.100.31主机:http服务              1.安装程序:[[email protected]'s linux ~]# yum install httpd php php-

编译部署LAMP+xcache (php-fpm模式)

通过编译安装方式部署分离式LAMP+xcache (php-fpm模式) 要求: (1)采用源码编译部署分离式的LAMP,其中php基于php-fpm模式 (2)基于LAMP平台一个虚拟主机提供WordPress,另一个虚拟主机提供phpMyadmin (3)利用xcache来为php提供缓存加速页面的访问速度 (4)对其中一个站点缓分别做压力测试,并且比对缓存加速前和加速后的数据. 环境: 192.168.1.103------>提供httpd服务 192.168.1.104------>提

Redhat6下LAMP环境的搭建

LAMP是服务器系统中开源软件的一个十分普遍的组合.LAMP分别代表Linux + Apache + Mysql + Php | Python | Perl.就系统工程师来说,除了会部署LAMP环境,还应该熟练的掌握对环境的操作调优. 本文仅用于新手安装参考! 注意:自从Mysql被Oracle收购之后,很多时候使用MarriDB来代替Mysql! 环境介绍: 操作系统:RHEL6.4 IP地址:192.168.0.254 1. 安装Redhat6操作系统. 具体安装视个人需求而定! 2. 安装