通过编译安装方式部署分离式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------>提供mariadb服务

192.168.1.110------>提供PHP xcache服务


软件包:

httpd-2.4.6.tar apr-1.5.0.tar apr-util-1.5.2.tar ###httpd2.4版本需要apr和apr-util包的1.4以上版本支持

mariadb-5.5.46-linux-x86_64.tar (二进制包)

php-5.4.26.tar

xcache-3.1.0.tar

wordpress-4.3.1-zh_CN

phpMyAdmin-4.4.14.1-all-languages

---------------------------------------------------分割线------------------------------------------------------------

编译安装服务:


一、编译安装httpd服务(192.168.1.103)


1、首先确认系统是否已经安装了httpd服务,如果存在我们需要卸载,为了避免与后面有冲突。

2、安装开发包组

[root@pxe132~]#yum-ygroupinstallDesktopPlatformDevelopmentDevelopmentTools

3、编译安装apr和apr-util

centos7中rpm包安装apr和apr-util就是1.4版本支持httpd,此处我就使用编译的方式来进行

###编译安装apr:[root@pxe132~]#tarxfapr-1.5.0.tar.bz2[root@pxe132~]#cdapr-1.5.0/[root@pxe132apr-1.5.0]#./configure--prefix=/usr/local/apr[root@pxe132apr-1.5.0]#make-j4&&makeinstall###编译安装apr-util:[root@pxe132~]#tarxfapr-util-1.5.2.tar.bz2[root@pxe132~]#cdapr-util-1.5.2/[root@pxe132apr-util-1.5.2]#./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr[root@pxe132apr-util-1.5.2]#make-j4&&makeinstall###查看编译安装后的结果:[root@pxe132~]#rpm-qaprapr-1.4.8-3.el7.x86_64[root@pxe132~]#rpm-qapr-utilapr-util-1.5.2-6.el7.x86_64


4、编译安装httpd

[root@pxe132~]#yum-yinstallpcre-developenssl-devellibevent-devel[root@pxe132~]#tarxfhttpd-2.4.6.tar.bz2[root@pxe132~]#cdhttpd-2.4.6/[root@pxe132httpd-2.4.6]#./configure--prefix=/usr/local/apache##安装路径--sysconfdir=/etc/httpd24##配置文件路径--enable-so##支持动态装卸载DSO机制,DSO是动态共享对象,可实现模块动态生效--enable-ssl##支持SSL/TLS可实现https功能,需要安装openssl-devel开发工具--enable-cgi##支持CGI脚本默认对非线程的MPM(多路处理)模块开启--enable-rewrite##支持URL重写--enable-defalte##支持压缩功能--enable-modules=most##支持动态启用的模块{all|most}--enable-mpms-shared=all##支持动态加载的MPM模块{most|all}--with-mpm=prefork##设置默认启用的mpm模式{prefork|worker|event}--with-pcre##使用指定的pcre库,需要安装pcre-devel工具--with-zlib##使用指定的zlib库--with-apr=/usr/local/apr##指定apr安装路径--with-apr-util=/usr/local/apr-util##指定apr-util安装路径此时我们就可以启动服务:[root@pxe132~]#/usr/local/apache/bin/apachectlstart但是这样操作不是太方便,所有我们后面还需要做些操作:


5、添加PATH环境变量

[root@pxe132~]#vim/etc/profile.d/httpd24.shexportPATH=/usr/local/apache/bin:$PATH[root@pxe132~]#source/etc/profile.d/httpd24.sh###重读下文件路径,使其立马生效[root@pxe132~]#echo$PATH/usr/local/apache/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


6、导出头文件:

[root@pxe132~]#ln-sv/usr/local/apache/include//usr/include/httpd24


7、启动服务

[root@pxe132~]#apachectlstart[root@pxe132~]#ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:22*:*LISTEN0128127.0.0.1:631*:*LISTEN0100127.0.0.1:25*:*LISTEN0128127.0.0.1:6012*:*LISTEN0128:::80:::*


9、测试下httpd服务是否正常:

[root@pxe132~]#curl192.168.1.103<html><body><h2>Itworks!</h2></body></html>


二、编译安装mariadb服务(192.168.1.104)


1、为了安全我们我mysql建立专门的用户和组,让其以普通用户的身份运行

[root@bogon~]#groupadd-rmysql[root@bogon~]#useradd-rmysql-gmysql[root@bogon~]#idmysqluid=988(mysql)gid=983(mysql)groups=983(mysql)


2、建立数据可数据存放的目录,此处需要注意权限的问题

[root@bogon~]#mkdir-p/data/mydata[root@bogon~]#chown-Rmysql:mysql/data/mydata/###此文件在后面我们安装包的时候会用到


3、解压mariadb安装包到/usr/local目录下

[root@bogon~]#tarxfmariadb-5.5.46-linux-x86_64.tar.gz-C/usr/local


4、创建一个软链接方便使用

[root@bogon~]#ln-sv/usr/local/mariadb-5.5.46-linux-x86_64/mysql‘mysql’->‘/usr/local/mariadb-5.5.46-linux-x86_64/’


5、此时我们可以进入mysql的目录去看下,发现里面的属组合属主都是root,所有需要改下权限

[root@bogon~]#cd/usr/local/mysql/[root@bogonmysql]#lltotal204drwxr-xr-x.2rootroot4096Jul2114:39bin-rw-r--r--.150050017987Oct102015COPYING-rw-r--r--.150050026545Oct102015COPYING.LESSERdrwxr-xr-x.3rootroot17Jul2114:39data-rw-r--r--.15005008245Oct102015EXCEPTIONS-CLIENTdrwxr-xr-x.3rootroot18Jul2114:39include-rw-r--r--.15005008694Oct102015INSTALL-BINARYdrwxr-xr-x.3rootroot4096Jul2114:39libdrwxr-xr-x.4rootroot28Jul2114:39manlrwxrwxrwx.1rootroot39Jul2114:42mariadb-5.5.46-linux-x86_64->/usr/local/mariadb-5.5.46-linux-x86_64/drwxr-xr-x.11rootroot4096Jul2114:39mysql-test-rw-r--r--.1500500108813Oct102015README[root@bogonmysql]#chown-Rroot.mysql./*###更改文件的权限


6、使用mysql自己提供的scripts脚本文件mysql_install_db文件来安装数据库,其中指明用户和数据可存放目录(就是 我们在上边刚开始的时候进行创建的用户和数据存放路径)

[root@bogonmysql]#scripts/mysql_install_db--user=mysql--datadir=/data/mydata###此处需要注意必须在mysql目录下进行,切换到里面去就不行了


7、为mariadb提供配置文件,在support-files中有模板(my-large.conf)

[root@bogonmysql]#cpsupport-files/my-large.cnf/etc/my.cnf


8、编辑配置文件添加数据库存放的目录信息

datadir=/data/mydata###指明mysql的数据存放路径innodb_file_per_table=ON##成为独立表空间skip_name_resolve=ON##跳过名称解析


9、提供mysql服务启动脚本,这个脚本在我们的support-file有模板(mysql.server)

[root@bogonsupport-files]#cpmysql.server/etc/rc.d/init.d/mysqld[root@bogonsupport-files]#chkconfig--addmysqld###添加到服务启动


10、添加环境变量

[root@bogon~]#vim/etc/profile.d/mysql.shexportPATH=/usr/local/mysql/bin:$PATH[root@bogon~]#source/etc/profile.d/mysql.sh


11、导出头文件

[root@bogonlocal]#lsbinetcgamesincludeliblib64libexecmariadb-5.5.46-linux-x86_64mysqlsbinsharesrc[root@bogonlocal]#[root@bogonlocal]#ln-svinclude//usr/include/mysql‘/usr/include/mysql’->‘include/’


12、导出库文件

[root@bogonlocal]#vim/etc/ld.so.conf.d/mysql.conf添加:/usr/local/mysql/lib


13、启动服务,测试是否正常

[root@bogonlocal]#systemctlstartmysqld[root@bogonlocal]#ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN050*:3306*:*[root@bogonlocal]#mysqlWelcometotheMariaDBmonitor.Commandsendwith;or\g.YourMariaDBconnectionidis2Serverversion:5.5.46-MariaDB-logMariaDBServerCopyright(c)2000,2015,Oracle,MariaDBCorporationAbandothers.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MariaDB[(none)]>


三、编译安装php(192.168.1.110)

1、安装开发包组及依赖关系的包

[root@pxe130~]#yumgroupinstallDevelopmenttoolsServerPlatformDevelopment[root@pxe130~]#yum-yinstallbzip2-devellibmcrypt-devellibxml2-developenssl-devel


2、编译安装php

[root@pxe130~]#tarxfphp-5.4.26.tar.bz2[root@pxe130~]#cdphp-5.4.26/./configure--prefix=/usr/local/php--with-openssl--with-mysql=mysqlnd--with-pdo-mysql=mysqlnd--with-mysql=mysqlnd--enable-mbstring--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--enable-sockets--enable-fpm--with-mcrypt--with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d--with-bz2[root@pxe130php-5.4.26]#make-j4&&makeinstall

注意:支持fpm是需要把--with-apxs给去掉,添加--enable-fpm,此两项是不可以同时使用


3、提供php提供配置文件

[root@pxe130php-5.4.26]#cpphp.ini-production/etc/php.ini


4、提供php-fpm脚本,并添加到服务启动列表

