用Flood测试Web服务器响应时间,源码搭建LAMP
分类:pc28.am

当你设置好服务器投入使用后,你最关心的事莫过于服务器的性能了。你可以用一些手动的方法进行测试,但手动方法有很多局限性。

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

新版本的httpd-2.4新增以下特性;
新增模块;
mod_proxy_fcgi(可提供fcgi代理)
mod_ratelimit(限制用户带宽)
mod_request(请求模块,对请求做过滤)
mod_remoteip(匹配客户端的IP地址)
对于基于IP的访问控制做了修改,不再支持allow,deny,order机制,而是统一使用require进行

说明:运维朋友都知道,常常会配合开发人员搭建一些他们需要的环境,来提高开发工作效率,他们每天面对的无非就是代码,所以代码的可用性和管理性对开发至关重要的,开发公司每接到一个项目就是一个团队来开发,这样多人同时对一些代码进行修改,会面临一些问题,比如:误删除,对同一文件修改发生冲突,对某些人不让有所有权限,都会造成工作效率降低,要想解决这些问题就需要有一个专业的版本管理系统来集中管理这些代码,这样的版本管理系统很多,我们这次使用的是SVN(subversion),是cvs接班人,是现在开源软件使用最多的版本管理软件,不多说了,开始搭建一个属于自己的版本控制系统吧。

先不论手工测试方法所投入的时间和精力问题,用手工方法测试的一大不足就是它不容易揭示出你的站点的真正问题所在,是服务器设置的问题还是因为一些动态组件又或是网络基础设施造成的问题?

方式一:模块化的方式

CentOS 6.5编译安装httpd-2.4.7 

SVN服务器有2种运行方式:独立服务器和借助apache运行(Web/DAV)。

幸运的Apache HTTP工程包含了一个名为HTTPD-Test的子工程,正如这个名称所揭示的,这是一个Apache的通用测试工具包,这个包里包含了大量的不同工具,而本文将主要介绍其中一个名为洪水Flood)的工具,它之所以如此命名,是因为它利用向服务器发出洪水般的大量请求测试服务器的响应时间。

安装apache

还新增以下几条新特性;

1、安装依赖包

Flood使用一个XML文件来进行必要的测试设置,包括测试中使用的URL和POST数据和准备测试的服务器组,然后Flood开始测量以下一系统操作的时间:

一、安装条件

1、MPM支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能;
--enable-mpms-shared=all  --with-mpm=event
2、支持event
3、支持异步读写
4、在每个模块及每个目录上指定日志级别
5、增强版的表达式分析器
6、每请求配置:<If>, <Elseif>
7、毫秒级别的keepalive timeout
8、基于FQDN的虚拟主机不再需要NameVirtualHost指令
9、支持使用自定义变量

[[email protected] ~]# yum install gcc gcc- make pcre-develzlib-devel -y

●打开一个到服务器的socket
●向socket写入对服务器的请求
●读出服务器的响应
●关闭socket

  1. 确保linux上已经安装apr和apr-util
  2. 确保linux上已经安装了PCRE
  3. 确保linux上已经安装了gcc
  4. 确保linux上没有安装rpm包的httpd
    1 [[email protected] ~]# rpm -qa | grep httpd

一;准备环境

[[email protected] ~]# tar zxvf apr-1.4.6.tar.gz
[[email protected] ~]# cd apr-1.4.6
[[email protected] apr-1.4.6]# ./configure --prefix=/usr/local/apr
[[email protected] ~]# make && make install

当测试结束,管理员就可以了解到是否存在Apache服务器或其它HTTP服务器)的设置问题,服务器的实际负荷,硬件的性能表现和是否存在着网络基础设置瓶颈。

我安装的是httpd-2.4.7,它所依赖的apr的版本是1.4.0,而用yum安装的最高是1.3.9。所以索性将apr、apr-util和pcre都使用源码。
apr:
apr-util:
pcre:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.bz2

Centos6.5-64位

