动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 操作系统 > Linux教程
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Linux教程 ]的信息

本月文章推荐
.资深Linux程序员的开发经验谈.
.Linux下的常用软件列表.
.Linux系统下文件的压缩、打包与解.
.Lilo.conf (LILO 配置文件) 手册.
.NFS 和 NIS.
.加挂Linux操作系统中文件系统的小.
.Linux系统中静态库和动态库的生成.
.Linux管理员手册(9)--Keeping Ti.
.新手学堂:Linux系统下安装Flash.
.高手进阶:Redhat Linux上vsftpd.
.Linux下添加硬盘,分区,格式化详.
.Linux系统下Samba Server的配置文.
.Linux下Makefile的automake生成全.
.基于DNS的多机均衡负载的实现.
.Ubuntu应用程序菜单无法打开的解.
.Linux 指令篇:工作行程资讯与管理.
.运用RedHat的Kickstart升级Linux.
.Linux 99问(二).
.Linux环境下使用XFS文件系统.
.Linux2.4内核和2.6内核对Initrd处.

建立一个带宽、线程可控的下载型WEB网站

文章类别:Linux教程 | 发表日期:2005-4-15 |


APACHE+MYSQL+PHP+PROFTPD+MOD_LIMITIP+MOD_BANDWIDTH

一、前言

本人结合网上资料和个人的实践,利用一个下午的时间写出了这个适用于资源下载型网站的典型配置。这种配置的WEB网站初步实现了IP线程和线程流量的管理,同时proftpd用于上传资源,ssh用于主机管理。无疑这样可以自己支配宝贵的网络带宽,文章后面有个简单的防火墙配置仅供参考,我用的linux版本是redhat as 3.0。希望大家在看了这篇文章后多多和我交流, MAIL:LLZQQ@163.COM

二、软件版本

apache-1.3.29
mysql-4.0.16
php-4.3.4
proftpd-1.2.9
mod_limitipconn-0.04
mod_bandwidth-2.0.4

三、安装配置Mysql

# cd mysql-4.0.16

# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
--disable-maintainer-mode –with-mysqld-user=mysql --enable-large-files-without-debug

# make
# make install

添加mysql用户

# /usr/sbin/groupadd mysql

Then we create a user called mysql which belongs to the mysql group;

# /usr/sbin/useradd -g mysql mysql

安装数据库文件:

#./scripts/mysql_install_db

设置文件权限:

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

配置ld.so.conf

# vi /etc/ld.so.conf

增加下面一句:

/usr/local/mysql/lib/mysql

建立mysql的启动文件:

# cp support-files/mysql.server /etc/init.d/mysql
# cp support-files/my-medium.cnf /etc/my.cnf

以安全模式启动mysql:

# /usr/local/mysql/bin/mysqld_safe –user=mysql &

设置mysql的root密码:

# /usr/local/mysql/bin/mysqladmin -u root password new_password

把mysql服务设置为开机启动:

# chmod 755 /etc/init.d/mysql
# chkconfig –-add mysql
# chkconfig mysql on


四、安装配置PHP

#cd php-4.3.4

#./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql

#make
#make install

建立php的配置文件:

# cp php.ini-dist /usr/local/php/lib/php.ini

修改php的配置文件:

#vi /usr/local/php/lib/php.ini

doc_root= “/home/www/”
file_uploads=Off
register-golbals = On

建立测试php页面

# vi /home/www/test.php

<?php phpinfo(); ?>

# chomd 755 /home/www/test.php


五、安装apache-1.3.29

# tar zvxf apache_1.3.29.tar.gz
# cd apache_1.3.29
# cp ../mod_bandwidth.c mod_bandwidth.c

修改src/include/httpd.h 增大最大线程数
# vi src/include/httpd.h

修改其中的
#define HARD_SERVER_LIMIT 256

#define HARD_SERVER_LIMIT 2560

# ./configure --prefix=/usr/local/apache --enable-module=so
--enable-module=rewrite --enable-shared=max
--htdocsdir=/home/www --add-module=mod_bandwidth.c
--permute-module=BEGIN:bandwidth

