您的位置:首页 > 运维架构 > Apache

apache,php, mysql, php加速, mod_evasive防ddos for linux

2009-09-15 13:11 435 查看
(要自已编义安排下面软件,先用rpm -q 软件,如果以有,要先删除 rpm -e --nodeps 软件)

1
MySQL]
# cd /home/tmp (进入压缩包所在目录)
# groupadd mysql (如果还没有建立mysql组)
# useradd -g mysql mysql (如果还没有在mysql组中建立mysql用户)
# tar -zxvf mysql-5.0.37.tar.gz (解压mysql源码,bz2压缩包请用“tar -jvxf 文件名”指令)
# cd mysql-5.0.37 (进入解压目录)
# ./configure --prefix=/usr/local/mysql5 (prefix参数指明mysql安装目录)
(如果出现这个configure: error: No curses/termcap library found错误 加上 ./configure --with-named-curses-libs=/usr/lib/libncursesw.so.5就行)

# make
# make install
# /usr/local/mysql5/bin/mysql_install_db --user=mysql (初始化数据库)

# cp support-files/my-medium.cnf /etc/my.cnf (复制mysql配置文档到/etc目录)
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 700 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld

# cd /usr/local/mysql5 (进入mysql安装目录)
# chown -R root . (不要漏了后面的“.”)
# chown -R mysql var (如果有些权限提示问题,注意此项权限)
# chgrp -R mysql . (不要漏了后面的“.”)

# /usr/local/mysql5/bin/mysqld_safe --user=mysql & (启动mysql,出现mysqld ended时点击回车,回到命令行)
# /usr/local/mysql5/bin/mysqladmin -u root password 123456 第一次设密码
{############################
1.这是没启动mysql的守护进程,执行service mysql start就行了(不成功)

出现Starting MySQL.Manager of pid-file quit without updating fi[FAILED]的报错
打开/etc/selinux/config把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器后问题就得以解决。(我解决问题)

2.mysql5.1.30 初次启动会出现Starting MySQL.Manager of pid-file quit without updating fi[FAILED]的报错,需要注释/etc/my.cnf里的skip-federated注释掉即#skip-federated就OK了!
####################}

2
安装gdbm-1.8.3.tar.gz 来支持apache支持rewrite攻能的模块
tar -zxvf gdbm-1.8.3.tar.gz 过入目录
./configure --prefix=/usr/local/gdbm
make
make install

3
tar -zxvf apache1.34.tar.gz
  mv apache1.34 apache
cd apache
  ./configure --prefix=/usr/local/apache --enable-module=rewrite --enable-shared=max --enable-module=so
#这里我们通过enable-module参数告诉设置脚本,我们需要启动so和rewrite模块,enable-shared=max 这个参数的作用时编译apache时,把 除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内
  make
  make install 
  安装apache至/usr/local/apache --enable-module=so并配置apache支持dso方式
  
4
php
  
  tar -zxvf php-5.0.4.tar.gz
  mv php-5.0.4 php
  cd php
  ./configure --prefix=/usr/local/php5 --with-apxs=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/lib {--enable-track-vars --with-xml} --with-mysql=/usr/local/mysql5
  make
  make install
  其中apache和mysql是根据你安装的目录名变,我的是 =/usr/local/apache2/bin/apxs 和MySQL
  
cp php/php.ini-dist /usr/local/lib/php.ini

以dso方式安装php至/usr/local/php 设置配置文件目录为/usr/local/lib 开启mysql,xml支持

5
.配置  
  vi /usr/local/apache/conf/httpd.conf
  对apache做如下配置
  #将ServerAdmin mailto:linux@linuxidc.com一行改为您的邮箱地址 

  #DocumentRoot "/home/httpd/html/" 此处为html文件主目录  
  # 同上  
  #Options FollowSymLinks MultiViews 为安全起见,去掉"Indexes"   
  #
  DirectoryIndex default.php default.phtml default.php3 default.html default.htm
  #
  #设置apache的默认文件名次序  
  AddType application/x-httpd-php .php .phtml .php3 .inc
   AddType application/x-httpd-php-source .phps
  #设置php文件后缀  
  存盘退出   
  vi /usr/local/lib/php.ini
  #register-golbals = On (默认是off,可以不用设置比较安全)
  存盘退出

启动服务 及其他可能出现要处理的。
  /usr/local/apache/bin/apachectl start

6
eAccelerator(eacc)安装配置:eAccelerator 可以明显降低CPU和内存等资源占用
使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍

a) 安装
先去eAccelerator官方下载最新版的源码包:eaccelerator-0.9.5.1.tar
#tar -zxvf tar zxvf eaccelerator-0.9.5.1.tar
#cd eaccelerator-0.9.5.1
#export PHP_PREFIX="/usr/local/php" (把PHP安装目录导入到环境变量)
#$PHP_PREFIX/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
#make
#make install、
b) ini文件配置
安装完成,开始配置php.ini文件,eAccelerator提供了两种配置和调用方式,分别如下。
安装为 Zend extension 模式:
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
注:模块的具体位置(根据自已的系统路径而定);
eaccelerator.shm_size="16" 注:共享内存大小;
eaccelerator.cache_dir="/home/eaccelerator" 注:缓存目录;
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/eaccelerator_log"
eaccelerator.filter=""

# mkdir /home/eaccelerator
# chmod 777 /home/eaccelerator
注:创建缓存目录池,权限是777

7
mod_evasive防ddos攻击模块安装配置
对于Apache 1.x 请用下面的编译方法( mod_evasive.c(Apache 1.x用之) mod_evasive20.c (Apache 2.x用之))

