首页 > 代码库 > LAMP环境的搭建(fastcgi)+ xcache加速

LAMP环境的搭建(fastcgi)+ xcache加速

LAMP环境的搭建(fastcgi

LAMP简介:

LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指PerlPython) 的第一个字母,一般用来建立web 服务器。

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.

                                           

为什么要使用源码安装:

 

                  理由

                 1.更新的版本  httpd   mysql  php

                 2.提高性能

                      3.自定义参数                          

apache   php的结合方式:

                     1.模块      libphp5.so                                             2.cgi      通用网关接口

                     3.fastcgi   快速cgi

 

下面我们使用fastcgi的方式实现apachephp的结合:

8FEF411727624C86A0AC5BE72E412224

Linux环境          centos 6.4  版本号2.6.32-431.el6.i686  

32位操作系统

软件包       httpd-2.4.9.tar.bz2

            php-5.5.8.tar.bz2

mysql-5.6.15.tar.gz

apr-1.4.6.tar.gz

apr-util-1.5.1.tar.gz

 

 

预编译环境      Development tools

                  Server Platform Development

                  Additional Development

                  cmake

MySQL的安装:

 

mysql5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档(※ 非常重要)

http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

我的mysql目录配置如下:

安装路径:/usr/local/mysql

数据库路径:/usr/local/mysql/data

源码包存放位置:/usr/local/src

[root@vbird ~]# yum --disablerepo=\* --enablerepo=c6-media groupinstall "Development tools"  "Server Platform Development" –y

[root@vbird ~]# yum --disablerepo=\* --enablerepo=c6-media  remove  mysql-libs  -y                    (※ 卸载掉预安装的mysqllib库文件)

[root@vbird ~]# yum --disablerepo=\* --enablerepo=c6-media  install cmake -y

[root@vbird ~]# tar -zxvf mysql-5.6.15.tar.gz  -C  /usr/local/src/

[root@vbird ~]# cd /usr/local/src/mysql-5.6.15/

[root@vbirdmysql-5.6.15]#cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1  \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DMYSQL_TCP_PORT=3306  \

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \

-DENABLED_LOCAL_INFILE=1  \

-DWITH_PARTITION_STORAGE_ENGINE=1  \

-DEXTRA_CHARSETS=all  \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

[root@vbird mysql-5.6.15]# make && make install

 

来到MySQL的安装路径/usr/local/mysql下根据INSTALL-BINARY文件来完成MySQL的安装

 

[root@vbird ~]# cd /usr/local/mysql/

[root@vbird mysql]# vim INSTALL-BINARY

 

 

97EF9510B19F4DE98C5C9F99288592C7

[root@vbird mysql]# groupadd mysql

[root@vbird mysql]# useradd -r -g mysql mysql

[root@vbird local]# cd mysql/

[root@vbird mysql]# chown -R mysql:mysql .

[root@vbird mysql]# ./scripts/mysql_install_db  --user=mysql

[root@vbird mysql]# chown -R root .

[root@vbird mysql]# chown -R mysql data

MySQL的后续处理

拷贝MySQL的配置文件到/etc目录下

[root@vbird mysql]# cp my.cnf  /etc

拷贝MySQL的控制脚本文件到/etc/init.d/目录下

[root@vbird mysql]# cd support-files/

[root@vbird support-files]# cp -p mysql.server  /etc/init.d/mysqld                           

编辑环境预配置文件添加MySQL的搜索路径

[root@vbird ~]# vim /etc/profile

PATH=$PATH:/usr/local/mysql/bin

[root@vbird ~]# . /etc/profile

   MySQL设置管理口令

[root@vbird ~]# mysqladmin -u root -p password ‘123‘

   设置开机自动启动

[root@vbird ~]# chkconfig --add mysqld

[root@vbird ~]# chkconfig mysqld on 

   库文件的处理

[root@vbird ~]# vim /etc/ld.so.conf.d/mysql.conf

[root@vbird ~]# ldconfig                           #刷新缓存

[root@vbird ~]# ldconfig -pv |grep mysql           #查看是否加载

   头文件的处理

[root@vbird ~]# cd /usr/include/

[root@vbird include]# ln -s /usr/local/mysql/include/    mysql

 

MySQL手册的处理

[root@vbird ~]# vim /etc/man.config

MANPATH /usr/local/mysql/man

 

apache的安装:

 

  为了方便apache的运行,需要搭建apache的可移植性运行环境,就需要额外使用两个包apr  apr-util

解压缩包到/usr/local/src

[root@vbird ~]# tar -zxvf  apr-1.4.6.tar.gz  -C /usr/local/src/

[root@vbird ~]# tar -zxvf  apr-util-1.5.1.tar.gz  -C /usr/local/src/

[root@vbird ~]# tar -jxvf  httpd-2.4.9.tar.bz2  -C /usr/local/src/

安装apr

[root@vbird ~]# cd /usr/local/src/apr-1.4.6/

[root@vbird apr-1.4.6]# ./configure  --prefix=/usr/local/apr

[root@vbird apr-1.4.6]# make && make install

安装apr-utils

[root@vbird ~]# cd /usr/local/src/apr-util-1.5.1/

[root@vbird apr-util-1.5.1]# ./configure --prefix=/usr/local/apr-utils  --with-apr=/usr/local/apr/bin/apr-1-config

[root@vbird apr-util-1.5.1]# make && make install

安装httpd

[root@vbird ~]# cd /usr/local/src/httpd-2.4.9/

[root@vbird httpd-2.4.9]# yum --disablerepo=\* --enablerepo=c6-media install pcre-devel -y

 [root@vbird httpd-2.4.9]# ./configure  \

--prefix=/usr/local/apache \

--sysconfdir=/etc/httpd \

--enable-so \

--enable-ssl  \

--enable-rewrite  \

--with-apr=/usr/local/apr/bin/apr-1-config \

--with-apr-util=/usr/local/apr-utils/bin/apu-1-config \

--with-pcre  \

--with-z  \

--enable-mpms-shared=all \

--enable-proxy       \

--enable-proxy-fcgi

[root@vbird httpd-2.4.9]# make && make install

httpd的后续处理

编辑环境预配置文件添加httpd的搜索路径

[root@vbird ~]# vim /etc/profile

PATH=$PATH:/usr/local/apache/bin

[root@vbird ~]# . /etc/profile

头文件的处理

[root@vbird ~]# cd /usr/include/

[root@vbird include]# ln -s /usr/local/apache/include/   apache

httpd手册的处理

[root@vbird ~]# vim /etc/man.config

MANPATH /usr/local/apache/man

编辑httpd的控制脚本

[root@vbird init.d]# vim /etc/init.d/httpd

#!/bin/bash

prog=/usr/local/apache/bin/httpd

lockfile=/var/lock/subsys/httpd

# description: the httpd server

# chkconfig:   2345 88 44

start() {

 if [ -e $lockfile ];then

    echo "the httpd server is started"

 else

    echo -n "the httpd server is starting"

    sleep 1

    $prog -k start && echo –e "\t ok" && touch $lockfile || echo "failed"

fi

}

stop() {

 if [ ! -e $lockfile ];then

    echo "the httpd server is stopped"

 else

    echo -n "the httpd server is stopping"

    sleep 1

    $prog -k stop && echo –e "\t ok" && rm -rf $lockfile || echo "failed"

 fi

}

case "$1"  in

start)

  start

;;

stop)

  stop

;;

restart)

  stop

  start

;;

*)

  echo "USAGE:start|stop|restart"

;;

esac

 

[root@vbird init.d]# chkconfig --add httpd

 

PHP的安装:

先安装php所需的devel

[root@vbird php-5.5.8]# yum --disablerepo=\* --enablerepo=c6-media install libxml2-devel libjpeg-turbo-devel libpng-devel  freetype-devel  -y

解压缩包到/usr/local/src

