服务器安装配置说明
一、 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 环境安装好以后,开始配置MYSQL、APACHE、PHP、FTP等。为了统一起见,我们将软件包统一存放:
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
#查看linux的80端口是否关闭
[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端口(因为默认情况下,防火墙的80、3306、22端口是关闭的,这样的话对于客户机访问虚拟机上的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中设置一个虚拟目录,使之alias到xcache的控制页面,在 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. 常见错误及备注:
(1)linux启动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终端执行clear或top命令时出现:'xterm': unknown terminal type的错误》
13、对php.ini的优化,关闭不安全的 函数使用
http://hi.baidu.com/redhatd/item/3061c77c50e00b376f29f613
#打开安全模式
safe_mode = On
#下面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件
open_basedir = /www/
#禁止使用phpinfo和get_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/p:edar/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 –c –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、 设置Apache的conf文件:
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 环境安装好以后,开始配置MYSQL、APACHE、PHP、FTP等。为了统一起见,我们将软件包统一存放:
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
#查看linux的80端口是否关闭
[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端口(因为默认情况下,防火墙的80、3306、22端口是关闭的,这样的话对于客户机访问虚拟机上的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中设置一个虚拟目录,使之alias到xcache的控制页面,在 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. 常见错误及备注:
(1)linux启动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终端执行clear或top命令时出现:'xterm': unknown terminal type的错误》
13、对php.ini的优化,关闭不安全的 函数使用
http://hi.baidu.com/redhatd/item/3061c77c50e00b376f29f613
#打开安全模式
safe_mode = On
#下面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件
open_basedir = /www/
#禁止使用phpinfo和get_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/p:edar/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 –c –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、 设置Apache的conf文件:
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错误。