本文旨在实现lamp服务分离实验,即httpd一台机器,php一台机器,mysql一台机器,并且提供wordpress程序和phpMyAdmin程序,为php提供xcache加速。


前言


1.实验需求

2.实验软件

3.服务器规划

4.目录规划

5.实验拓扑

6.部署apache服务

7.部署mariadb服务

8.部署php-fpm服务

9.部署wordpres程序

10.部署phpMyadmin程序

11.压力测试

1.实验需求


(1)CentOS 7, amp + xcache,编译安装,php-fpm;

(2)分别安装:httpd, php, mariadb分别部署在一个单独的主机上,以及都在同一主机;

(3)一个虚拟主机提供phpMyAdmin,另一个虚拟主机提供wordpress;

(4)为phpMyAdmim提供https服务;

2.实验软件


httpd-2.4.6.tar.bz2

mariadb-5.5.46-linux-x86_64.tar.gz

php-5.5.30.tar.gz

phpMyAdmin-4.4.14.1-all-languages.zip

wordpress-4.3.1-zh_CN.zip

xcache-3.2.0.tar.bz2

3.服务器规划


系统版本 主机名 运行服务 IP地址
centos7.2 x86_64 web httpd2.4静态资源

10.0.0.51/24

172.16.52.51/16

centos7.2 x86_64 php php-fpm动态资源 172.16.52.52/16
centos7.2 x86_64 db mysqld 172.16.52.53/16


4.目录规划


目录名称 目录用途
/server/scripts 脚本存放目录
/tools 软件包存放目录
/data/soft 软件安装目录
/data/mydata 数据库数据目录
/data/vhosts web站点目录

5.实验拓扑


6.部署apache服务


6.1 解决httpd2.4 依赖关系

[root@web ~]# yum -y install apr-develapr-util-devel

6.2 编译httpd2.4

[root@web soft]# tar xf httpd-2.4.6.tar.bz2
[root@web soft]# cd httpd-2.4.6/
[root@web httpd-2.4.6]# ./configure--prefix=/data/soft/apache2.4.6 --sysconfdir=/etc/httpd24 --enable-so--enable-ssl --enable-cgi --enable-rewrite --enable-modules=most--enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib--with-apr=/usr --with-apr-util=/usr
[root@web httpd-2.4.6]# make -j 4  #多线程编译
[root@web httpd-2.4.6]# make install[root@web soft]# ln -sv apache2.4.6 apache

 

6.3 创建apache用户

[root@web soft]# useradd -s /sbin/nologin -M apache

6.4 启动apache服务

修改PATH变量:
[root@web apache]# cat  /etc/profile.d/httpd.sh
export PATH=/data/soft/apache/bin:$PATH[root@web httpd24]# apachectl -t
Syntax OK
[root@web httpd24]# apachectl start访问测试:
[root@web httpd24]# curl 172.16.52.51
<html><body><h1>Itworks!</h1></body></html>


6.5 配置虚拟主机

(1) 修改httpd.conf 文件

User apache
Group apache
Include conf/extra/httpd-vhosts.conf 开启


(2) 配置虚拟主机文件http-vhosts.conf

<VirtualHost *:80>DocumentRoot"/data/vhosts/blog"ServerName blog.magedu.comErrorLog"logs/blog/error_log"CustomLog"logs/blog/access_log" common<Directory"/data/vhosts/blog">OptionsNoneAllowOverrideNoneRequireall granted</Directory>
</VirtualHost><VirtualHost *:80>DocumentRoot "/data/vhosts/phpmyadmin"ServerNamepma.magedu.comErrorLog"logs/pma/error_log"CustomLog"logs/pma/access_log" common<Directory"/data/vhosts/phpmyadmin">OptionsNoneAllowOverride NoneRequire allgranted</Directory>
</VirtualHost>

测试:

[root@web apache]# curl blog.magedu.com
blog sit
[root@web apache]# curl pma.magedu.com
phpMyAdmin sit

7.部署mariadb服务


采用mysql 二进制安装方式

7.1创建mysql用户和组

# groupadd -g 306 mysql
# useradd -u 306 -g mysql -s /sbin/nologin -M mysql

7.2 解压mariadb-5.5.46-linux-x86_64.tar.gz


# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C/data/soft/[root@db soft]# ln -sv mariadb-5.5.46-linux-x86_64/mariadb
‘mariadb’ -> ‘mariadb-5.5.46-linux-x86_64/’

7.3 创建mysql数据目录并授权

mkdir /data/mydata -p
chown -R mysql.mysql /data/mydata

7.4 初始化数据库文件