[root@vbird ~]# tar -jxvf php-5.5.8.tar.bz2  -C /usr/local/src/

[root@vbird ~]# cd /usr/local/src/php-5.5.8/

[root@vbird php-5.5.8]# ./configure    \

--prefix=/usr/local/php \

--enable-fpm   \

--enable-sockets  \

--with-mysql=/usr/local/mysql \

--with-pdo-mysql=/usr/local/mysql \

--with-mysqli=/usr/local/mysql/bin/mysql_config  \

--enable-mbstring  \

--enable-xml  \

--with-png-dir \

--with-gd   \

--with-jpeg-dir  \

--with-zlib  \

--with-freetype-dir \

--with-config-file-path=/etc/php \

--with-config-file-scan-dir=/etc/php5.d

 

 

[root@vbird php-5.5.8]# make && make install

php的后续处理

创建php的配置文件目录php和额外扩展配置文件目录php5.d

[root@vbird ~]# mkdir -pv /etc/php /etc/php5.d

[root@vbird ~]# cd /usr/local/src/php-5.5.8/

[root@vbird php-5.5.8]# cp php.ini-production /etc/php/php.ini

来到/usr/local/php/etc目录下通过php-fmp的默认配置文件生成php-fmp的配置文件

[root@vbird etc]# cp php-fpm.conf.default php-fpm.conf

来到/usr/local/src/php-5.5.8/sapi/fpm目录下,拷贝php的控制脚本到/etc/init.d目录下并给它可执行权限

[root@vbird fpm]# cp init.d.php-fpm  /etc/init.d/php-fpm

[root@vbird fpm]# chmod a+x /etc/init.d/php-fpm

使用chkconfig管理

[root@vbird fpm]# chkconfig --add php-fpm

[root@vbird fpm]# chkconfig php-fpm  on

 

由于phpapache是用fcgi结合起来的,编辑apache的配置文件/etc/httpd/httpd.conf加载mod_proxy.somod_proxy_fcgi.so模块

DEADBECA1DEE47E58FE63608DEBDD928

httpd.conf  加入  AddType application/x-httpd-php .phpAddType application/x-httpd-php-source  .phps指明.php文件和.phps文件的处理类型

491F260AF3AD4142B808A00202C6A353

添加.php类型的默认首页

1775C365E55349E09BAFC3A0E7BC0F92

关闭正向代理功能,启动反向代理,把URI^/(.*\.php)$形式的请求反向代理到fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1

5BD180BAB2A544F88B11EE8E01935DB6

重新启动httpdmysqldhph-fpm服务

 

apache的默认站点目录下编辑一个默认.php类型的首页,做一下phphttpd的连接测试

[root@vbird ~]# cd /usr/local/apache/htdocs/

[root@vbird htdocs]# vim index.php

9F343251C46744A5B0513A298E0D850C

可以看到php的各种参数,连接成功

F8AC77BA22954491A5F2D739A9A434A7

更改index.php的内容测试phpMySQL的连接情况

0E29BCBA2B7B4DFBA1622756552772C1

 

可以看到连接成功

3495AF57BBE24BABBC13AF80C59F4D71

 

搭建phpwind应用测试LAMP环境  这里我使用物理目录

[root@vbird ~]# unzip phpwind_v9.0_gbk.zip

[root@vbird ~]# cd phpwind_v9.0_gbk

[root@vbirdphpwind_v9.0_gbk]#mv upload  /usr/local/apache/htdocs/phpwind

使用浏览器访问http://192.168.2.100/phpwind可以看到出现了phpwind的安装向导

541EC26A000848B28F3A2BE0F93A6C8D

 

 

点击下一步可以看到环境检测没问题

BC7759A593A141F7A30299CFC8E9EB0A

来到phpwind目录下更改文件权限

[root@vbird htdocs]# cd phpwind/

[root@vbird phpwind]# chmod  -R o+w attachment/ conf/  data/ html/ src/ themes/ windid/

51E56880EAAD4DD180E4851312EB92B2

创建数据

BDBAD6CF158246B08F7515541CB15E0B