[root@pxe130php-5.4.26]#cpsapi/fpm/init.d.php-fpm/etc/rc.d/init.d/php-fpm[root@pxe130php-5.4.26]#chmod+x/etc/rc.d/init.d/php-fpm[root@pxe130php-5.4.26]#chkconfig--addphp-fpm


5、提供php-fpm配置文件

[root@pxe130php]#cd/usr/local/php[root@pxe130php]#cpetc/php-fpm.conf.defaultetc/php-fpm.conf


6、启动服务

[root@pxe130php]#systemctlstartphp-fpm[root@pxe130php]#ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128127.0.0.1:9000*:*

到此时我们的httpd mariadb php服务都已经全部编译安装好,下面我们需要来部署LAMP环境了!

---------------------------------------------------分割线------------------------------------------------------------

部署LAMP环境配置:


一、配置httpd:(192.168.1.103)

1、启用支持fastFCGI的模块

LoadModuleproxy_modulemodules/mod_proxy.soLoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so


2、启用虚拟主机

Include/etc/httpd24/extra/httpd-vhosts.conf


3、添加两行使支持php

AddTypeapplication/x-httpd-php.phpAddTypeapplication/x-httpd-php-source.phps


4、配置虚拟主机

[root@pxe132~]#vim/etc/httpd24/extra/httpd-vhosts.confDirectoryIndexindex.php<VirtualHost192.168.1.103:80>DocumentRoot"/data/vhost1/www1"ServerNamewp.magedu.comProxyRequestsoffProxyPassMatch^/(.*\.php)$fcgi://192.168.1.110:9000/data/vhost1/www1/$1<Directory"/data/vhost1/www1">OptionsNoneAllowOverrideNoneRequireallgranted</Directory></VirtualHost><VirtualHost192.168.1.103:80>DocumentRoot"/data/vhost2/www2"ServerNamepam.magedu.comProxyRequestsoffProxyPassMatch^/(.*\.php)$fcgi://192.168.1.110:9000/data/vhost2/www2/$1<Directory"/data/vhost2/www2">OptionsNoneAllowOverrideNoneRequireallgranted</Directory></VirtualHost>


5、创建网页路径

[root@pxe132~]#mkdir-p/data/vhost1/www1[root@pxe132~]#mkdir-p/data/vhost2/www2[root@pxe132~]#echo"vhost1">/data/vhost1/www1/index.html[root@pxe132~]#echo"vhost2">/data/vhost2/www2/index.html


6、重启服务测试是否正常

[root@pxe132~]#apachectl-tSyntaxOK[root@pxe132~]#apachectlrestart[root@pxe132~]#curlhttp://wp.magedu.comvhost1[root@pxe132~]#curlhttp://pam.magedu.comvhost2###ok我们httpd服务是没问题


二、配置php-fpm(192.168.1.110)

1、配置php监听地址信息

[root@pxe130~]#vim/usr/local/php/etc/php-fpm.confpid=run/php-fpm.pid#启用listen.allowed_clients=192.168.1.103##监听允许htpd的IP地址listen=192.168.1.110:9000##监听php可以与外部通信的IP地址[root@pxe130~]#systemctlrestartphp-fpm.service[root@pxe130~]#ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128192.168.1.110:9000*:*


2、创建与http网页相同的路径。然后测试php和http之间是否正常

[root@pxe130~]#mkdir-p/data/vhost1/www1[root@pxe130~]#mkdir-p/data/vhost2/www2[root@pxe130~]#vim/data/vhost1/www1/index.php<?phpphpinfo();?>[root@pxe130~]#vim/data/vhost2/www2/index.php<?phpphpinfo();?>


3、测试:


ok说明我们的php和httpd连接时正常的



三、配置mariadb(192.168.1.104)

1、创建表和授权用户权限

MariaDB[(none)]>createdatabasewpdb;###用于WordPress准备QueryOK,1rowaffected(0.00sec)MariaDB[(none)]>grantallonwpdb.*to'wpuser'@'192.168.%.%'identifiedby'wppass';QueryOK,0rowsaffected(0.03sec)MariaDB[(none)]>createdatabasepma;###用于phpmyadmin准备QueryOK,1rowaffected(0.01sec)MariaDB[(none)]>grantallonpma.*to'pmauser'@'192.168.%.%'identifiedby'pmapass';QueryOK,0rowsaffected(0.00sec)


2、在php服务中编写下测试页,测试php和mariadb是否连接正常

[root@pxe130~]#vim/data/vhost1/www1/index.php<?php$conn=mysql_connect('192.168.1.104','wpuser','wppass');if($conn)echo"ok";elseecho"no";phpinfo();?>[root@pxe130~]#vim/data/vhost2/www2/index.php<?php$conn=mysql_connect('192.168.1.104','pmauser','pmapass');if($conn)echo"ok";elseecho"no";phpinfo();?>


3、测试


