分享
 
 
 

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

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

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

# 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中增加这个设置

设置要控制的目录

MaxConnPerIP 2 限制每个IP的最大线程数

完成mod_bandwidth模块的安装

创建 mod_bandwidth 运行需要的目录

mkdir /var/apachebw

mkdir /var/apachebw/link

mkdir /var/apachebw/master

chmod -R 777 /var/apachebw

修改httpd.conf增加下列内容

BandWidthDataDir "/var/apachebw/"

BandWidthModule on

BandWidth 192.168.0 0 200000 制局域网内用户的下载速度为200k

BandWidth all 51200 限制其他用户的下载速度为每秒 51200 字节

修改/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

# makeinstall

建立启动文件、把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.

AllowOverwrite on

# 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

AllowGroup ftp

DenyAll

#

DenyGroup ftp

TransferRate RETR 51200 group ftp

DenyGroup ftp

TransferRate STOR 256000 group ftp

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 <速率>

默认: 无

上下文: per directory, .htaccess

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

domain 指定来自哪个域的连接受到这个设置的影响。

ip 指定来自哪个ip地址(或者ip段)的连接受到影响。

all 所有连接都受到影响。

示例:

# 来自 dualface.com 的连接不限制下载速度

BandWidth dualface.com 0

# 来自 192.168.0.0/16(或者192.168.0) 网段的连接不限制[1] [url=http://www.chinamx.com.cn/Article/os/Linux/200605/20060530123117_28105_2.html][2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有