LAMP组合之服务分离部署
本文旨在实现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组合之服务分离部署相关推荐
- CentOS 7.3:LAMP 动静分离部署
前言 之前写过一篇部署LAMP平台的博文:基于centos 7搭建LNMP架构,只是那个是基于同一台服务器部署的,用来做测试网站或者访问量不大的情况下,是可以应付的,那么?如果该web网站访问量特别大 ...
- centos 怎么退出init 3_CentOS 7.3:LAMP 动静分离部署
之前写过一篇部署LAMP平台的博文:基于centos 7搭建LNMP架构,只是那个是基于同一台服务器部署的,用来做测试网站或者访问量不大的情况下,是可以应付的,那么?如果该web网站访问量特别大呢? ...
- [转] 大规模服务设计部署经验谈
大规模服务设计部署经验谈 本文中提出的最佳实践,来自于作者多年大规模服务设计和部署的经验,为设计.开发对运营友好的服务提供了一系列良好的解决方案. ■ 文/James Hamilton 译/赖翥翔 1 ...
- docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]
文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...
- Linux中samba共享服务的部署及安全优化详解
samba共享服务的部署及安全优化 文章目录 samba共享服务的部署及安全优化 1.samba服务简介 2.samba基本信息 3.samba的安装与启用 a)windows下文件系统的共享 b)L ...
- 最简单的前后端分离部署(Koa2)
前后端分离开发应该已经是很多公司的标配了,然而,在前端工程化的体系下,开发环境代码和生产环境代码往往是平级的,不再是整个文件夹往服务器上一扔就了事,这让每次的部署过程相当繁琐. 如下是常见的项目目录: ...
- nuxt服务端php,nuxt服务端部署指南
nuxt是一款基于vue的服务端渲染框架,语法和vue基本保持一致,不过生命周期与vue不同,部署方式也和vue大相径庭,vue项目部署是spa的静态页面,只需build出来静态页面,但是nuxt是需 ...
- 001.Amoeba读写分离部署
一 Amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba forMysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQ ...
- dockerfile二进制mysql_Dockerfile源码分离部署LNMP(Centos7)
Dockerfile常用指令: 1.FROM:构建镜像基于哪个镜像 例如:FROM centos 2.MAINTAINER:镜像维护者姓名或邮箱地址 例如:MAINTAINER Sun qiu min ...
最新文章
- shell 使用数组作为函数参数的方法
- python去重复行_python 去除Excel中的重复行数据
- 以算法重构视频技术前沿,超分辨率算法那些事
- jquery on方法原理_jQuery 学习小结
- php获取li或者a标签中间的文字
- 2602 最短路径问题
- MySQL详细学习教程(建议收藏)
- 如何直接操作SVN将分支代码合并到主干【转载】
- 7月SCI/SSCI期刊变动,警惕这5本被剔除
- 如何在微信窗口使用计算机,电脑微信窗口太大怎么办
- 网络与社会导论之幂律与富者更富及其与长尾、齐普夫定律等的关系
- Launcher3 翻页动画详解与修改
- 黑苹果 MAC Monterey 在睡眠后 bluetoothd 占用很高的cpu解决方案
- python测试开发实战_自动化平台测试开发:Python测试开发实战
- Java 开发工程师的核心竞争力
- parameterType 用法
- win10找不到打印机_新版Windows 10的外设Bug:重启后找不到USB打印机端口
- Game Plug-ins(2)
- 深入浅出Python机器学习9——数据预处理、降维、特征提取及聚类
- CH340G 无法识别的USB设备