[[email protected] ~]# tar zxvf apr-util-1.4.1.tar.gz
[[email protected] ~]# cd apr-util-1.4.1
[[email protected]]# ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr
[[email protected] ~]# make && make install

安装Flood

二、安装

安装httpd前需准备的程序包组;这几个程序包系统自带光盘就有,只需挂载到指定目录,制作成本地yum源即可安装使用。(此处不做过多介绍)

2、安装Apache
下载:
[[email protected] ~]# tar zxvf httpd-2.4.7.tar.gz
[[email protected] ~]# cd httpd-2.4.7
[[email protected] httpd-2.4.7]#./configure --prefix=/usr/local/apache --enable-dav --enable-so--enable-rewrite --enable-maintainer-mode --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
[[email protected] ~]# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
[[email protected] ~]# sed -i's/#ServerName.*/ServerName localhost/' /usr/local/apache/conf/httpd.conf

你可以在Apache网站下载httpd-test和apr/apr-util软件包,后者是当从Apache的CVS服务器上直接build时所需要的。你必需先进行登录密码是"anoncvs")

  1. 解压各个软件包
    [[email protected] ~]# tar xf httpd-2.4.7.tar.bz2
    [[email protected] ~]# tar xf apr-1.5.0.tar.bz2
    [[email protected] ~]# tar xf apr-util-1.5.3.tar.bz2
    [[email protected] ~]# tar xf pcre-8.32.tar.bz2

  2. 解决apr和apr-util的依赖关系
    [[email protected] ~]# mv apr-1.5.0 ~/httpd-2.4.7/srclib/apr
    [[email protected] ~]# mv apr-util-1.5.3 ~/httpd-2.4.7/srclib/apr-util
    #移动到httpd解压后的文件srclib目录中,注意不要写版本号

  3. 解决pcre的依赖关系
    [[email protected] ~]# cd pcre-8.32
    [[email protected] pcre-8.32]# ./configure --prefix=/usr/local/pcre
    [[email protected] pcre-8.32]# make && make install

  4. 安装apache软件
    [[email protected] httpd-2.4.7]# ./configure  --prefix=/usr/local/apache
     --sysconfdir=/etc/httpd 
     --enable-so
     --enable-ssl
     --enable-track-vars
     --enable-rewrite
     --with-zlib
     --enable-mods-shared=most
     --with-included-apr
     --with-pcre=/usr/local/pcre
    [[email protected] httpd-2.4.7]# make
    [[email protected] httpd-2.4.7]# make install
    #--enable-ssl需要安装openssl-devel

解决依赖关系

3、安装SVN
SVN需要需要SQLite数据库支持,我们先安装SQLite
下载:
1234 [[email protected] ~]# tar zxvf sqlite-autoconf-3080200.tar.gz
[[email protected] ~]# cd sqlite-autoconf-3080200
[[email protected]]# ./configure
[[email protected]]# make && make install

$ cvs -d :pserver:[email protected]:/home/cvspublic login
$ cvs -d :pserver:[email protected]:/home/cvspublic co httpd-test/flood
$ cd httpd-test/flood
$ cvs -d :pserver:[email protected]:/home/cvspublic co apr
$ cvs -d :pserver:[email protected]:/home/cvspublic co apr-util

--prefix=/usr/local/apache #指定httpd的安装路径
--sysconfdir=/etc/httpd  #指定安装后配置文件的路径
--enable-so #这项是关键:支持动态模块装卸载,如果不写的话,php没办法以模块的方式编译成apache的模块了
--enable-ssl #支持https
--enable-rewrite #支持url重写
--with-zlib #支持使用zlib库将数据发送到客户端之前进行压缩
--enable-mpms-shared=most #构建MPM为动态模块,将所有的模块都设为动态共享,可以在系统运行时加载
--with-included-apr  #和依赖的apr和apr-util软件相关
--with-pcre=/usr/local/pcre  #依赖于pcre告知pcre的安装路径

yum groupinstall -y "Server Platform Development"

 #安装SVN
下载:
[[email protected] ~]# tar zxvf subversion-1.8.5.tar.gz
[[email protected] ~]# cd subversion-1.8.5
[[email protected]]# ./configure --prefix=/usr/local/subversion--with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util/
[[email protected]]# make && make install

如果你取得了源码,你可以用下面的命令安装:

  1. 完善安装
    [[email protected] apache]# vim /etc/profile
    export PATH=$PATH:/usr/local/apache/bin
    [[email protected] apache]# . !$
    #在PATH变量中添加apache的可执行文件
    [[email protected] apache]# vim /etc/ld.so.conf.d/apache-x86_64.conf
    /usr/local/apache/lib
    [[email protected] lib]# ldconfig -v
    #让系统可以找到apache的库文件
    [[email protected] lib]# vim /etc/man.config
    MANPATH /usr/local/apache/man
    #让系统可以找到apache的帮助文档
    [[email protected] apache]# ln -sv /usr/local/apache/include /usr/include/apache
    `/usr/include/apache' -> `/usr/local/apache/include'
    #让系统可以找到apache的头文件

  2. 启动添加启动脚本
    这个脚本不需要手动写,只需要把rpm安装的那个/etc/init.d/httpd文件稍做修改就可以了。
    [[email protected] logs]# vim /etc/httpd/httpd.conf
    PidFile "/var/run/httpd.pid"
    #在配置文件中增加这一行

yum groupinstall -y "Development tools"

./confiure报错:这是因为apsx文件没有指定perl执行程序位置
apache/bin/apxs:/usr/local/perl: bad interpreter: No such file or directory
configure: error: no - APXSrefers to an old version of Apache
解决:[[email protected] ~]# vi /usr/local/apache/bin/apxs
#!/replace/with/path/to/perl/interpreter–w  #将第一行修改为#!/usr/bin/perl –w即可
  #添加环境变量

$ buildconf
$ configure
$ make all

[[email protected] ~]# vim /etc/init.d/httpd
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/var/run/httpd.pid}
#只需修改这3行即可

yum install -y pcre-devel-7.8-6.el6.x86_64

[[email protected] ~]# echo "PATH=$PATH/:/usr/local/subversion/bin" >> /etc/profile
[[email protected] ~]# source /etc/profile
[[email protected] ~]# svnserve –version  #显示版本信息表示正常

现在,安装完成了。

脚本已上传到附件里,将.txt后缀去掉即可

二;编译安装httpd2.4所依赖的软件包

推荐阅读:

先不...

  1. 设置开机自启动
    [[email protected] logs]# chkconfig --add httpd
    [[email protected] logs]# chkconfig httpd on

httpd2.4依赖于更高版本的apr和apr-util,apr全称为apache portable runtime(apache可运行时移值)。它是个能够让Apache跨平台工作的工具,是个底层库,安装上apr后。如果在win和linux上安装上apr后,Apache的同一个代码,即可以在win上运行也可在linux上运行;

Linux中Subversion配置实例

安装mysql
我的这篇博客写了

1.安装apr-1.5.0.tar.bz2

CentOS 6.2 SVN搭建 (YUM安装)

安装php

wget

Apache SVN搭建SVN服务器

  1. 安装php主程序
    [[email protected] ~]# tar xf php-5.5.9.tar.bz2
    [[email protected] ~]# cd php-5.5.9
    [[email protected] php-5.5.9]# ./configure --prefix=/usr/local/php
    --with-apxs2=/usr/local/apache/bin/apxs
    --with-mysql=/usr/local/mysql
    --with-mysqli=/usr/local/mysql/bin/mysql_config
    --with-libxml-dir 
    --with-zlib-dir 
    --enable-mbstring
    [[email protected] php-5.5.9]# make && make install
    [[email protected] php-5.5.9]# cp php.ini-production /usr/local/php/lib/php.ini

  2. 配置apache使其可以调用php
    注意:apache调用php有3种方式,CGI、FastCGI和模块,这里选择的调用方式就是将php作为apache的一个模块。
    [[email protected] php-5.5.9]# vim /etc/httpd/httpd.conf
    LoadModule php5_module        modules/libphp5.so    #确保这一行没有被注释
    AddType application/x-httpd-php  .php
    AddType application/x-httpd-php-source  .phps  #增加这2行
    DirectoryIndex index.php index.html  #修改主页文件

[[email protected] xf]# tar xf ^Cr-1.5.0.tar.bz2

Windows下SVN服务器搭建和使用 客户端重新设置密码

[[email protected] php-5.5.9]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

[[email protected] xf]# cd apr-1.5.0

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN数据

[[email protected] ~]# vim /etc/profile
export PATH=$PATH:/usr/local/php/bin

[[email protected] apr-1.5.0]# ./configure --prefix=/usr/local/apr

Ubuntu Server搭建svn服务以及迁移方法

  1. 测试
    [[email protected] ~]# cd /usr/local/apache/htdocs/
    #源码安装的apache的网站根目录就在这里,可以通过配置文件修改为熟悉的/var/www/html/下
    [[email protected] htdocs]# vim index.php
    <?php
    phpinfo();
    ?>

[[email protected] apr-1.5.0]# make && make install

借助网盘搭建SVN服务器

图片 1

2.安装apr-util-1.5.3

CentOS 6.3下Apache SVN部署Web版本同步 

看到这个页面就说明的apache可以成功调用php了,继续测试php到mysql的连接
[[email protected] htdocs]# vim index.php
<?php
$link=mysql_connect(localhost,'root','12345');
if ($link)
 echo "success";
else
 echo "failure";
?>

ftp://ftp.mirrorservice.org/sites/ftp.apache.org/apr/apr-util-1.5.3.tar.bz2

  • 1
  • 2
  • 下一页

[[email protected] htdocs]# service mysqld start
Starting MySQL.                                            [  OK  ]

[[email protected] xf]# tar xf apr-util-1.5.3.tar.bz2

...

图片 2

[[email protected] xf]# cd apr-util-1.5.3

[[email protected] htdocs]# service mysqld stop
Shutting down MySQL..                                      [  OK  ]

[[email protected] apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

图片 3

[[email protected] apr-util-1.5.3]# make && make install

这样就说明测试成功了。

3.以上两步编译完成,现正式开始编译httpd-2.4.9.tar.bz2

 

httpd 下载:

[[email protected] xf]# tar xf httpd-2.4.9.tar.bz2

免费下载地址在

[[email protected] xf]# cd httpd-2.4.9

用户名与密码都是www.bkjia.com

[[email protected] httpd-2.4.9]# ./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

具体下载目录在 /2014年资料/3月/4日/源码搭建LAMP FastCGI Xcache加速器

--prefix=/usr/local/apache 安装路径

下载方法见

--sysconfdir=/etc/httpd24 配置文件路径

 

--enable-so 允许运行时加载DSO模块

推荐阅读:

--enable-ssl 如果不加载将无法使用使用https

Ubuntu 13.04 安装 LAMPVsftpdWebminphpMyAdmin 服务及设置

--enable-cgi 允许使用cgi脚本

CentOS 5.9下编译安装LAMP(Apache 2.2.44 MySQL 5.6.10 PHP 5.4.12)

--enable-rewrite 支持URL重写机制

RedHat 5.4下Web服务器架构之源码构建LAMP环境及应用PHPWind

--with-zlib 支持网络通用压缩库

LAMP源码环境搭建WEB服务器Linux Apache MySQL PHP

--with-pcre 支持pcre

  • 1
  • 2
  • 3
  • 下一页

--with-apr=/usr/local/apr 指定apr的安装路径

HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性...

--with-apr-util=/usr/local/apr-util/ 指定apr-util的安装路径

--enable-modules=most 启用大多数常用的模块

--enable-mpms-shared=all 启用MPM所有支持的模式

--with-mpm=event 默认使用enevt模式

查看安装后所生成的文件 extra目录是2.4版新增目录

[[email protected] httpd24]# ls

extra  httpd.conf  magic  mime.types  original

[[email protected] httpd24]# cd extra/

[[email protected] extra]# ls

httpd-autoindex.conf  httpd-info.conf      httpd-mpm.conf                httpd-userdir.conf

httpd-dav.conf        httpd-languages.conf  httpd-multilang-errordoc.conf  httpd-vhosts.conf

httpd-default.conf    httpd-manual.conf    httpd-ssl.conf                proxy-html.conf

三、安装后所需配置;

    1、导出头文件;以目录链接的形式来实现

[[email protected] ~]# ln -sv /usr/local/apache/include/ /usr/include/httpd

`/usr/include/httpd' -> `/usr/local/apache/include/'

2、输出二进制程序

[email protected] ~]# vim /etc/profile.d/httpd24.sh

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

[email protected] ~]#. /etc/profile.d/httpd24.sh

[[email protected] ~]# httpd -V    显示httpd版本信息

3、导出man文件

[[email protected] ~]# vim /etc/man.config

MANPATH /usr/local/apache/man

[[email protected] ~]# man -M /usr/local/apache/man httpd

4、启动httpd

[[email protected] ~]# apachectl start

[[email protected] ~]# ss -tunl | grep 80

tcp    LISTEN    0      128                  :::80                  :::*

 5、修改服务脚本;

      修改服务前先把httpd关闭;apachect1 stop

vim /etc/init.d/httpd24.sh

#!/bin/bash

#

# httpd        Startup script for the Apache HTTP Server

#

# chkconfig: - 85 15

# description: The Apache HTTP Server is an efficient and extensible 

#              server implementing the current HTTP standards.

# processname: httpd

# config: /etc/httpd/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd/httpd.pid

. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then

        . /etc/sysconfig/httpd

fi

HTTPD_LANG=${HTTPD_LANG-"C"}

INITLOG_ARGS=""

apachectl=/usr/local/httpd24/bin/apachectl

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

prog=httpd

pidfile=${PIDFILE-/var/run/httpd24.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd24}

RETVAL=0

STOP_TIMEOUT=${STOP_TIMEOUT-10}

start() {

        echo -n $"Starting $prog: "

        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && touch ${lockfile}

        return $RETVAL

}

stop() {

        echo -n $"Stopping $prog: "

        killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

}

reload() {

    echo -n $"Reloading $prog: "

    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

        RETVAL=6

        echo $"not reloading due to configuration syntax error"

        failure $"not reloading $httpd due to configuration syntax error"

    else

        # Force LSB behaviour from killproc

        LSB=1 killproc -p ${pidfile} $httpd -HUP

        RETVAL=$?

        if [ $RETVAL -eq 7 ]; then

            failure $"httpd shutdown"

        fi

    fi

    echo

}

# See how we were called.

case "$1" in

  start)

        start

        ;;

  stop)

  status)

        status -p ${pidfile} $httpd

        RETVAL=$?

        ;;

  restart)

        stop

        start

        ;;

  condrestart|try-restart)

        if status -p ${pidfile} $httpd >&/dev/null; then

                stop

                start

        fi

        ;;

  force-reload|reload)

        reload

        ;;

  graceful|help|configtest|fullstatus)

        $apachectl [email protected]

        RETVAL=$?

        ;;

  *)

        echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"

        RETVAL=2

esac

exit $RETVAL

现在可以利用脚本来启动httpd服务

[[email protected] ~]# service httpd24 restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]

[[email protected] ~]# elinks -dump www.bkjia.com/index.html  elinks 测试启动

                                  It works!

下篇将介绍httpd2.4基本功能的实现...

新增模块; mod_proxy_fcgi(可提供fcgi代理) mod_ratelimit(限制用户带宽) mod_request(请求模块,对请求做过滤...

本文由pc28.am发布于pc28.am,转载请注明出处:用Flood测试Web服务器响应时间,源码搭建LAMP

上一篇:CDN与智能DNS原理和平运动用,双线服务器与CDN服 下一篇:没有了
猜你喜欢
热门排行
精彩图文