安装完成后成功进入站点

7357CE64F44F43079E4EC71F3B09FB63

压力测试

Apache HTTP Web 服务器提供了一个叫做 ab 的工具,即 Apache HTTP 服务器性能检测(benchmark)工具的缩写。ab 用于为 PHP 页面自动化处理大量的请求

对静态页面index.html进行压力测试  可以看到只有每秒800左右

[root@vbird ~]# ab -n 10000 -c 1000  http://192.168.2.100/index.html

7A5457D964C2414F889F437EC725398E

对动态页面index.php进行压力测试  可以看到只有每秒300左右

[root@vbird ~]# ab -n 1000 -c 500 http://192.168.2.100/index.php

77E5E8E452F447DF99DCC7B6E3B76223 881415AD6AA7410B89409E643533ABA6

与其他开发 Web 应用程序的脚本语言(包括 PerlPython  Ruby)相似,每次 HTTP 请求调用时,PHP 代码都会被解析和翻译为操作码(PHP 引擎直接执行的原语指令 —— 类似于汇编语言)再执行。在要求很低或可忽略的情况下,服务器看上去能立即执行这个复杂的解释过程。但是一旦处理的页面增加,解释 —— 从本质上说,重复工作 —— 就会对服务器造成很大的负担。在某些情况下,“编译” PHP 代码的时间会远远超过执行该代码所需的时间。节约 CPU 周期的另一种方法是减少运行 PHP 应用程序所需的重复工作。当然,没有必要每次都把同样的 PHP 代码翻译一遍。PHP 代码被翻译成操作码后,可以把它保存起来并重复使用 —— 直到原始代码被修改。确实,缓存 —— 用于保存和重用 PHP 操作码 —— 是几种 PHP 加速器内部的机制,包括开源 Alternative PHP Cache (APC)、支持 PHP  Turck MMCacheXCacheeAccelerator 和商业 Zend Platform。后三类加速器能够缓存和优化字节码,这为系统提供了更多的速度提升。

下面我们使用xcachephp进行缓存

安装xcache

[root@vbird ~]# tar -zxvf xcache-3.1.0.tar.gz -C /usr/local/src/

[root@vbird ~]# cd /usr/local/src/xcache-3.1.0/

[root@vbird xcache-3.1.0]# vim INSTALL

7ED5EA663BB74D938FAF8DC0B2B8227C

使用phpizexcache作为php的扩展

[root@vbird xcache-3.1.0]# /usr/local/php/bin/phpize

[root@vbird xcache-3.1.0]# ./configure  \

--enable-xcache \

--with-php-config=/usr/local/php/bin/php-config

[root@vbird xcache-3.1.0]# make && make install

来到下面目录下把xcache的扩展模块xcache.so模块拷到php的扩展配置文件/etc/php5.d/

cd /usr/local/php/lib/php/extensions/no-debug-zts-20121212/

[root@vbird no-debug-zts-20121212]# cp xcache.so /etc/php5.d/

拷贝xcache的配置模板xcache.iniphp的扩展配置文件/etc/php5.d

[root@vbird xcache-3.1.0]# cp xcache.ini /etc/php5.d/

 

Xcache安装完成后重新启动httpd服务

我们接着来作压力测试看看xcache的效果

对静态页面index.html进行压力测试  可以看到只有每秒1300左右

[root@vbird ~]# ab -n 10000 -c 1000  http://192.168.2.100/index.html

07D91AFE6FD24ED2871EEC6920BA6AC4

5513D24F4B6E4AA2815D365E91EDDB1C 

对动态页面index.php进行压力测试  可以看到只有每秒800左右

[root@vbird ~]# ab -n 1000 -c 500 http://192.168.2.100/index.php

 

4A295F27864C402DAD3CBDF696142B7D

 

可以看到xcache缓存对php站点的响应速度有了很大的提升!

 

 


本文出自 “CL's博客” 博客,转载请与作者联系!

LAMP环境的搭建(fastcgi)+ xcache加速