# make
# make install

建立启动文件:

#cp apachectl /etc/init.d/httpd

修改apache的配置文件:

#vi /usr/local/apache/conf/httpd.conf

修改、添加和确认存在下列配置项:

addDefaultCharset GB2312 注释掉“addDefaultCharset ISO8859*”
ExtendedStatus On
LoadModule php4_module modules/libphp4.so
DirectoryIndex index.html index.html.var index.php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
LoadModule limitipconn_module libexec/mod_limitipconn.so
AddModule mod_limitipconn.c

安装mod_limitipconn-0.04

# tar xzf mod_limitipconn-0.04.tar.gz
# cd mod_limitipconn-0.04
# vi Makefile

APXS = /usr/local/apache/bin/apxs

# make
# make install

使用mod_limitip模块需要在httpd.conf中增加这个设置

<IfModule mod_limitipconn.c>
<Location /home/www/> 设置要控制的目录
MaxConnPerIP 2 限制每个IP的最大线程数
</Location>
</IfModule>

完成mod_bandwidth模块的安装

创建 mod_bandwidth 运行需要的目录

mkdir /var/apachebw
mkdir /var/apachebw/link
mkdir /var/apachebw/master
chmod -R 777 /var/apachebw

修改httpd.conf增加下列内容

<IfModule mod_bandwidth.c>
BandWidthDataDir "/var/apachebw/"
BandWidthModule on

<Directory /home/www>
BandWidth 192.168.0 0 200000 制局域网内用户的下载速度为200k
BandWidth all 51200 限制其他用户的下载速度为每秒 51200 字节
</Directory>

</IfModule>

修改/etc/init.d/httpd

# vi /etc/init.d/httpd

在三行之后添加如下内容:
#!/bin/sh
#
# Startup script for the Apache Web Server
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/log/httpd.pid
# config: /usr/local/apache/conf/httpd.conf

把apache服务设置为开机启动:

# chkconfig –-add httpd
# chmod 755 /etc/init.d/httpd
# chkconfig httpd on

六、安装porftpd-1.2.9

# tar –zxvf proftpd-1.2.9.tar.gz
# cd proftpd-1.2.9
# ./configure --prefix=/usr/local/proftpd
# make
# make install 

建立启动文件、把proftpd设置为开机启动

# cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd


# chkconfig --add proftpd
# chmod 755 /etc/rc.d/init.d/proftpd

# vi /etc/rc.d/init.d/functions
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/proftpd/
sbin"

# vi /etc/rc.d/init.d/proftpd
config: /usr/local/proftpd/etc/proftpd.conf
PATH="$PATH:/usr/local/proftpd/sbin"

# chkconfig proftpd on

建立帐号和目录:

# mkdir /home/test
# chmod 755 /home/test
# adduser -d /home/test -g ftp -s /sbin/nologin test
# passwd test

# adduser -d /home/upload -g ftp -s /sbin/nologin upload
# passwd upload

配置/usr/local/proftpd/etc/proftpd.conf,禁用匿名登陆

ServerName "llzqq's ftp service"
ServerType standalone
DefaultServer on

# Port 21 is the standard FTP port.
Port 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

MaxInstances 10

# Set the user and group under which the server will run.
User nobody
Group ftp

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.
<Directory />
AllowOverwrite on
</Directory>

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
RequireValidShell no

#Limit User of being enbled login ftp server
<Limit LOGIN>
AllowGroup ftp
DenyAll
</Limit>
#
<Directory /home/test>
<Limit WRITE>
DenyGroup ftp
</Limit>
TransferRate RETR 51200 group ftp
</Directory>
<Directory /home/upload>
<Limit RMD RNFR DELE RETR>
DenyGroup ftp
</Limit>
TransferRate STOR 256000 group ftp
</Directory>

ServerIdent off
MaxClientsPerHost 2
TimeoutIdle 600
TimeoutLogin 300
TimeoutNoTransfer 300
TimeoutStalled 300


七、reboot计算机

# shutdown –r now

打开浏览器输入:http://loaclhost/test.php

如果你看到了关于:mysql;apache;php的一大堆信息,恭喜,你的安装基本上成功了,下一步可以测试一下proftp和带宽的设置了。


八、建立一个简单有效的防火墙

export PATH=/sbin:/usr/sbin:/bin:/usr/bin

modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 >/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 >/proc/sys/net/ipv4/conf/all/log_martians

iptables -F
iptables -X
iptables -Z

iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP

##
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

## SYN-Flooding
iptables -N syn-flood
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP

## Make sure that new TCP connections are SYN packets
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

## HTTP
iptables -A INPUT -i eth0 -p tcp -d 0/0 --dport 80 -j ACCEPT

## IP packets limit
iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 3 -j ACCEPT

## FTP service
iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT

## SSH login
iptables -A INPUT -i eth0 -m mac --mac-source 00:00:00:00:00:00 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP

## Anything else not allowed
iptables -A INPUT -i eth0 -j DROP



九、附录:

mod_bandwidth选项简单说明:

BandWidthPulse
格式: BandWidthPulse <毫秒(千分之一秒>
默认: 1000
上下文: per server config

改变计算带宽的时间间隔,默认为1000毫秒(1秒)。使用更低的间隔可以获得
更精确的带宽控制,但消耗更多的CPU时间,反之亦然。

BandWidth
格式: BandWidth <domain|ip|all> <速率>
默认: 无
上下文: per directory, .htaccess

限制这个目录下文件下载的速率。

domain 指定来自哪个域的连接受到这个设置的影响。
ip 指定来自哪个ip地址(或者ip段)的连接受到影响。
all 所有连接都受到影响。

示例:

<Directory />
# 来自 dualface.com 的连接不限制下载速度
BandWidth dualface.com 0
# 来自 192.168.0.0/16(或者192.168.0) 网段的连接不限制下载速度
BandWidth 192.168.0.0/16 0
# 其他连接限制下载速度为每秒1024字节
BandWidth all 1024
# 越前面的设置优先权越高
</Directory>

LargeFileLimit
格式: LargeFileLimit <文件大小> <速率>
默认: 无
上下文: per directory, .htaccess

对于超过指定大小的文件,下载时使用的速率。如果速率设置0即不限制速度,
但下载速度仍然要受到BandWidth设置的影响。如果设置成-1,则完全不受影响。
通过设置不同的文件大小和速率,可以设置不同大小范围内文件的下载速度。

示例:

文件尺寸大于等于200千字节的文件,下载速率为每秒3072字节
LargeFileLimit 200 3072
LargeFileLimit 1024 2048
MaxConnection
格式: MaxConnection <连接数>
默认: 0 (不限制)
上下文: per directory, .htaccess

当超过指定连接数时,拒绝新的连接。

MinBandWidth
格式: MinBandWidth <domain|ip|all> <速率>
默认: all 256
上下文: per directory, .htaccess

设置最小带宽,默认为每秒256字节。根据BandWidth和LargeFileLimit设置的速
率。mod_bandwidth会计算允许的连接数。例如BandWidth为4096字节,而
MinBandWidth为1024字节,则最大并发连接数为4。

Mod_limitipconn选项简单说明:

<Location / > 设置要控制的目录
MaxConnPerIP 2 限制单IP并发连接数
NoIPLimit image/* 不受限制的文件类型
</Location>
<Location /mp3>
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video 仅用于限制的文件类型
</Location>


上一篇:轻松搞定RedHat 9命令行(CLI)下看各类图片 人气:9447
下一篇:ssh的用户登陆限制 人气:9101
点击此处浏览全部Linux的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-15 bBlog v0.7.6
2008-5-15 team论坛 v2.0.3 SQL
2008-5-15 team论坛 v2.0.3 ACC
2008-5-15 速博交友网站管理系统 2007 SQL专
2008-5-15 目录直读式图片展示系统 v2.0
2008-5-15 迅思科量具计量管理软件 MTMS v1
2008-5-15 图看网IP地址查询系统 v1.0
2008-5-15 幸福公寓同居交友 简洁版
2008-5-15 九天备案中系统
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報