[root@db soft]# chown -R root.mysql/data/soft/mariadb/

[root@db soft]# cd /data/soft/mariadb

[root@db mariadb]# scripts/mysql_install_db--user=mysql --datadir=/data/mydata/ --basedir=/data/soft/mariadb

7.5 配置mariadb主配置文件my.cnf

复制/data/soft/mariadb/support-files目录下的my-large.cnf文件到/etc/ 目录下,覆盖原有的mysql配置文件 my.cnf(注意:覆盖前需自己手动备份):

# cp support-files/my-large.cnf /etc/my.cnf

修改/etc/my.cnf文件,指定datadir、basedir路径,同时开启3306端口

[mysqld]
port = 3306
basedir = /data/soft/mariadb
datadir = /data/mydata
innodb_file_per_table = 1 #让innodb表每个表一个表空间文件。

7.6 复制mysql启动脚本到/etc/init.d/mysqld

# cp /data/soft/mariadb/support-files/mysql.server/etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld

7.7 修改PATH环境变量

[root@db mariadb]# cat /etc/profile.d/mysql.sh
export mysql_home=/data/soft/mariadb
export PATH=$mysql_home/bin:$PATH

 

7.8 启动mysql服务

[root@db mariadb]# chkconfig --add mysqld
[root@db mariadb]# chkconfig mysqld on
[root@db mariadb]# service mysqld start
Starting MySQL... SUCCESS!

8.部署php-fpm服务


8.1 解压mariadb二进制包

编译安装php依赖于MariaDB的文件,但是不需要对MariaDB进行任何配置,只需要解压到指定目录即可。

解压MariaDB到指定位置。

[root@php soft]# tar xfmariadb-5.5.46-linux-x86_64.tar.gz[root@php soft]# ln -sv mariadb-5.5.46-linux-x86_64 mariadb

8.2 解决php依赖关系

配置好epel源

# yum install libxml2-devel gd-devel freetype-devellibmcrypt-devel openssl-devel  bzip2  bzip2-devel

8.3 编译安装php5.5

[root@php soft]# tar xf php-5.5.30.tar.gz
[root@php soft]# cd php-5.5.30
[root@php php-5.5.30]#
./configure --prefix=/data/soft/php-5.5.30--with-mysql=/data/soft/mariadb --with-openssl--with-mysqli=/data/soft/mariadb/bin/mysql_config --enable-mbstring--enable-xml --enable-sockets --with-freetype-dir --with-gd--with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt  --with-config-file-path=/etc/php.ini--with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-fpm
# make
# make install
[root@php soft]# ln -sv php5.5.30 php5


8.4 添加php.ini 和php-fpm文件

(1)为php提供配置文件

复制php-5.5.30的解压包中的php.ini-production文件

[root@php soft]# cp/tools/php-5.5.30/php.ini-production /etc/php.ini

(2)为php-fpm 提供配置文件    

[root@php soft]# cd php5.5/etc/
[root@php etc]# cp php-fpm.conf.defaultphp-fpm.conf


8.5 配置php-fpm文件

[root@php php5.5]# vim etc/php-fpm.conf
pid = run/php-fpm.pid
listen= 172.16.52.52:9000
listen.allowed_clients= 172.16.52.51 #web服务器地址
pm.max_children = 1024
pm.start_servers = 16
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.process_idle_timeout = 15s
pm.max_requests = 2048


8.6 启动php-fpm服务


(1)设置PATH环境变量

[root@php php5.5]# cat /etc/profile.d/php-fpm.sh
export PATH=/data/soft/php5.5/sbin/:$PATH

(2)为php-fpm提供启动脚本

[root@php php5.5]# cp/tools/php-5.5.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@php php5.5]# chmod +x /etc/init.d/php-fpm
[root@php php5.5]# chkconfig --add php-fpm
[root@php php5.5]# chkconfig php-fpm on

(3)启动php-fpm,查看php-fpm进程数

[root@php php5.5]# service php-fpm start
Starting php-fpm done[root@php php5.5]# ps -ef |grep -c php-fpm
18

8.7 设置apache的虚拟主机连接php

(1)配置apache支持fcgi

[root@web ~]# vim /etc/httpd24/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_modulemodules/mod_proxy_fcgi.so

(2)修改虚拟主机配置,让所有php结尾的文件转发到后端的php服务器

如下:

<VirtualHost *:80>DocumentRoot "/data/vhosts/blog"ServerName blog.magedu.comErrorLog"logs/blog/error_log"CustomLog"logs/blog/access_log" common<Directory"/data/vhosts/blog">OptionsNoneAllowOverrideNoneRequireall granted</Directory>ProxyRequests OffProxyPassMatch ^/(.*\.php)$fcgi://172.16.52.52:9000/data/vhosts/blog/$1
</VirtualHost>

重启apache服务:

[root@web extra]# apachectl -k restart

8.8 PHP服务器创建站点目录测试php访问

(1)在172.16.52.52 /data/vhosts/blog/站点下放置test.php test.html测试访问

[root@php ~]# mkdir -p /data/vhosts/{blog,phpmyadmin}
[root@php blog]# cat test.php
<?phpphpinfo();
?>


找不到静态资源。

ok,达到效果。

(2)在apache站点目录下创建一个index.php文件测试

在172.16.52.51/data/vhosts/blog/站点下放置index.php测试:

此时web服务器会将.php请求发往php服务器查找,未找到index.php文件

8.9测试php与数据库的连接

[root@php blog]# cat test.php
<?php$conn= mysql_connect('172.16.52.53','wpuser','123456');if($conn)echo"connection ok";elseecho"Failure";
?>

9.部署wordpress程序


注意:web服务器和php服务器上面都要部署

php服务器:

[root@php tools]# unzip wordpress-4.3.1-zh_CN.zip
[root@php tools]# mv wordpress/* /data/vhosts/blog/
[root@php blog]# cp wp-config-sample.phpwp-config.php

配置一下wp-config.php 文件

设置wordpress上传目录的属主和属组,以便客户端能够上传图片,附件啥的。

[root@web blog]# chown -R root.root/data/vhosts/blog
[root@web blog]# find /data/vhosts/blog/ -type f|xargs chmod 644
[root@web blog]# find /data/vhosts/blog/ -type d|xargs chmod 755
[root@web blog]# chown -R apache.apache/data/vhosts/blog/wp-content

web服务器站点配置同上;

在wordpress插入一张图片看看:

10 部署phpMyAdmin程序


注意:web服务器和php服务器都要部署

[root@web tools]# unzipphpMyAdmin-4.4.14.1-all-languages.zip
[root@web tools]# cpphpMyAdmin-4.4.14.1-all-languages /data/vhosts/phpmyadmin/
[root@web phpmyadmin]# ln -svphpMyAdmin-4.4.14.1-all-languages/ phpMyAdmin

复制phpMyAdmin目录中libraries文件夹下的config.default.php文件到phpMyAdmin目录下

1、查找$cfg['PmaAbsoluteUri'],将其值设置为http://pma.magedu.com/phpMyAdmin/

2、查找$cfg['Servers'][$i]['host'],将其值设置为172.16.52.53

(如果Mysql在本地直接改成localhost)

3、查找$cfg['Servers'][$i]['user'], 将其值设置为root

4、查找$cfg['Servers'][$i]['password'], 将其值设置为123456  #你的数据库的密码

11.部署xcache


[root@php tools]# tar -xvf xcache-3.2.0.tar.bz2
[root@php tools]# cd  xcache-3.2.0
[root@php xcache-3.2.0]#/data/soft/php5.5/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
[root@php xcache-3.2.0]# ./configure--enable-xcache --with-php-config=/data/soft/ph
[root@php xcache-3.2.0]# make && makeinstall
[root@phpxcache-3.2.0]# ls /data/soft/php-5.5.30/lib/php/extensions/no-debug-non
-zts-20121212/
opcache.a opcache.so  xcache.so

整合php和xcache,将XCache配置文件复制到php.d目录下,使php可以读取XCache配置文件

[root@php xcache-3.2.0]# mkdir /etc/php.d
[root@php xcache-3.2.0]# cp xcache.ini /etc/php.d/

编辑/etc/php.d/xcache.ini文件,指定xcache.so的位置

[root@php ~]# sed -n '4p'  /etc/php.d/xcache.ini
extension =/data/soft/php-5.5.30/lib/php/extensions/no-debug-non-zts-20121212/xcache.so

重载php-fpm服务;

ok,xcache功能已经有了。

12.压力测试


PHP没有安装xache之前,访问http://blog.magedu.com测试的数据

[root@web ~]# ab -c 10 -n 100http://blog.magedu.com/wp/index.php

压测三次分别取Time taken for tests,Requests per second,Time per request(client),Time  per request(server)的平均值

