您的位置:首页 > 其它

LAMP组合之服务分离部署

2016-07-18 21:12 274 查看
本文旨在实现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_64webhttpd2.4静态资源10.0.0.51/24
172.16.52.51/16
centos7.2 x86_64phpphp-fpm动态资源172.16.52.52/16
centos7.2 x86_64dbmysqld172.16.52.53/16
4.目录规划

目录名称目录用途
/server/scripts脚本存放目录
/tools软件包存放目录
/data/soft软件安装目录
/data/mydata数据库数据目录
/data/vhostsweb站点目录
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.com
ErrorLog"logs/blog/error_log"
CustomLog"logs/blog/access_log" common
<Directory"/data/vhosts/blog">
OptionsNone
AllowOverrideNone
Requireall granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/data/vhosts/phpmyadmin"
ServerNamepma.magedu.com
ErrorLog"logs/pma/error_log"
CustomLog"logs/pma/access_log" common
<Directory"/data/vhosts/phpmyadmin">
OptionsNone
AllowOverride None
Require 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.com
ErrorLog"logs/blog/error_log"
CustomLog"logs/blog/access_log" common
<Directory"/data/vhosts/blog">
OptionsNone
AllowOverrideNone
Requireall granted
</Directory>
ProxyRequests Off
ProxyPassMatch ^/(.*\.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
<?php
phpinfo();
?>






找不到静态资源。
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";
else
echo"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
本文出自 “Hello,Linux” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: