LAMP 源码包编译自定义安装

服务器安装配置说明

一、 Centos6.2 安装

安装步骤参考地址:http://www.cnblogs.com/pharen/archive/2012/02/06/2339322.html

设置开机后自动启动网络:

#将ONBOOT=no 改成 yes 就表示开机后默认链接eth 

vi /etc/sysconfig/network-scripts/ifcfg-eth0 

 

vi /etc/sysconfig/network-scripts/ifcfg-eth1 

 

LINUX 环境安装好以后,开始配置MYSQLAPACHEPHPFTP等。为了统一起见,我们将软件包统一存放:

1、 软件源码包存放位置:/home

2、 源码包编译安装位置:/use/local/

 

二、 Centos 6.2 下编译安装MySQL-5.5.22

现在的MySQL 都使用Cmake进行编译安装,所以在安装MySQL之前我们首先要把Cmake装在我们的系统。我们需要的软件源码包有:cmake-2.8.7.tar.gz和mysql-5.5.22.tar.gz。

1、安装Cmake

#安装所需依赖关系

yum -y install ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake bzip2-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-devel libtool libtool-ltdl openssl openssl-devel fontconfig-devel libxml2-devel curl-devel libicu libicu-devel libmcrypt libmcrypt-devel libmhash libmhash-devel

 

#下载Cmake的源码包

wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz

#解压Cmake包

tar zxf cmake-2.8.7.tar.gz

cd cmake-2.8.7

#配置Cmake

./configure

#编译Cmake

make

#安装Cmake

make install

 

2、编译安装配置MySQL

#创建所需目录

mkdir -pv /usr/local/mysql/data

#创建mysql用户和mysql组

groupadd mysql

useradd -g mysql -s /usr/sbin/nologin mysql

 

#解压mysql源码包

tar zxf mysql-5.5.22.tar.gz

cd mysql-5.5.22

#cmake编译

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_unicode_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0

#安装

make && make install

#复制配置文件

cp support-files/my-medium.cnf /etc/my.cnf

#设置权限

chmod +x /usr/local/mysql 

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql/data

#配置开机自动启动

cp support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

#修改配置文件

vim /etc/my.cnf

#在[mysqld]中添加:

datadir = /usr/local/mysql/data

log-error = /usr/local/mysql/data/error.log

pid-file = /usr/local/mysql/data/mysql.pid

user = mysql

tmpdir = /tmp

#保存退出

 

#初始化数据库

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 

#手动启动MySQL

service mysqld start

 

#测试MySQL是否启动

#查看是否有mysql进程

ps -ef | grep mysql

#查看是否有mysql端口

netstat -tnlp | grep 3306

#添加mysql的软链接可以使用用户直接使用

ln -sv /usr/local/mysql/bin/mysql mysql

ln -sv /usr/local/mysql/bin/mysqladmin mysqladmin

ln -sv /usr/local/mysql/bin/mysqldump mysqldump

或者编辑/etc/profile在以PATH开头的上一行添加

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

#重读/etc/profile文件

. /etc/profile

#测试mysql,mysqladmin,mysqldump命令是否能正常使用

#读取MySQL的版本信息

mysqladmin version

#到此MySQL编译安装完成

安装步骤参考地址:http://1567045.blog.51cto.com/1557045/841064

 

三、 Centos 6.2 下编译安装Apache

#下载httpd-2.4.2.tar.gz的源码包

#解压至/home下

tar zxf httpd-2.4.2.tar.gz

1、 配置

[root@localhost httpd-2.4.2] ./configure --prefix=/usr/local/apache2 --enable-module=so  --enable-mods-shared=all  -enable-cach  --enable-mem-cache  --enable-disk-cache  --enable-static-support  --enable-static-htpasswd --enable-static-htdigest  --enable-static-rotatelogs  --enable-static-logresolve --enable-static-ab  --enable-static-checkgid  --disable-cgid  --disable-cgi  --enable-ssl

 

#配置详解:

# ./configure //配置源代码树

#--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。

#--enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块

#--enable-mods-shared=all //编译全部的模板,对于不需要我们可以在httpd.conf去掉。

#--enable-cache //支持缓存

#--enable-file-cache //支持文件缓存

#--enable-mem-cache //支持记忆缓存

#--enable-disk-cache //支持磁盘缓存

#--enable-static-support //支持静态连接(默认为动态连接)

#--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件

#--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件

#--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序

#--enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名

#--enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库

#--enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具

#--enable-static-checkgid //使用静态连接编译 checkgid

#--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本

#--disable-cgi //禁止编译 CGI 版本的 PHP

#--enable-ssl // 编译 ssl模块。

 

2、安装apache

#编译apache

[root@localhost httpd-2.4.2] make 

#安装apache

[root@localhost httpd-2.4.2] make install

#进入apache的目录

[root@localhost httpd-2.4.2] cd /usr/local/apache2/conf

#备份apache配置文件

[root@localhost conf] cp  -a  httpd.conf  httpd.conf----

#查看httpd服务是否已存在

[root@localhost conf] chkconfig --list httpd

#如果存在httpd服务,关闭系统自带的httpd的服务

[root@localhost conf] chkconfig  httpd  off
#查看自带httpd服务状态
[root@localhost conf] service httpd status

# linux启动apache命令

[root@localhost conf] /usr/local/apache2/bin/apachectl -k start

#查看linux80端口是否开启

[root@localhost conf] netstat -an | grep :80

# linux下查看apache进程

[root@localhost conf] ps -aux | grep httpd

[root@localhost conf] cd ../..

#拷贝apache启动脚本
[root@localhost local] cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/apache

#这里是编辑apache启动脚本

[root@localhost local]  vi /etc/rc.d/init.d/apache2

#在开头的#/bin/sh 下面加上

chkconfig: 2345 85 15

#添加apache服务

[root@localhost local]  chkconfig --add apache 

#列出apache服务

[root@localhost local]  chkconfig --list apache

#停止apache服务

[root@localhost local]  service apache stop

#查看linux80端口是否关闭

[root@localhost local]  netstat -an | grep :80

#查看是否存在httpd服务,若果之前自带httpd服务启动的话会导致新添加的apache服务启动失败
[root@localhost local]  ps -aux | grep httpd

#启动apache服务
[root@localhost local]  service apache start

打开你的服务器ip地址,看看是否出现了tomcat的默认首页,如果出现的话,那么恭喜你
linux下安装apache已经成功了

 

四、 Centos 6.2 下编译安装PHP

参考:http://www.myhack58.com/Article/sort099/sort0102/2011/31794.htm

(一)、准备工作

1、源码包下载:

 

2、 安装gcc、gcc-c++编译器(yum安装)

yum -y install gcc

yum -y install gcc-c++

yum会自动查找软件的相关依赖包,自动下载安装,全过程轻松愉快。特此记录一下。

3、 关闭selinux,清空防火墙规则

修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

SELINUX=" disabled "

4、 开放80、3306、22端口(因为默认情况下,防火墙的80330622端口是关闭的,这样的话对于客户机访问虚拟机上的web,会出现访问不到的现象。所以要开启。

停止服务

service iptables stop

#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 
#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

然后保存:
#/etc/rc.d/init.d/iptables save

重启防火墙

service iptables restart

查看打开的端口,防火墙信息:

# /etc/init.d/iptables status

5、 将下载的压缩包传到服务器/home/lamp目录下,并解压:

可编写shell脚本进行解包

因为包很多,这里编写shell脚本/lamp/tar.sh进行解包

(二)、安装过程

按照顺序安装组件。也可以编写安装脚本进行安装,我们先手动依次安装:

1、 安装libxml2-2.7.2

cd /lamp/ libxml2-2.7.2

./configure --prefix=/usr/local/libxml2/ 

make 

make install 

2、安装libmcrypt-2.5.8

cd /lamp/libmcrypt-2.5.8 

./configure --prefix=/usr/local/libmcrypt/ 

make 

make install 

cd /lamp/libmcrypt-2.5.8/libltdl 

./configure --enable-ltdl-install 

make 

make install 

3、安装zlib-1.2.5

cd /lamp/zlib-1.2.5

./configure 

make 

make install 

4、安装libpng-1.2.31

cd /lamp/ libpng-1.5.11

./configure --prefix=/usr/local/libpng/ 

make 

make install 

5、安装jpegsrc.v7

mkdir /usr/local/jpeg7 

mkdir /usr/local/jpeg7/bin 

mkdir /usr/local/jpeg7/lib 

mkdir /usr/local/jpeg7/include 

mkdir -p /usr/local/jpeg7/man/man1 

cd /lamp/ jpegsrc.v7

./configure --prefix=/usr/local/jpeg7/ --enable-shared --enable-static 

make 

make install 

6、安装freetype-2.4.10

cd /lamp/freetype-2.4.10

./configure --prefix=/usr/local/freetype/ 

make 

make install 

6、 安装autoconf-2.63

cd /lamp/autoconf-2.63

./configure --prefix=/usr/local/autoconf/

make 

make install 

7、 安装gd-2.0.35 

cd /lamp/gd-2.0.35 

./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg7

--with-freetype=/usr/local/freetype/ 

make 

make install 

8、 安装ncurses-5.9

cd /lamp/ ncurses-5.9

./configure --with-shared --without-debug --without-ada --enable-overwrite 

make 

make install 

9、 安装php-5.4.4

cd /lamp/ php-5.4.4

./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg7/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets 

make 

make install 

cp php.ini-dist /usr/local/php/etc/php.ini 

php解析(打开phpinfo())

vi /usr/local/apache2/conf/httpd.conf  里添加如下两句

#设置apache的默认文件名次序

#AddType application/x-httpd-php .php .phtml .php3 .inc

#AddType application/x-httpd-php-source .phps

/usr/local/apache2/bin/apachectl restart 

 

10、 安装加速器xcache-2.0.0

参考:http://xukaizijian.blog.163.com/blog/static/17043311920116733848938/

cd xcache-1.3.2
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

make 

make test

make install

cp r admin /data/

#修改 php.ini

#在php.ini后添加如下代码:

[xcache-common]
zend_extension = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "admin"
xcache.admin.pass = "6a0194f9707fa832ece6f5b66a25567e" 
#echo -n "youp-assword" |md5sum |awk '{print $1}'
[xcache] 
xcache.shm_scheme = "mmap"
xcache.size = 128M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 0M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""

 

#修改apache配置文件:

#在apache中设置一个虚拟目录,使之aliasxcache的控制页面,在 httpd.conf中添加如下代码并重启服务:

alias /xcache/ "/data/admin/"
<Directory /data/bbs/admin>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

查看phpinfo页面,检验是否加载xcache,如果能看到如下图所示页面,则证明xcache已经启用

 

解决警告问题:

php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC

11.  phpmyadmin的安装与配置

#拷贝phpmyadmin目录到指定位置(网站主目录/www/html)并改名为phpmyadmin

cp -a phpMyAdmin-3.5.1-all-languages /www/html/phpmyadmin

cd /usr/local/apache2/htdocs/phpmyadmin/

cp config.sample.inc.php config.inc.php
进入/www/html/phpmyadmin
修改配置文件config.inc.php,将$cfg['blowfish_secret'] = '' 空格处填上登录phpmyadmin的密码,例如:$cfg['blowfish_secret'] = '123456'

12. 常见错误及备注:

1linux启动apache libltdl.so.3:cannot open shared object file:No such file or directory异常

解决方法:执行ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3 即可

2若出现Address already in use: make_sock: could not bind to address [::]:80异常

解决方法:reboot启动linux

3若出现在linux终端执行clear或者top命令时出现:‘xterm’:unknown terminal type的错误,参考《在linux终端执行cleartop命令时出现:'xterm': unknown terminal type的错误》

13、对php.ini的优化,关闭不安全的 函数使用

http://hi.baidu.com/redhatd/item/3061c77c50e00b376f29f613

#打开安全模式
safe_mode = On

#下面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件
open_basedir = /www/

#禁止使用phpinfoget_cfg_var函数,这样可以避免泄露服务信息
disable_functions = phpinfo,get_cfg_var

#设置php程序错误日志, 建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因
error_reporting = E_ALL
log_errors = On

#同时也要设置错误日志存放的目录,建议根apache的日志存在一起
error_log = /var/log/php_err.log

#关闭注册全局变量(Post.Get如果php程序没有指明需要register_globals的话 最好把register_globals设置为Off 这样可以避免很多安全问题的#PS: 不过现在PHP5 都是默认关闭的
register_globals = Off

#打开magic_quotes_gpc来防止SQL注入
magic_quotes_gpc = On

#禁止打开远程地址

allow_url_fopen = Off

#关闭PHP版本信息在http头中的泄漏

expose_php = Off

# GD库的支持
extension=php_gd2.dll


五、安全优化设置

1. 更改主机名为:local.e-dar.cn

命令#hostname  或 #uname –n   //查看机器名

命令#hostname -i //查看本机器名对应的ip地址

#hostname  local.e-dar.cn

修改 /etc/sysconfig/network  中的hostname;

 

修改  /etc/hosts 文件
192.168.50.113  local.e-dar.cn  

2. Apache的虚拟主机配置

Vi  /usr/local/apache2/conf/extra/httpd-vhosts.conf

 

添加 local.e-dar.cn虚拟目录:

<VirtualHost *:80>

    ServerAdmin webmaster@local.e-dar.cn

    DocumentRoot "/www"

    ServerName local.e-dar.cn

    ErrorLog "logs/local.e-dar.cn.-error_log" 

    CustomLog "logs/local.e-dar.cn-access_log" common

</VirtualHost>

3. 让192.168.50.114无法打开网页,只能用192.168.50.113 打开网页

打开Apache 配置文件:

vi  /usr/local/apache2/conf/httpd.conf

113监听

Listen 192.168.50.113:80

 

ServerName local.e-dar.cn:80

 

ServerAdmin  service@e-dar.cn

 

4. 不允许IP直接访问:指定一个空的目录为DocumentRoot 的访问路径

 

 

<Directory  “/www”>为文件存放地址

 

5. 关闭apache的目录浏览功能

 

方法:关闭 indexes选项,全局关闭

在配置文件中把

 

 

 

6. 设置文件访问顺序:DirectoryIndex

 

7. 设置SSH 禁止ROOT直接登录

(1) 设置初级用户:

 

Useradd  localedar

 

Passwd  localedar

2)不允许root直接登录

修改ssh配置文件

Vi  /etc/ssh/sshd_config

查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件。

PermitRootLogin no

 

8. 设置SSH 监听113

Vi  /etc/ssh/sshd_config

Listen 192.168.50.114:22

/etc/init.d/ssh restart

/usr/sbin/sshd stop

/usr/sbin/sshd start

netstat -anp|grep 22

 

9. SSH 自动断开的时间设置

编辑配置文件

Vi  /etc/ssh/sshd_config

添加两个参数

ClientAliveInterval  540 
ClientAliveCountMax  10

保存重启

ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔;ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开;

 

六、 FTP安装配置

参考:http://www.cnblogs.com/riky/archive/2007/04/24/725329.html

1、下载安装FTP

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz

tar zxvf proftpd-1.2.9.tar.gz

cd proftpd-1.2.9 

//设置安装目录/var/proftpd,配置文件目录/etc
./configure --prefix=/var/proftpd --sysconfdir=/etc 
make 
make install

2、 新建FTP账号(如u/pedar/edar888

groupadd edar

//设置/var/ftp目录为ftp的目录

useradd  edar  -g  edar  -d /var/ftp -s /sbin/nologin 

//设置skate用户的密码

passwd skate 

mkdir /var/ftp/upload 

//设置upload目录edar用户可写
chown edar.edar /var/ftp/upload 

3、 设置FTp(配置文件:/etc/proftpd.conf

vi /etc/proftpd.conf 

####具体配置如下###### 
ServerName "Test ftp server..." 
ServerType standalone 
DefaultServer on 
#端口 
Port 21 
Umask 022 
#最大线程数 
MaxInstances 30 
User skate 
Group skate 

#DNS反查 
UseReverseDNS off 
IdentLookups off 
#最大尝试连接次数 
MaxLoginAttempts 3 
#每用户线程 
MaxClientsPerHost 2 
#最大用户数 
MaxClients 20 

DirFakeUser On skate 
DirFakeGroup On skate 
DeferWelcome On 
#日志文件位置 
SystemLog /var/log/proftpd.log 
ServerIdent off 

#限制skate组的skate用户登录时不能切换到其他目录(只能呆在他的home目录) 
DefaultRoot ~ skate,skate 

#设置只允许192.168.0的用户登录 
#<limit LOGIN> 
#Order allow,deny 
#Allow from 192.168.0. 
#Deny from all 
#</limit> 

#设置只允许skate用户登录,否则系统用户也可以登录ftp 
#<limit LOGIN> 
#Order allow,deny 
#DenyUser !skate 
#</limit> 


#开起全盘的写权限 
<Directory /> 
AllowOverwrite on 
AllowStoreRestart on 
#允许FXP 
# AllowForeignAddress on 
<Limit All> 
AllowAll 
</Limit> 
</Directory> 

#设置skate用户在upload的限制 
#DELE删除权限 
#RNFR RNTO重命名权限 
#RMD XRMD移动目录权限 
<Directory /var/ftp/upload> 
<Limit DELE RNFR RNTO RMD XRMD > 
DenyUser skate 
</Limit> 
</Directory> 
#####结束###### 

4、 开启FTP端口

#查看端口

usr/sbin/iptables –L

 

vi /etc/sysconfig/iptables

加入FTP 21

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

 

重启防火墙:

service iptables restart

 

5、开启FTP服务

 

etc/proftpd.conf

killall proftpd

/var/proftpd/sbin/proftpd

 

 

七、 Apache 防DDOS模块mod_evasive的安装配置和使用

1、 下载地址:http://www.zdziarski.com/

2、 安装说明:http://garlics.blog.51cto.com/2682515/793869

报错:

 

错误解决方法:http://forum.maxmind.com/viewtopic.php?f=13&t=3685

Apache httpd 2.2以上版本需要将remote_ip  改为: client_ip

 

3、 配置httpd

<IfModule mod_evasive20.c>

DOSHashTableSize 3097

#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.

DOSPageCount 5 

#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.

DOSSiteCount 100

#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。

DOSPageInterval 2

#设置DOSPageCount中时间长度标准,默认值为1。

DOSSiteInterval 2

设置DOSSiteCount中时间长度标准,默认值为1。

DOSBlockingPeriod 3600

#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。

DOSEmailNotify **.@qq.com

#设置受到攻击时接收攻击信息提示的邮箱地址。有IP加入黑名单后通知管理员。

DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":

#IP加入黑名单后执行的系统命令。

DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"#手动创建目录mod_evasive,攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。锁定机制临时目录

#白名单 

DOSWhiteList 127.0.0.1 

DOSWhiteList 192.168.12.*

</IfModule>

4、 mod_evasive测试验证 

 

#/usr/sbin/ab -n 1000 -c 50 http://www.google.com:80/

 

八、 使用mod_bandwidth控制Apache的带宽

*mod_bandwidth可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。http://blog.51yip.com/apachenginx/917.html

1、下载地址:http://bwmod.sourceforge.net/

#  wget  http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz

2、 安装:# /usr/local/apache2/bin/apxs –I mod_bw.c

安装过程中报错:如下

 

解决:修改/home/mod_bw/mod_bw.c  添加定义

#vi mod_bw.c

#ifdef APR_MAJOR_VERSION //添加这行
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif
#endif //添加这行  重新编译就 ok

3、 设置Apacheconf文件:

LoadModule bw_module modules/mod_bw.so

<IfDefine HAVE_BANDWIDTH>

LoadModule bandwidth_module   modules/mod_bandwidth.so

</IfDefine> 

<Directory />

        BandWidthModule On

        ForceBandWidthModule On

        BandWidth     all 102400

        MinBandWidth all 51200

        MaxConnection all 50

        MaxConnection 192.168.50.29 5

        LargeFileLimit .jpg 100 10240

        ErrorDocument 510 /exceed_speed.html

        BandWidthError 510

</Directory>

 

4、 可以将IP线程限制加到虚拟主机里面

 

5、 测试:测试很简单,你按着F5,让他老涮新就行了,把最大连接数调小一点,一下就可以弹出503错误。  

 

服务器安装配置说明

一、 Centos6.2 安装

安装步骤参考地址:http://www.cnblogs.com/pharen/archive/2012/02/06/2339322.html

设置开机后自动启动网络:

#将ONBOOT=no 改成 yes 就表示开机后默认链接eth 

vi /etc/sysconfig/network-scripts/ifcfg-eth0 

 

vi /etc/sysconfig/network-scripts/ifcfg-eth1 

 

LINUX 环境安装好以后,开始配置MYSQLAPACHEPHPFTP等。为了统一起见,我们将软件包统一存放:

1、 软件源码包存放位置:/home

2、 源码包编译安装位置:/use/local/

 

二、 Centos 6.2 下编译安装MySQL-5.5.22

现在的MySQL 都使用Cmake进行编译安装,所以在安装MySQL之前我们首先要把Cmake装在我们的系统。我们需要的软件源码包有:cmake-2.8.7.tar.gz和mysql-5.5.22.tar.gz。

1、安装Cmake

#安装所需依赖关系

yum -y install ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake bzip2-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-devel libtool libtool-ltdl openssl openssl-devel fontconfig-devel libxml2-devel curl-devel libicu libicu-devel libmcrypt libmcrypt-devel libmhash libmhash-devel

 

#下载Cmake的源码包

wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz

#解压Cmake包

tar zxf cmake-2.8.7.tar.gz

cd cmake-2.8.7

#配置Cmake

./configure

#编译Cmake

make

#安装Cmake

make install

 

2、编译安装配置MySQL

#创建所需目录

mkdir -pv /usr/local/mysql/data

#创建mysql用户和mysql组

groupadd mysql

useradd -g mysql -s /usr/sbin/nologin mysql

 

#解压mysql源码包

tar zxf mysql-5.5.22.tar.gz

cd mysql-5.5.22

#cmake编译

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_unicode_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0

#安装

make && make install

#复制配置文件

cp support-files/my-medium.cnf /etc/my.cnf

#设置权限

chmod +x /usr/local/mysql 

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql/data

#配置开机自动启动

cp support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

#修改配置文件

vim /etc/my.cnf

#在[mysqld]中添加:

datadir = /usr/local/mysql/data

log-error = /usr/local/mysql/data/error.log

pid-file = /usr/local/mysql/data/mysql.pid

user = mysql

tmpdir = /tmp

#保存退出

 

#初始化数据库

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 

#手动启动MySQL

service mysqld start

 

#测试MySQL是否启动

#查看是否有mysql进程

ps -ef | grep mysql

#查看是否有mysql端口

netstat -tnlp | grep 3306

#添加mysql的软链接可以使用用户直接使用

ln -sv /usr/local/mysql/bin/mysql mysql

ln -sv /usr/local/mysql/bin/mysqladmin mysqladmin

ln -sv /usr/local/mysql/bin/mysqldump mysqldump

或者编辑/etc/profile在以PATH开头的上一行添加

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

#重读/etc/profile文件

. /etc/profile

#测试mysql,mysqladmin,mysqldump命令是否能正常使用

#读取MySQL的版本信息

mysqladmin version

#到此MySQL编译安装完成

安装步骤参考地址:http://1567045.blog.51cto.com/1557045/841064

 

三、 Centos 6.2 下编译安装Apache

#下载httpd-2.4.2.tar.gz的源码包

#解压至/home下

tar zxf httpd-2.4.2.tar.gz

1、 配置

[root@localhost httpd-2.4.2] ./configure --prefix=/usr/local/apache2 --enable-module=so  --enable-mods-shared=all  -enable-cach  --enable-mem-cache  --enable-disk-cache  --enable-static-support  --enable-static-htpasswd --enable-static-htdigest  --enable-static-rotatelogs  --enable-static-logresolve --enable-static-ab  --enable-static-checkgid  --disable-cgid  --disable-cgi  --enable-ssl

 

#配置详解:

# ./configure //配置源代码树

#--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。

#--enable-module=so //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块

#--enable-mods-shared=all //编译全部的模板,对于不需要我们可以在httpd.conf去掉。

#--enable-cache //支持缓存

#--enable-file-cache //支持文件缓存

#--enable-mem-cache //支持记忆缓存

#--enable-disk-cache //支持磁盘缓存

#--enable-static-support //支持静态连接(默认为动态连接)

#--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件

#--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件

#--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序

#--enable-static-logresolve //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名

#--enable-static-htdbm //使用静态连接编译 htdbm - 操作 DBM 密码数据库

#--enable-static-ab //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具

#--enable-static-checkgid //使用静态连接编译 checkgid

#--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本

#--disable-cgi //禁止编译 CGI 版本的 PHP

#--enable-ssl // 编译 ssl模块。

 

2、安装apache

#编译apache

[root@localhost httpd-2.4.2] make 

#安装apache

[root@localhost httpd-2.4.2] make install

#进入apache的目录

[root@localhost httpd-2.4.2] cd /usr/local/apache2/conf

#备份apache配置文件

[root@localhost conf] cp  -a  httpd.conf  httpd.conf----

#查看httpd服务是否已存在

[root@localhost conf] chkconfig --list httpd

#如果存在httpd服务,关闭系统自带的httpd的服务

[root@localhost conf] chkconfig  httpd  off
#查看自带httpd服务状态
[root@localhost conf] service httpd status

# linux启动apache命令

[root@localhost conf] /usr/local/apache2/bin/apachectl -k start

#查看linux80端口是否开启

[root@localhost conf] netstat -an | grep :80

# linux下查看apache进程

[root@localhost conf] ps -aux | grep httpd

[root@localhost conf] cd ../..

#拷贝apache启动脚本
[root@localhost local] cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/apache

#这里是编辑apache启动脚本

[root@localhost local]  vi /etc/rc.d/init.d/apache2

#在开头的#/bin/sh 下面加上

chkconfig: 2345 85 15

#添加apache服务

[root@localhost local]  chkconfig --add apache 

#列出apache服务

[root@localhost local]  chkconfig --list apache

#停止apache服务

[root@localhost local]  service apache stop

#查看linux80端口是否关闭

[root@localhost local]  netstat -an | grep :80

#查看是否存在httpd服务,若果之前自带httpd服务启动的话会导致新添加的apache服务启动失败
[root@localhost local]  ps -aux | grep httpd

#启动apache服务
[root@localhost local]  service apache start

打开你的服务器ip地址,看看是否出现了tomcat的默认首页,如果出现的话,那么恭喜你
linux下安装apache已经成功了

 

四、 Centos 6.2 下编译安装PHP

参考:http://www.myhack58.com/Article/sort099/sort0102/2011/31794.htm

(一)、准备工作

1、源码包下载:

 

2、 安装gcc、gcc-c++编译器(yum安装)

yum -y install gcc

yum -y install gcc-c++

yum会自动查找软件的相关依赖包,自动下载安装,全过程轻松愉快。特此记录一下。

3、 关闭selinux,清空防火墙规则

修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

SELINUX=" disabled "

4、 开放80、3306、22端口(因为默认情况下,防火墙的80330622端口是关闭的,这样的话对于客户机访问虚拟机上的web,会出现访问不到的现象。所以要开启。

停止服务

service iptables stop

#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 
#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

然后保存:
#/etc/rc.d/init.d/iptables save

重启防火墙

service iptables restart

查看打开的端口,防火墙信息:

# /etc/init.d/iptables status

5、 将下载的压缩包传到服务器/home/lamp目录下,并解压:

可编写shell脚本进行解包

因为包很多,这里编写shell脚本/lamp/tar.sh进行解包

(二)、安装过程

按照顺序安装组件。也可以编写安装脚本进行安装,我们先手动依次安装:

1、 安装libxml2-2.7.2

cd /lamp/ libxml2-2.7.2

./configure --prefix=/usr/local/libxml2/ 

make 

make install 

2、安装libmcrypt-2.5.8

cd /lamp/libmcrypt-2.5.8 

./configure --prefix=/usr/local/libmcrypt/ 

make 

make install 

cd /lamp/libmcrypt-2.5.8/libltdl 

./configure --enable-ltdl-install 

make 

make install 

3、安装zlib-1.2.5

cd /lamp/zlib-1.2.5

./configure 

make 

make install 

4、安装libpng-1.2.31

cd /lamp/ libpng-1.5.11

./configure --prefix=/usr/local/libpng/ 

make 

make install 

5、安装jpegsrc.v7

mkdir /usr/local/jpeg7 

mkdir /usr/local/jpeg7/bin 

mkdir /usr/local/jpeg7/lib 

mkdir /usr/local/jpeg7/include 

mkdir -p /usr/local/jpeg7/man/man1 

cd /lamp/ jpegsrc.v7

./configure --prefix=/usr/local/jpeg7/ --enable-shared --enable-static 

make 

make install 

6、安装freetype-2.4.10

cd /lamp/freetype-2.4.10

./configure --prefix=/usr/local/freetype/ 

make 

make install 

6、 安装autoconf-2.63

cd /lamp/autoconf-2.63

./configure --prefix=/usr/local/autoconf/

make 

make install 

7、 安装gd-2.0.35 

cd /lamp/gd-2.0.35 

./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg7

--with-freetype=/usr/local/freetype/ 

make 

make install 

8、 安装ncurses-5.9

cd /lamp/ ncurses-5.9

./configure --with-shared --without-debug --without-ada --enable-overwrite 

make 

make install 

9、 安装php-5.4.4

cd /lamp/ php-5.4.4

./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg7/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets 

make 

make install 

cp php.ini-dist /usr/local/php/etc/php.ini 

php解析(打开phpinfo())

vi /usr/local/apache2/conf/httpd.conf  里添加如下两句

#设置apache的默认文件名次序

#AddType application/x-httpd-php .php .phtml .php3 .inc

#AddType application/x-httpd-php-source .phps

/usr/local/apache2/bin/apachectl restart 

 

10、 安装加速器xcache-2.0.0

参考:http://xukaizijian.blog.163.com/blog/static/17043311920116733848938/

cd xcache-1.3.2
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

make 

make test

make install

cp r admin /data/

#修改 php.ini

#在php.ini后添加如下代码:

[xcache-common]
zend_extension = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "admin"
xcache.admin.pass = "6a0194f9707fa832ece6f5b66a25567e" 
#echo -n "youp-assword" |md5sum |awk '{print $1}'
[xcache] 
xcache.shm_scheme = "mmap"
xcache.size = 128M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 0M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""

 

#修改apache配置文件:

#在apache中设置一个虚拟目录,使之aliasxcache的控制页面,在 httpd.conf中添加如下代码并重启服务:

alias /xcache/ "/data/admin/"
<Directory /data/bbs/admin>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

查看phpinfo页面,检验是否加载xcache,如果能看到如下图所示页面,则证明xcache已经启用

 

解决警告问题:

php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC

11.  phpmyadmin的安装与配置

#拷贝phpmyadmin目录到指定位置(网站主目录/www/html)并改名为phpmyadmin

cp -a phpMyAdmin-3.5.1-all-languages /www/html/phpmyadmin

cd /usr/local/apache2/htdocs/phpmyadmin/

cp config.sample.inc.php config.inc.php
进入/www/html/phpmyadmin
修改配置文件config.inc.php,将$cfg['blowfish_secret'] = '' 空格处填上登录phpmyadmin的密码,例如:$cfg['blowfish_secret'] = '123456'

12. 常见错误及备注:

1linux启动apache libltdl.so.3:cannot open shared object file:No such file or directory异常

解决方法:执行ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3 即可

2若出现Address already in use: make_sock: could not bind to address [::]:80异常

解决方法:reboot启动linux

3若出现在linux终端执行clear或者top命令时出现:‘xterm’:unknown terminal type的错误,参考《在linux终端执行cleartop命令时出现:'xterm': unknown terminal type的错误》

13、对php.ini的优化,关闭不安全的 函数使用

http://hi.baidu.com/redhatd/item/3061c77c50e00b376f29f613

#打开安全模式
safe_mode = On

#下面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件
open_basedir = /www/

#禁止使用phpinfoget_cfg_var函数,这样可以避免泄露服务信息
disable_functions = phpinfo,get_cfg_var

#设置php程序错误日志, 建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因
error_reporting = E_ALL
log_errors = On

#同时也要设置错误日志存放的目录,建议根apache的日志存在一起
error_log = /var/log/php_err.log

#关闭注册全局变量(Post.Get如果php程序没有指明需要register_globals的话 最好把register_globals设置为Off 这样可以避免很多安全问题的#PS: 不过现在PHP5 都是默认关闭的
register_globals = Off

#打开magic_quotes_gpc来防止SQL注入
magic_quotes_gpc = On

#禁止打开远程地址

allow_url_fopen = Off

#关闭PHP版本信息在http头中的泄漏

expose_php = Off

# GD库的支持
extension=php_gd2.dll


五、安全优化设置

1. 更改主机名为:local.e-dar.cn

命令#hostname  或 #uname –n   //查看机器名

命令#hostname -i //查看本机器名对应的ip地址

#hostname  local.e-dar.cn

修改 /etc/sysconfig/network  中的hostname;

 

修改  /etc/hosts 文件
192.168.50.113  local.e-dar.cn  

2. Apache的虚拟主机配置

Vi  /usr/local/apache2/conf/extra/httpd-vhosts.conf

 

添加 local.e-dar.cn虚拟目录:

<VirtualHost *:80>

    ServerAdmin webmaster@local.e-dar.cn

    DocumentRoot "/www"

    ServerName local.e-dar.cn

    ErrorLog "logs/local.e-dar.cn.-error_log" 

    CustomLog "logs/local.e-dar.cn-access_log" common

</VirtualHost>

3. 让192.168.50.114无法打开网页,只能用192.168.50.113 打开网页

打开Apache 配置文件:

vi  /usr/local/apache2/conf/httpd.conf

113监听

Listen 192.168.50.113:80

 

ServerName local.e-dar.cn:80

 

ServerAdmin  service@e-dar.cn

 

4. 不允许IP直接访问:指定一个空的目录为DocumentRoot 的访问路径

 

 

<Directory  “/www”>为文件存放地址

 

5. 关闭apache的目录浏览功能

 

方法:关闭 indexes选项,全局关闭

在配置文件中把

 

 

 

6. 设置文件访问顺序:DirectoryIndex

 

7. 设置SSH 禁止ROOT直接登录

(1) 设置初级用户:

 

Useradd  localedar

 

Passwd  localedar

2)不允许root直接登录

修改ssh配置文件

Vi  /etc/ssh/sshd_config

查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件。

PermitRootLogin no

 

8. 设置SSH 监听113

Vi  /etc/ssh/sshd_config

Listen 192.168.50.114:22

/etc/init.d/ssh restart

/usr/sbin/sshd stop

/usr/sbin/sshd start

netstat -anp|grep 22

 

9. SSH 自动断开的时间设置

编辑配置文件

Vi  /etc/ssh/sshd_config

添加两个参数

ClientAliveInterval  540 
ClientAliveCountMax  10

保存重启

ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔;ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开;

 

六、 FTP安装配置

参考:http://www.cnblogs.com/riky/archive/2007/04/24/725329.html

1、下载安装FTP

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz

tar zxvf proftpd-1.2.9.tar.gz

cd proftpd-1.2.9 

//设置安装目录/var/proftpd,配置文件目录/etc
./configure --prefix=/var/proftpd --sysconfdir=/etc 
make 
make install

2、 新建FTP账号(如u/pedar/edar888

groupadd edar

//设置/var/ftp目录为ftp的目录

useradd  edar  -g  edar  -d /var/ftp -s /sbin/nologin 

//设置skate用户的密码

passwd skate 

mkdir /var/ftp/upload 

//设置upload目录edar用户可写
chown edar.edar /var/ftp/upload 

3、 设置FTp(配置文件:/etc/proftpd.conf

vi /etc/proftpd.conf 

####具体配置如下###### 
ServerName "Test ftp server..." 
ServerType standalone 
DefaultServer on 
#端口 
Port 21 
Umask 022 
#最大线程数 
MaxInstances 30 
User skate 
Group skate 

#DNS反查 
UseReverseDNS off 
IdentLookups off 
#最大尝试连接次数 
MaxLoginAttempts 3 
#每用户线程 
MaxClientsPerHost 2 
#最大用户数 
MaxClients 20 

DirFakeUser On skate 
DirFakeGroup On skate 
DeferWelcome On 
#日志文件位置 
SystemLog /var/log/proftpd.log 
ServerIdent off 

#限制skate组的skate用户登录时不能切换到其他目录(只能呆在他的home目录) 
DefaultRoot ~ skate,skate 

#设置只允许192.168.0的用户登录 
#<limit LOGIN> 
#Order allow,deny 
#Allow from 192.168.0. 
#Deny from all 
#</limit> 

#设置只允许skate用户登录,否则系统用户也可以登录ftp 
#<limit LOGIN> 
#Order allow,deny 
#DenyUser !skate 
#</limit> 


#开起全盘的写权限 
<Directory /> 
AllowOverwrite on 
AllowStoreRestart on 
#允许FXP 
# AllowForeignAddress on 
<Limit All> 
AllowAll 
</Limit> 
</Directory> 

#设置skate用户在upload的限制 
#DELE删除权限 
#RNFR RNTO重命名权限 
#RMD XRMD移动目录权限 
<Directory /var/ftp/upload> 
<Limit DELE RNFR RNTO RMD XRMD > 
DenyUser skate 
</Limit> 
</Directory> 
#####结束###### 

4、 开启FTP端口

#查看端口

usr/sbin/iptables –L

 

vi /etc/sysconfig/iptables

加入FTP 21

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

 

重启防火墙:

service iptables restart

 

5、开启FTP服务

 

etc/proftpd.conf

killall proftpd

/var/proftpd/sbin/proftpd

 

 

七、 Apache 防DDOS模块mod_evasive的安装配置和使用

1、 下载地址:http://www.zdziarski.com/

2、 安装说明:http://garlics.blog.51cto.com/2682515/793869

报错:

 

错误解决方法:http://forum.maxmind.com/viewtopic.php?f=13&t=3685

Apache httpd 2.2以上版本需要将remote_ip  改为: client_ip

 

3、 配置httpd

<IfModule mod_evasive20.c>

DOSHashTableSize 3097

#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.

DOSPageCount 5 

#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.

DOSSiteCount 100

#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。

DOSPageInterval 2

#设置DOSPageCount中时间长度标准,默认值为1。

DOSSiteInterval 2

设置DOSSiteCount中时间长度标准,默认值为1。

DOSBlockingPeriod 3600

#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。

DOSEmailNotify **.@qq.com

#设置受到攻击时接收攻击信息提示的邮箱地址。有IP加入黑名单后通知管理员。

DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":

#IP加入黑名单后执行的系统命令。

DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"#手动创建目录mod_evasive,攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。锁定机制临时目录

#白名单 

DOSWhiteList 127.0.0.1 

DOSWhiteList 192.168.12.*

</IfModule>

4、 mod_evasive测试验证 

 

#/usr/sbin/ab -n 1000 -c 50 http://www.google.com:80/

 

八、 使用mod_bandwidth控制Apache的带宽

*mod_bandwidth可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。http://blog.51yip.com/apachenginx/917.html

1、下载地址:http://bwmod.sourceforge.net/

#  wget  http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz

2、 安装:# /usr/local/apache2/bin/apxs –I mod_bw.c

安装过程中报错:如下

 

解决:修改/home/mod_bw/mod_bw.c  添加定义

#vi mod_bw.c

#ifdef APR_MAJOR_VERSION //添加这行
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif
#endif //添加这行  重新编译就 ok

3、 设置Apacheconf文件:

LoadModule bw_module modules/mod_bw.so

<IfDefine HAVE_BANDWIDTH>

LoadModule bandwidth_module   modules/mod_bandwidth.so

</IfDefine> 

<Directory />

        BandWidthModule On

        ForceBandWidthModule On

        BandWidth     all 102400

        MinBandWidth all 51200

        MaxConnection all 50

        MaxConnection 192.168.50.29 5

        LargeFileLimit .jpg 100 10240

        ErrorDocument 510 /exceed_speed.html

        BandWidthError 510

</Directory>

 

4、 可以将IP线程限制加到虚拟主机里面

 

5、 测试:测试很简单,你按着F5,让他老涮新就行了,把最大连接数调小一点,一下就可以弹出503错误。  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值