编译安装LAMP实现PHP作为模块、FastCGI分离等方式
源码包:
一、PHP作为模块编译LAMP:
注:
1、由于PHP作为Apache的模块,所以编译PHP的时候,需要在httpd之后。
2、这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
3、PHP连接MySQL数据库需要mysql客户端的开发组件支持,不过:如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
1.编译apr-1.5.1:
[root@localhost~]#yuminstall-ypcre-devel#安装perl正则表达式的依赖包[root@localhost~]#cdlamp/[root@localhostlamp]#tarxfapr-1.5.1.tar.gz[root@localhostlamp]#cdapr-1.5.1[root@localhostapr-1.5.1]#./configure--prefix=/usr/local/apr&&make&&makeinstall
2.编译apr-util-1.5.3:
[root@localhostlamp]#tarxfapr-util-1.5.3.tar.bz2[root@localhostlamp]#cdapr-util-1.5.3[root@localhostapr-util-1.5.3]#./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr/&&make&&makeinstall
3.编译httpd-2.4.9:
[root@localhostlamp]#tarxfhttpd-2.4.9.tar.gz[root@localhostlamp]#cdhttpd-2.4.9[root@localhosthttpd-2.4.9]#./configure--prefix=/usr/local/httpd-2.4.9\#指定安装目录>--sysconfdir=/etc/httpd\#配置文件目录>--enable-modules=most\#编译进大多数常用模块>--enable-mods-shared=most\#将常用模块编译为动态模块,shared>--enable-so\#使Apache支持动态加载模块>--enable-ssl\#支持ssl>--enable-mpms-shared=all\#将所有支持的MPM模块编译为动态模块>--with-apr=/usr/local/apr\#指定apr所在位置>--with-apr-util=/usr/local/apr-util\#指定apr-util位置>--with-mpm=event\#指定默认MPM为event>--enable-proxy\#开启代理模块>--enable-proxy-fcgi\#开启fcgi模块,需要一并开启--enable-proxy选项>--enable-deflate\#支持压缩>make&&makeinstall#安装#############安装完成后,还需要对运行环境做些配置################将目录链接为httpd:[root@localhost~]#ln-sv/usr/local/httpd-2.4.9/usr/local/httpd添加命令搜索路径文件:[root@localhost~]#vim/etc/profile.d/httpd.sh1.添加一行:exportPATH=/usr/local/httpd/bin:$PATH加载环境变量文件:[root@localhost~]#source/etc/profile.d/httpd.sh导出头文件[root@localhost~]#ln-sv/usr/local/httpd/include//usr/include/httpd`/usr/include/httpd'->`/usr/local/httpd/include/'编辑man文档目录:[root@localhost~]#vim/etc/man.config1.添加一行:MANPATH/usr/local/httpd/man
4.测试是否可以成功启动:
测试启动并查看是否监听在80端口:[root@localhost~]#httpd-kstartAH00558:httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,using::1.Setthe'ServerName'directivegloballytosuppressthismessage[root@localhost~]#ss-tnl|grep80LISTEN0128:::80:::*[root@localhost~]#
5.解压mysql:
[root@localhostlamp]#tarxfmysql-5.5.47-linux2.6-x86_64.tar.gz-C/usr/local/#############安装完成后,还需要对运行环境做些配置################创建用户和组:[root@localhostlamp]#groupadd-rmysql[root@localhostlamp]#useradd-r-gmysqlmysql将mysql-5.5.47目录链接为mysql:[root@localhostlamp]#ln-sv/usr/local/mysql-5.5.47-linux2.6-x86_64//usr/local/mysql`/usr/local/mysql'->`/usr/local/mysql-5.5.47-linux2.6-x86_64/'提供命令搜索路径:[root@localhostlamp]#vim/etc/profile.d/mysql.sh1.添加一行:exportPATH=/usr/local/mysql/bin:$PATH加载环境文件:[root@localhostlamp]#source/etc/profile.d/mysql.sh链接头文件:[root@localhostlamp]#ln-sv/usr/local/mysql/include//usr/include/mysql`/usr/include/mysql/include'->`/usr/local/mysql/include/'导出库文件:[root@localhostlamp]#vim/etc/ld.so.conf.d/mysql.conf1.添加一行:/usr/local/mysql/lib重新加载库文件:[root@localhostlamp]#ldconfig
6.配置、初始化并启动MySQL:
为目录添加权限:[root@localhost~]#cd/usr/local/mysql[root@localhostmysql]#chown-Rroot.mysql.创建数据目录:[root@localhostmysql]#mkdir/data[root@localhostmysql]#chown-Rmysql.mysql/data初始化mysql:[root@localhostmysql]#./scripts/mysql_install_db--user=mysql--datadir=/data初始化查看数据目录是否有文件,如果有就证明初始化成功:[root@localhostmysql]#ls/data/mysqlmysql-bin.000001mysql-bin.000002mysql-bin.indexperformance_schematest提供启动脚本:[root@localhostmysql]#cpsupport-files/mysql.server/etc/init.d/mysqld[root@localhostmysql]#chkconfig--addmysqld[root@localhostmysql]#chkconfigmysqldon提供配置文件并配置:[root@localhostmysql]#cpsupport-files/my-large.cnf/etc/my.cnf[root@localhostmysql]#vim/etc/my.cnf1.在[mysqld]范围中添加一行:datadir=/data启动mysql测试:[root@localhostmysql]#servicemysqldstartStartingMySQL...[OK][root@localhostmysql]#[root@localhostmysql]#ss-tnl|grep3306LISTEN050*:3306*:*
7.编译php-5.5.30:
[root@localhostlamp]#yuminstall-yopenssl-develbzip2-devellibmcrypt-devel[root@localhostlamp]#cdphp-5.5.30[root@localhostphp-5.5.30]./configure--prefix=/usr/local/php-5.5.30\#指定安装目录>--with-mysql=/usr/local/mysql\#指定MySQL安装目录>--with-openssl\#使用openssl库,需要安装openssl-devel包>--with-mysqli=/usr/local/mysql/bin/mysql_config\#指定mysql_config>--enable-mbstring\#开启多字符串支持>--with-freetype-dir\>--with-jpeg-dir\#支持jpeg>--with-png-dir\#支持png>--with-zlib\#指定zlib>--with-libxml-dir=/usr\#指定libxml库>--enable-xml\#开启xml>--enable-sockets\#开启套接字方式支持>--with-apxs2=/usr/local/apache/bin/apxs\#apxs是Apache的模块支持库,要想编译为Apache模块,依赖于apxs>--with-mcrypt\#指定加密库,需要libmcrypt-devel包>--with-config-file-path=/etc\#指定配置文件所在目录>--with-config-file-scan-dir=/etc/php.d\#指定附加目录>--with-bz2\#指定bz2压缩库,需要bzip2-devel>--enable-maintainer-zts#支持apache的worker或event这两个MPM#############安装完成后,还需要对运行环境做些配置################连接目录:[root@localhostlamp]#ln-sv/usr/local/php-5.5.30//usr/local/php`/usr/local/php'->`/usr/local/php-5.5.30/导出头文件:[root@localhostlamp]#ln-sv/usr/local/php-5.5.30/include//usr/include/php`/usr/include/php'->`/usr/local/php-5.5.30/include/'添加命令搜索路径文件:[root@localhostlamp]#vim/etc/profile.d/php.sh1.添加一行:exportPATH=/usr/local/php/bin:$PATH读取到环境变量:[root@localhostlamp]#source/etc/profile.d/php.sh导出库文件:[root@localhostlamp]#vim/etc/ld.so.conf.d/php.conf1.添加一行:/usr/local/php/lib重新加载库文件:[root@localhostlamp]#ldconfig
8.在httpd配置文件(/etc/httpd/httpd.conf)中添加如下两行并将DirectoryIndex修改为index.php:
AddTypeapplication/x-httpd-php.phpAddTypeapplication/x-httpd-php-source.phps<IfModuledir_module>DirectoryIndexindex.php</IfModule>
9.重新启动httpd服务并查看是否加载php模块:
[root@localhostmysql]#httpd-krestart[root@localhostmysql]#httpd-M|grepphpphp5_module(shared)[root@localhostmysql]#
10.提供一个index.php文件并测试:
<?php$link=mysql_connect('127.0.0.1','root','');if($link)echo"Success...";elseecho"Failure...";mysql_close();phpinfo();?>
上面这个文件是连接mysql,如果连接成功就输出Success,如果连接失败就输出Failure。并且后面跟着输出一个php测试页面。
可以关闭掉mysql再测试:
[root@localhosthtdocs]#servicemysqldstopShuttingdownMySQL.[OK][root@localhosthtdocs]#
11.编译Xcache
解包:[root@localhostlamp]#tarxfxcache-3.2.0.tar.gz执行phpize(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块):[root@localhostlamp]#cdxcache-3.2.0[root@localhostxcache-3.2.0]#phpizeConfiguringfor:PHPApiVersion:20121113ZendModuleApiNo:20121212ZendExtensionApiNo:220121212编译:[root@localhostxcache-3.2.0]#./configure\>--enable-xcache\#开启cache功能>--with-php-config=/usr/local/php/bin/php-config\#指定php的配置程序,这个程序是告诉编译程序php的信息的>&&make&&makeinstall编译后有一条信息,记录下来稍后会用到:Installingsharedextensions:/usr/local/php-5.5.3/lib/php/extensions/no-debug-zts-20121212/复制xcache.ini到/etc/php.d目录:[root@localhostxcache-3.2.0]#mkdir/etc/php.d[root@localhostxcache-3.2.0]#cpxcache.ini/etc/php.d/修改配置文件:[root@localhostxcache-3.2.0]#vim/etc/php.d/xcache.ini将:extension=xcache.so修改为刚才编译完成后保留的位置:extension=/usr/local/php-5.5.3/lib/php/extensions/no-debug-zts-20121212/xcache.so
12.测试Xcache的作用:
没启动Xcache:
[root@localhostphp.d]#ab-c10-n100http://10.10.10.11/pma/index.phpThisisApacheBench,Version2.3<$Revision:1554214$>Copyright1996AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/LicensedtoTheApacheSoftwareFoundation,http://www.apache.org/Benchmarking10.10.10.11(bepatient).....doneServerSoftware:ApacheServerHostname:10.10.10.11ServerPort:80DocumentPath:/pma/index.phpDocumentLength:9047bytesConcurrencyLevel:10Timetakenfortests:3.876secondsCompleterequests:100Failedrequests:0Totaltransferred:1037900bytesHTMLtransferred:904700bytesRequestspersecond:25.80[#/sec](mean)Timeperrequest:387.550[ms](mean)Timeperrequest:38.755[ms](mean,acrossallconcurrentrequests)Transferrate:261.53[Kbytes/sec]receivedConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:025.4027Processing:29038325.3387438Waiting:27235625.3360409Total:30838524.5388438Percentageoftherequestsservedwithinacertaintime(ms)50%38866%39975%40180%40490%41295%41998%43099%438100%438(longestrequest)
启动Xcache:
[root@localhostphp.d]#ab-c10-n100http://10.10.10.11/pma/index.phpThisisApacheBench,Version2.3<$Revision:1554214$>Copyright1996AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/LicensedtoTheApacheSoftwareFoundation,http://www.apache.org/Benchmarking10.10.10.11(bepatient).....doneServerSoftware:ApacheServerHostname:10.10.10.11ServerPort:80DocumentPath:/pma/index.phpDocumentLength:9047bytesConcurrencyLevel:10Timetakenfortests:0.728secondsCompleterequests:100Failedrequests:0Totaltransferred:1037900bytesHTMLtransferred:904700bytesRequestspersecond:137.39[#/sec](mean)Timeperrequest:72.784[ms](mean)Timeperrequest:7.278[ms](mean,acrossallconcurrentrequests)Transferrate:1392.57[Kbytes/sec]receivedConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:015.0025Processing:297023.467129Waiting:85323.250128Total:297223.969129Percentageoftherequestsservedwithinacertaintime(ms)50%6966%8075%8680%9590%11195%11798%12599%129100%129(longestrequest)
二、PHP的FastCGI方式结合Apache:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。