歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 建立一個帶寬、線程可控的下載型WEB網站

建立一個帶寬、線程可控的下載型WEB網站

日期:2017/2/27 9:42:21   编辑:更多Linux
設置文件權限: # 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 <domainipall> <速率> 默認: 無 上下文: 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 <domainipall> <速率> 默認: 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>




Copyright © Linux教程網 All Rights Reserved