Loading... <p>首先解释一下LAMP,L:Linux;A:apache;M:MariaDB;P:php。Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件。</p> <p>本文就是介绍编译安装apache2.4,MariaDB5.5,以及php(基于模块化和fpm的这两种方式来配合php提供服务)。</p> <p>因为php是要在apache和MariaDB的基础上才能安装、配置使用,所有安装顺序是apache2.4,MariaDB5.5,php。</p> <p>这里我们还需要准备好此3大软件的源代码包:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-31.png" title="1459928135933124.png" alt="blob.png" /></p> <p> 1.安装apache,</p> <p>安装apache,首先需要准备好开发环境。即我们需要使用yum源来安装Development tools和Server Platform Development这两个包组。输入yum grouplist "Development tools" "Server Platform Development"即可。</p> <p>因为在编译安装时候,还需要依赖pcre-devel这个包,所以也需要安装。输入命令:yum install -y pcre-devel。</p> <p>另外由于测试环境的CentOS的apr以及apr-util的版本不足够新,这里还需要额安装新的apr和apr-util。这里我事先准备好了源代码包。</p> <p>解压apr-1.5包</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-42.png" title="1459928650722478.png" alt="blob.png" /></p> <p>cd到解压的apr-1.5包的目录里面并执行:./configure –prefix=/usr/local/apr.因为系统上已经安装过了apr,所以这里需要另外指明一个路径以区分开。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-94.png" title="1459928776148026.png" alt="blob.png" /></p> <p>然后执行:make -j 2 && make install (开2个线程同时编译)。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-37.png" title="1459928923395248.png" alt="blob.png" /></p> <p>解压apr-util-1.5的包</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-98.png" title="1459928951335020.png" alt="blob.png" /></p> <p>cd到解压的apr-1.5包的目录里面并执行:./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr。这里是要特别注意参数–with-apr=/usr/local/apr就是要使用刚才安装的apr-1.5来配合安装apr-1.5的。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-49.png" title="1459929105827150.png" alt="blob.png" /></p> <p>然后执行:make -j 2 && make install</p> <p><img src="http://www.178linux.com/upload/http://cto.wang/usr/uploads/2016/07/20160703163851-37.png" title="1459928923395248.png" alt="blob.png" /></p> <p>上述解决完依赖关系之后就可以正式开始安装apache了。</p> <p>解压httpd的源代码包:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-57.png" title="1459929258476709.png" alt="blob.png" /></p> <p>cd到解压的httpd-2.4包的目录里面并执行:./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd24 –enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –enable-modules=most –enable-mpms-shared=all –with-mpm=event。这里需要指明是安装路径是/usr/local/apache;安装后的配置文件是放在/etc/httpd24;安装时启用ssl和cgi;安装时是利用的apr和apr-util的路径;指明启用大多数模块(–enable-modules=most);指明启用mpm_event这个模块。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-64.png" title="1459929643269090.png" alt="blob.png" /></p> <p>然后执行:make -j 4 && make install</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-10.png" title="1459929704693540.png" alt="blob.png" /></p> <p>安装完成后,需要为此软件配置服务脚本。我事先从别的系统复杂了一份httpd的脚本,命名为httpd24(赋予执行权限),并复制到了/etc/rc.d/init.d/这个目录里面。主要修改此服务文件的三个地方:httpdctl的执行文件位置;httpd的执行文件位置;pid文件的位置。如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-7.png" title="1459930226361869.png" alt="blob.png" /></p> <p>把httpd的服务脚本添加到系统里面并查看运行级别:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-21.png" title="1459930725721235.png" alt="blob.png" /></p> <p>启动httpd服务:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-55.png" title="1459930304459526.png" alt="blob.png" /></p> <p>使用ss命令查看80端口是否已经被监听,这里看到已经被监听。所以httpd已经是正常启动:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-57-1.png" title="1459930349414732.png" alt="blob.png" width="933" height="310" style="width: 933px;height: 310px" />然后由于是编译安装,所以这里需要为httpd来编辑脚本,把执行文件路径输入到PATH环境变量里面。新建并编辑/etc/profile.d/httpd.sh。并重读此脚本文件。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-31-1.png" title="1459930552858144.png" alt="blob.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-52.png" title="1459930590419089.png" alt="blob.png" /></p> <p>此时httpd已经是编译完成了。</p> <p></p> <p>2.安装MariaDB:</p> <p>安装MariaDB之前,首先要建立系统用户mysql(其基本组也是mysql)。此用户是用于编译安装时指明用户。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-28.png" title="1459930898603052.png" alt="blob.png" /></p> <p>准备好数据库的数据存放目录。这里我另外新建一个/mydata/data的目录用于专门存放数据库数据,并将/mydata/data的属主和属组改为mysql。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-46.png" title="1459931068152188.png" alt="blob.png" /></p> <p>之后开始解压MariaDB的源代码包,由于安装需要,解压的包必须放在/usr/local/mysql这个文件夹里面:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-57-2.png" title="1459931189366320.png" alt="blob.png" /></p> <p>cd到/usr/local/的,为目录下的MariaDB包创建软连接:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-1.png" title="1459931337193982.png" alt="blob.png" /></p> <p>此时再cd到mysql这个目录里面,我们就可以看到有一系列文件:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163851-59.png" title="1459931406701302.png" alt="blob.png" /></p> <p>这里注意的是,我们还需要修改这个目录下的文件的属性,修改属主为root,属组为mysql:</p> <p><img src="/upload/ucbycahmn1z.png" title="1459931709714726.png" alt="blob.png" /></p> <p>然后我们使用scripts里面的mysql_install_db来安装MariaDB,安装时要指明运行的用户为mysql,数据库的数据存放位置为/mydata/data:</p> <p><img src="/upload/e3kgo1erlct.png" title="1459931744627442.png" alt="blob.png" /></p> <p>然后等待之后就看到安装完成的提示:</p> <p><img src="/upload/eobaxpowm5f.png" title="1459931787816758.png" alt="blob.png" /></p> <p>然后我们还需要为MariaDB提供配置文件。在/usr/local/mysql/这个目录里面就有配置文件的样板(以cnf结尾的文件)</p> <p><img src="/upload/b5f2qavnkt3.png" title="1459932073236028.png" alt="blob.png" /></p> <p>复制其中的my-large.cnf到/etc/目录里面:</p> <p><img src="/upload/uuwwg4ic3df.png" title="1459932200239320.png" alt="blob.png" /></p> <p>编辑此配置文件,在里面添加数据库数据存放位置等内容:</p> <p><img src="/upload/1vjhffuut4z.png" title="1459932316122127.png" alt="blob.png" /></p> <p>还要准备mysql的服务脚本。在/usr/local/mysql/support-files/这个文件夹里面的mysql.server这个就是服务脚本的模板。将/usr/local/mysql/support-files/mysql.server复制到/etc/rc.d/init.d/里面,并且改名为mysqld并且赋予执行权限。</p> <p><img src="/upload/dovph43tlsf.png" title="1459932546285115.png" alt="blob.png" /></p> <p>同样地,也把服务脚本添加到系统管理里面:</p> <p><img src="/upload/4dtkfqlh24p.png" title="1459932599261052.png" alt="blob.png" /></p> <p>把mysql的执行文件路径输出到环境变量PATH里面:</p> <p><img src="/upload/hz4t3a5ggls.png" title="1459932739456990.png" alt="blob.png" /></p> <p>启动mysql的服务:</p> <p><img src="/upload/0w3zbjubkeo.png" title="1459932915108684.png" alt="blob.png" /></p> <p>查看3306的端口是否被监听,这里看到已经被监听了。说明mysql已经正常启动:<img src="/upload/kqjmflpgc3x.png" title="1459932954135661.png" alt="blob.png" width="993" height="333" style="width: 993px;height: 333px" /></p> <p></p> <p>3安装php,</p> <p>在安装完htppd和MariaDB之后,就可以安装php。这里会分别使用两种工作模式:模块化和fpm</p> <p>首先要解决依赖关系,安装bzip2-devel 、libmcrypt-devel、 libxml2-devel着三个包:</p> <p><img src="/upload/rtbqxcnllui.png" title="1459933338269116.png" alt="blob.png" /></p> <p>解压php的源代码包:</p> <p><img src="/upload/qrcuawl21u2.png" title="1459933386991053.png" alt="blob.png" /></p> <p>cd到解压完成的包之后,执行安装命令:./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –enable-sockets –with-apxs2=/usr/local/apache/bin/apxs –with-mcrypt –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-bz2 –enable-maintainer-zts</p> <p>这里说明一下,–prefix=/usr/local/php是指明安装路径;指明配置文件路径–with-config-file-path=/etc;这个–enable-maintainer-zts意思就是支持httpd的mpm_even和mpm_work工作模块。</p> <p><img src="/upload/nkbbhjoiqrw.png" title="1459933654761053.png" alt="blob.png" width="1024" height="62" style="width: 1024px;height: 62px" /></p> <p>然后make -j 4 && make install:</p> <p><img src="/upload/wvkmmizutip.png" title="1459933804396687.png" alt="blob.png" /></p> <p>安装完成之后,还需要为php提供配置文件,在刚才的php解压源代码包的目录,就有php.ini-production这个配置文件样板,复制并改名字到/etc/目录里面:</p> <p><img src="/upload/spicj35mquk.png" title="1459934273804096.png" alt="blob.png" /></p> <p>修改/etc/httpd24/httpd.conf这个文件,可以查看到LoadModule里面已经是加载了php5_module这个模块:</p> <p><img src="/upload/2a14eti0rwh.png" title="1459934595550167.png" alt="blob.png" /></p> <p><img src="/upload/bdjtn1zqvhn.png" title="1459934672545692.png" alt="blob.png" /></p> <p>我们还需要修改httpd的配置文件,让httpd能够识别php格式的文件,添加如下两行:</p> <p>AddType application/x-httpd-php .php</p> <p>AddType application/x-httpd-php-source .phps</p> <p>如图:</p> <p><img src="/upload/e3fujrjuajx.png" title="1459934842162334.png" alt="blob.png" /></p> <p>定位至DirectoryIndex index.html ,将原来的DirectoryIndex index.html修改为DirectoryIndex index.php index.html:</p> <p><img src="/upload/nj1wcvc53tn.png" title="1459934984686830.png" alt="blob.png" /></p> <p>保存退出并重启httpd服务:</p> <p><img src="/upload/hoo41jtjijr.png" title="1459935040271378.png" alt="blob.png" /></p> <p>这里测试一下,编辑httpd的主页文件,这里的主页文件是在/usr/local/apache/htdocs/里面的index.html文件。备份后,修改名字为index.php.编辑index.php文件,如下:</p> <p><img src="/upload/1eiya04lxol.png" title="1459935409261411.png" alt="blob.png" /></p> <p>利用别的电脑访问次虚拟机的ip地址(192.168.1.30),能够正常访问:</p> <p><img src="/upload/3yi5ymdmzhs.png" title="1459935447703161.png" alt="blob.png" width="532" height="376" style="width: 532px;height: 376px" /></p> <p>然后我们简单配置一下httpd提供动态资源。这里我们使用phpMyAdmin来测试一下。</p> <p>解压phpMyAdmin</p> <p><img src="/upload/ij4r1rhnup2.png" title="1459935716670088.png" alt="blob.png" /></p> <p>讲解压的文件移动至httpd的主页目录下,执行如下操作:</p> <p><img src="/upload/fhslumq20k5.png" title="1459935958796869.png" alt="blob.png" /></p> <p><img src="/upload/srdewfaps0e.png" title="1459936012697919.png" alt="blob.png" /></p> <p>然后我们编辑config.inc.php这个文件,在cfg这行里面添加随机码:</p> <p><img src="/upload/aa3rnwsvjg5.png" title="1459936117526401.png" alt="blob.png" /></p> <p>然后我们就用其他机访问http://192.168.1.30/pma/:</p> <p><img src="/upload/hpimqt2qexa.png" title="1459936633735729.png" alt="blob.png" width="820" height="396" style="width: 820px;height: 396px" /></p> <p>然后我们使用工具测试一下此httpd的服务器速度,使用命令ab -c 10 -n 200 http://192.168.1.30/pma/index.php:。</p> <p><img src="/upload/z23ctmfpizt.png" title="1459936728573403.png" alt="blob.png" /></p> <p>这里我们可以看到Requests per second: 15.65 [#/sec] (mean)。即一秒钟是处理15.65个请求。</p> <p>我们下面在示范一下添加xcache来为此httpd服务器加速:</p> <p>首先下载好xcache的源代码包,并解压:</p> <p><img src="/upload/cpcljpwogwt.png" title="1459936917361269.png" alt="blob.png" /></p> <p>然后执行cd到xcache的解压目录里面,执行/usr/local/php/bin/phpize来让xcahche能编译安装:</p> <p><img src="/upload/hhe5bbxuxkr.png" title="1459937099795476.png" alt="blob.png" /></p> <p>然后执行./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config:</p> <p><img src="/upload/fxdewlexetx.png" title="1459937242622549.png" alt="blob.png" /></p> <p>然后执行make -j 2 && make install:</p> <p><img src="/upload/4tmvbzggcfb.png" title="1459937259110391.png" alt="blob.png" /></p> <p>安装完成之后,如图:</p> <p><img src="/upload/k5dvwougylx.png" title="1459937216416553.png" alt="blob.png" /></p> <p>我们还需要讲xcache的配置文件放在php配置文件目录下,这里源代码包是提供了xcache的配置文件的样板,所以我们执行cp xcache.ini /etc/php.d/</p> <p><img src="/upload/sbhlibb3rtr.png" title="1459943647369524.png" alt="blob.png" /></p> <p>然后编辑此配置文件(/etc/php.d/xcache.ini),修改zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so,这里就是加上刚才xcache安装后的模块配置的路径。</p> <p><img src="/upload/w3fqmkk3p1f.png" title="1459943811548810.png" alt="blob.png" /></p> <p>重启httpd服务。测试一下xcache的加速效果:</p> <p><img src="/upload/dpfzhturssz.png" title="1459945799675230.png" alt="blob.png" /></p> <p>这里可以看出加速后的效果为:Requests per second: 67.47 [#/sec] (mean)。提速大概为原来3倍。</p> <p></p> <p>然后再试下fpm的方式安装php,即以php为独立的服务来运行:</p> <p>首先,重新解压php的源代码包:</p> <p><img src="/upload/taufecniuwz.png" title="1459946190658585.png" alt="blob.png" /></p> <p>cd到该源代码包的目录里面,执行./configure –prefix=/usr/local/php5 –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –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/php5/ –with-config-file-scan-dir=/etc/php5.d –with-bz2</p> <p>这里说明一下,由于此虚拟机之前已经安装了php,所以这里我另外再指定一个额外的安装目录/usr/local/php5;而配置文件是放在–with-config-file-path=/etc/php5/;–enable-fpm,启用fpm的安装方式;–with-config-file-scan-dir=/etc/php5.d ,指明在/etc/php5.d/目录下的以ini结尾的文件。</p> <p><img src="/upload/3ekozae2jvu.png" title="1459946618149740.png" alt="blob.png" width="1124" height="47" style="width: 1124px;height: 47px" /></p> <p>然后再执行如下:</p> <p><img src="/upload/voz5i2ajvbh.png" title="1459946763966575.png" alt="blob.png" /></p> <p>安装完成之后,需要为php准备配置文件:</p> <p><img src="/upload/hlfwfphin2y.png" title="1459947350657672.png" alt="blob.png" /></p> <p>在php的解压包目录里面,复制php.ini-production到/etc/php5/这个目录下,并且改名字为php.ini:</p> <p><img src="/upload/2mbecfxzjjd.png" title="1459947507790896.png" alt="blob.png" /></p> <p>复制到php解压包目录下的sapi/fpm/init.d.php-fpm到/etc/rc.d/init.d/php-fpm,作为服务脚本。然后添加php-fpm到系统里面:</p> <p><img src="/upload/dwsldapjbz1.png" title="1459947717650629.png" alt="blob.png" /></p> <p><img src="/upload/gmejyo1caon.png" title="1459947894466832.png" alt="blob.png" /></p> <p>为为php-fpm提供配置文件:</p> <p><img src="/upload/xubpddohd2r.png" title="1459948454778679.png" alt="blob.png" /></p> <p>编辑php-fpm的配置文件,修改监听的端口号以及php-fpm的一切启动的参数(这些参数可以根据实际情况进行修改),如:</p> <p>pm.max_children = 50</p> <p>pm.start_servers = 5</p> <p>pm.min_spare_servers = 2</p> <p>pm.max_spare_servers = 8</p> <p>pid = /usr/local/php5/var/run/php-fpm.pid </p> <p><img src="/upload/03llbhdxttp.png" title="1459948598736429.png" alt="blob.png" /></p> <p><img src="/upload/zwcrm0bozcm.png" title="1459948689591508.png" alt="blob.png" /></p> <p><img src="/upload/baj2x1hsg3t.png" title="1459948905434499.png" alt="blob.png" /></p> <p>启动php-fpm服务:</p> <p><img src="/upload/vw04sipjcrz.png" title="1459948971924681.png" alt="blob.png" /></p> <p>还需要修改httpd的配置文件,</p> <p>在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载</p> <p>LoadModule proxy_module modules/mod_proxy.so</p> <p>LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so</p> <p><img src="/upload/kywclyg3fxq.png" title="1459947034107546.png" alt="blob.png" /></p> <p><img src="/upload/z3lkzqwiuxa.png" title="1459949163439488.png" alt="blob.png" /></p> <p>在相应的虚拟主机中添加类似如下两行。</p> <p> ProxyRequests Off</p> <p> ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1</p> <p>因为我使用默认的根文件目录,所以如下:</p> <p><img src="/upload/rkoei2xuflo.png" title="1459949500716797.png" alt="blob.png" /></p> <p>让apache能识别php格式的页面,并支持php格式的主页:</p> <p><img src="/upload/jke2zjdl1w3.png" title="1459949407170377.png" alt="blob.png" /></p> <p><img src="/upload/caqupvqpbki.png" title="1459949481256820.png" alt="blob.png" /></p> <p>然后重启httpd服务。然后测试一下,用其他主机访问web网页:</p> <p><img src="/upload/nkwlphku1d4.png" title="1459950772917474.png" alt="blob.png" width="753" height="685" style="width: 753px;height: 685px" /></p> <p>然后在使用命令做压力测试,结果如下:</p> <p><img src="/upload/e33l3e5jw35.png" title="1459950957142645.png" alt="blob.png" /></p> <p>其中Requests per second: 29.27 [#/sec]。</p> <p>我再安装xcache来进行加速。</p> <p>首先解压xcahe源代码包,并cd进去:</p> <p><img src="/upload/xxfpr3tavbf.png" title="1459951145896330.png" alt="blob.png" /></p> <p>执行/usr/local/php5/bin/phpize来为xcache生成配置文件:</p> <p><img src="/upload/q5tctjx3uqw.png" title="1459951210450468.png" alt="blob.png" /></p> <p>执行./configure命令。这里要注意的是引用的php-config是编译安装的php5的目录下(fpm模式下的)的。</p> <p><img src="/upload/gufcjttvu0u.png" title="1459951375470089.png" alt="blob.png" /></p> <p>接着执行如下操作:</p> <p><img src="/upload/30d0u2ykpyo.png" title="1459951639798521.png" alt="blob.png" /></p> <p><img src="/upload/zebez5jt5zw.png" title="1459951671355888.png" alt="blob.png" /></p> <p>然后再配置xacache.ini文件到/etc/php5.d/xcache.ini。编辑此文件的extension位置的xcache模块的位置入下图:</p> <p><img src="/upload/g2icxhec10v.png" title="1459951734319699.png" alt="blob.png" /></p> <p><img src="/upload/4psc2thi4c4.png" title="1459951825677779.png" alt="blob.png" /></p> <p>最后压力测试一下,看xcache的加速效果:</p> <p><img src="/upload/ptctv5jwr24.png" title="1459951989299293.png" alt="blob.png" /></p> <p>可以看到Requests per second: 91.22 [#/sec] 。所以加速效果大概为原来的三倍。</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信