压测网站 http://blog.magedu.com/wp/index.php
压测总时长[sec] 16.051 s
吞吐率 [#/sec] 6.243 s
用户平均请求等待时间 [ms] 1604.181 ms
服务器平均请求处理时间[ms] 160.418 ms

php安装xcache之后访问http://blog.magedu.com测试的数据  

 

压测网站 http://blog.magedu.com/wp/index.php
压测总时长[sec] 4.495
吞吐率 [#/sec] 20.303
用户平均请求等待时间 [ms] 495.906
服务器平均请求处理时间[ms] 49.590

转载于:https://blog.51cto.com/zhangbei/1827519

LAMP组合之服务分离部署相关推荐

  1. CentOS 7.3:LAMP 动静分离部署

    前言 之前写过一篇部署LAMP平台的博文:基于centos 7搭建LNMP架构,只是那个是基于同一台服务器部署的,用来做测试网站或者访问量不大的情况下,是可以应付的,那么?如果该web网站访问量特别大 ...

  2. centos 怎么退出init 3_CentOS 7.3:LAMP 动静分离部署

    之前写过一篇部署LAMP平台的博文:基于centos 7搭建LNMP架构,只是那个是基于同一台服务器部署的,用来做测试网站或者访问量不大的情况下,是可以应付的,那么?如果该web网站访问量特别大呢? ...

  3. [转] 大规模服务设计部署经验谈

    大规模服务设计部署经验谈 本文中提出的最佳实践,来自于作者多年大规模服务设计和部署的经验,为设计.开发对运营友好的服务提供了一系列良好的解决方案. ■ 文/James Hamilton 译/赖翥翔 1 ...

  4. docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]

    文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...

  5. Linux中samba共享服务的部署及安全优化详解

    samba共享服务的部署及安全优化 文章目录 samba共享服务的部署及安全优化 1.samba服务简介 2.samba基本信息 3.samba的安装与启用 a)windows下文件系统的共享 b)L ...

  6. 最简单的前后端分离部署(Koa2)

    前后端分离开发应该已经是很多公司的标配了,然而,在前端工程化的体系下,开发环境代码和生产环境代码往往是平级的,不再是整个文件夹往服务器上一扔就了事,这让每次的部署过程相当繁琐. 如下是常见的项目目录: ...

  7. nuxt服务端php,nuxt服务端部署指南

    nuxt是一款基于vue的服务端渲染框架,语法和vue基本保持一致,不过生命周期与vue不同,部署方式也和vue大相径庭,vue项目部署是spa的静态页面,只需build出来静态页面,但是nuxt是需 ...

  8. 001.Amoeba读写分离部署

    一 Amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba forMysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQ ...

  9. dockerfile二进制mysql_Dockerfile源码分离部署LNMP(Centos7)

    Dockerfile常用指令: 1.FROM:构建镜像基于哪个镜像 例如:FROM centos 2.MAINTAINER:镜像维护者姓名或邮箱地址 例如:MAINTAINER Sun qiu min ...

最新文章

  1. shell 使用数组作为函数参数的方法
  2. python去重复行_python 去除Excel中的重复行数据
  3. 以算法重构视频技术前沿,超分辨率算法那些事
  4. jquery on方法原理_jQuery 学习小结
  5. php获取li或者a标签中间的文字
  6. 2602 最短路径问题
  7. MySQL详细学习教程(建议收藏)
  8. 如何直接操作SVN将分支代码合并到主干【转载】
  9. 7月SCI/SSCI期刊变动,警惕这5本被剔除
  10. 如何在微信窗口使用计算机,电脑微信窗口太大怎么办
  11. 网络与社会导论之幂律与富者更富及其与长尾、齐普夫定律等的关系
  12. Launcher3 翻页动画详解与修改
  13. 黑苹果 MAC Monterey 在睡眠后 bluetoothd 占用很高的cpu解决方案
  14. python测试开发实战_自动化平台测试开发:Python测试开发实战
  15. Java 开发工程师的核心竞争力
  16. parameterType 用法
  17. win10找不到打印机_新版Windows 10的外设Bug:重启后找不到USB打印机端口
  18. Game Plug-ins(2)
  19. 深入浅出Python机器学习9——数据预处理、降维、特征提取及聚类
  20. CH340G 无法识别的USB设备

热门文章

  1. C++基础知识(六)函数
  2. 常见的C++应用领域有哪些?
  3. 浅析人工智能自然语言生成定义
  4. React学习笔记2017-12-31
  5. linux 3.10的kdump配置的小坑
  6. Mac 上管理多个 java 版本
  7. 宏、函数、宏和函数的区别
  8. 【后缀数组】bzoj2217 Secretary
  9. OSG 实现跟随节点的相机(转)
  10. 【链表递归构造二叉树】LeetCode 109. Convert Sorted List to Binary Search Tree