ok到现在我们的LAMP平台环境是搞好了!!

---------------------------------------------------分割线-----------------------------------------------------------

基于LAMP部署应用WordPress和phpmyadmin

此处以下的操作在php服务器中进行:

一、部署WordPress

1、解压、配置连接密码和用户及数据库地址

[root@pxe130~]#unzipwordpress-4.3.1-zh_CN.zip[root@pxe130~]#mvwordpress/data/vhost1/www1/[root@pxe130~]#cd/data/vhost1/www1/wordpress/[root@pxe130wordpress]#mvwp-config-sample.phpwp-config.php[root@pxe130wordpress]#vimwp-config.php/**WordPress数据库的名称*/define('DB_NAME','wpdb');/**MySQL数据库用户名*/define('DB_USER','wpuser');/**MySQL数据库密码*/define('DB_PASSWORD','wppass');/**MySQL主机*/define('DB_HOST','192.168.1.104');

2、此时我们需要把WordPress这个目录个传到http服务器主页访问的路径下

root@pxe130www1]#scp-rwordpress/root@192.168.1.103:/data/vhost1/www1/


二、部署phpmyadmin

1、解压,配置

[root@pxe130~]#unzipphpMyAdmin-4.4.14.1-all-languages.zip[root@pxe130~]#mvphpMyAdmin-4.4.14.1-all-languages/data/vhost2/www2/[root@pxe130www2]#ln-svphpMyAdmin-4.4.14.1-all-languages/phpmyadmin[root@pxe130www2]#vimphpmyadmin/libraries/config.default.php$cfg['blowfish_secret']='tSQRO02T+grA6rvJHCXr';$cfg['Servers'][$i]['host']='192.168.1.104';###数据库服务地址$cfg['Servers'][$i]['user']='pmauser';$cfg['Servers'][$i]['password']='pmapass';


2、将phpmyadmin传一份给http服务器的相对应路径下

[root@pxe130www2]#scp-rphpmyadmin/root@192.168.1.103:/data/vhost2/www2/


测试:



4、压力测试:

ServerSoftware:Apache/2.4.6ServerHostname:wp.magedu.comServerPort:80DocumentPath:/wordpressDocumentLength:239bytesConcurrencyLevel:1000Timetakenfortests:3.096secondsCompleterequests:10000Failedrequests:0Writeerrors:0Non-2xxresponses:10006Totaltransferred:4672802bytesHTMLtransferred:2391434bytesRequestspersecond:3229.61[#/sec](mean)Timeperrequest:309.635[ms](mean)Timeperrequest:0.310[ms](mean,acrossallconcurrentrequests)Transferrate:1473.76[Kbytes/sec]receivedConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:164319.133030Processing:155186.0211454Waiting:154185.9201454Total:12120426.7243042Percentageoftherequestsservedwithinacertaintime(ms)50%2466%2575%2680%2790%3095%69198%164999%2462100%3042(longestrequest)


编译安装xcache缓存加速

1、解包生成配置

[root@pxe130/]#tarxfxcache-3.2.0.tar.bz2[root@pxe130/]#cdxcache-3.2.0/[root@pxe130xcache-3.2.0]#/usr/local/php/bin/phpizeConfiguringfor:PHPApiVersion:20100412ZendModuleApiNo:20100525ZendExtensionApiNo:220100525[root@pxe130xcache-3.2.0]#./configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config[root@pxe130xcache-3.2.0]#make&&makeinstall


2、配置xcache

[root@pxe130~]#cp/xcache-3.2.0/xcache.ini/etc/php.d/[root@pxe130~]#vim/etc/php.d/xcache.ini添加:[xcache-common]extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so修改下缓存大小:xcache.size=200M


3、重启php-fpm服务,此时index.php页面应该就会有xcache支持了

[root@pxe130~]#systemctlrestartphp-fpm.service

在进行压力测试::

[root@bogon~]#ab-n10000-c1000http://wp.magedu.com/wordpressServerSoftware:Apache/2.4.6ServerHostname:wp.magedu.comServerPort:80DocumentPath:/wordpressDocumentLength:239bytesConcurrencyLevel:1000Timetakenfortests:2.128secondsCompleterequests:10000Failedrequests:0Writeerrors:0Non-2xxresponses:10000Totaltransferred:4670000bytesHTMLtransferred:2390000bytesRequestspersecond:4700.07[#/sec](mean)Timeperrequest:212.763[ms](mean)Timeperrequest:0.213[ms](mean,acrossallconcurrentrequests)Transferrate:2143.49[Kbytes/sec]receivedConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:137116.1231028Processing:146129.4261480Waiting:140129.8201474Total:2483189.7491646Percentageoftherequestsservedwithinacertaintime(ms)50%4966%5275%5380%5590%5995%7898%72699%1458100%1646(longestrequest)