#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
#/usr/sbin/apxs -iac mod_evasive.c

httpd.conf 会有这段
LoadModule evasive_module libexec/mod_evasive.so

Apache v1.x 版本中,要加入;

<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>

如果您不知道把这些插入到哪,用下面的办法做也是可以的;

在/etc目录中创建一个文件,比如mod_evasive.conf;
#touch /etc/mod_evasive.conf
然后把根据自己的Apache版本来加入相应的内容;
接着我们再修改 httpd.conf ,在最后一行加入
Include /etc/mod_evasive.conf

对mod_evasive测试验证 ;

a)防DDOS的模块做好后,我们可以要验证,可以用Apache 自带的ab工具,比如;

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

注:上面的例子的意思是,如果您的服务器是google的WEB服务器,我们要发送数据请求包,总共1000个,每次并发50个;

b)另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用

#perl test.pl

是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看;

因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS攻击,会在/tmp产生日志。日志的文件是以 dos-开头的;

mod_evasive 的高级配置;

如果想更改一些适合自己的参数,有些必要的参数,并不是通过配置文件修改就一下起作用的,我们要修改源码包中的;
mod_evasive.c

#define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size
#define DEFAULT_PAGE_COUNT 2 // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT 50 // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL 1 // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL 1 // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR "/tmp" // Default temp directory

比如修改日志存放目录,就把/tmp改成别的目录。
如果您在这里更改了参数,不要忘记修改Apache 配置文件中关于mod_evasive 的参数/etc/mod_evasive.conf;

如果您想加入一些其它的参数,请查阅源码包中的README.

8
取得最新版本的 perl,
  tar -zxvf stable.tar.gz
在目录 perl-5.6.0 下安装 perl:
  rm -f config.sh Policy.sh
  sh Configure -de
  make
  make test
  make install
  config.sh Policy.sh 为以前安装时的配置文件,新安装或升级安装时需要将其删除。
  sh Configure -de 安装使用默认配置,一般而言将会ok 。
  安装完成后 perl 所在目录为 /usr/local/lib/perl5, perl 执行文件在 /usr/local/bin 中

9
以上服务安装后常用的命令及修改设置方法:

mysql设置密码和修改密码:
/usr/local/mysql/bin/mysqladmin -u root password 123456 第一次设密码。
mysqladmin -u root -p password mypasswd 修改密码
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。

mysqladmin -u <username> -p flush-tables(出现table is only read时用这个 数据库权限变成700 归属mysql用户)

就是mysql5导出的有default-charact的设置,mysql4不支持,需要加skip-opt参数,如:
mysqldump -uroot -p --default-character-set=gbk -skip-opt databse > hx.sql

一般的数据导出用 mysqldump -uroot -p密码 database > database.sql //导出数据。

mysqldump -uroot -p密码 --opt 数据名 表名 > /home/2009_5_29.sql 备份数据中的表

mysqldump -uroot -p密码 --databases 数据名1 数据名2 > /home/2009_5_29.sql 备份都个数据库

mysql -u root -p book <book.sql //其中book为数据库

数据结构和内容还是有问题,用myisamchk查

cd /path/apache/src/modules/standard/
-------/usr/local/apache/bin/apxs -i -a -c mod_rewrite.c
或用--/usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.so

gcc -shared -o mod_rewrite.so mod_rewrite.lo
gcc -shared -o mod_rewrite.so mod_rewrite.lo -lgdbm

./configure --prefix=/usr/local/apache --enable-module=shared --enable-spling=shared --enable-shared=max --enable-module=so (apache 是2.0时的规则)

apache动态加载模块:
如加载mod_vhost_alias.c
进入/path/apache/src/modules/standard/
方法:使用/usr/local/apache/bin/apxs –i –a –c 模块名称.c 即可生成.so文件
拷到/usr/local/apache/libexec/下即可,并在apache主配文件中添加。
格式:LoadModule foo_module libexec/mod_foo.so
参数含义:
--enable-so:激活动态加载模块功能(这是apache要加载动态模块的先前要加的规则)

myisamchk

使用myisamchk必须暂时停止MySQL服务器。例如,我们要检修discuz数据库。执行以下操作:

# service mysql stop (停止MySQL);
# myisamchk -r /var/lib/mysql/discuz/*MYI
# service mysql start
myisamchk会自动检查并修复数据表中的索引错误。

设置apache开机启动输入
ln -s /server/apache/bin/apachectl /etc/rc3.d/S80apache
ln -s /server/apache/bin/apachectl /etc/rc5.d/S80apache
ln -s /server/apache/bin/apachectl /etc/rc0.d/K80apache
ln -s /server/apache/bin/apachectl /etc/rc6.d/K80apache
解释:/server/apache/ 是apache的安装路径
/etc/rc3.d/S80apache 把文件S80apache放入目录/etc/rc3.d中
S 开始的意思就是start
K 停止
80 端口

另一种办法
echo "/usr/local/apache/bin/apachectl start" >>/etc/rc.local 设置开机启动

grep -v "#" /usr/local/apache/bin/apachectl > /etc/init.d/apache
  用vi编辑Apache服务控制脚本/etc/init.d/apache:
    vi /etc/init.d/apache
  在文件最前面插入下面的行,使其支持chkconfig命令:
    #!/bin/sh
  # chkconfig: 2345 85 15
  # description: Apache is a World Wide Web server.
  保存后退出vi编辑器,执行下面的命令增加Apache服务控制脚本执行权限:
    chmod +x /etc/init.d/apache
  执行下面的命令将Apache服务加入到系统服务:
    chkconfig --add apache
  执行下面的命令检查Apache服务是否已经生效:
    chkconfig --list apache
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: