資深團隊,提供專業防水工程服務,獨家壁癌防治技術 根本解決壁癌問題,歡迎來電免費估價 | 專業技術稱霸業界!提供各種油漆工程、優質油漆工程 效率佳、配合度高,歡迎洽詢 |
[教學]apache mod cband 頻寬限制 |
房東:新手 發表時間:2007-02-16 | [檢舉] |
前言 升級源碼樹 安裝cvsup 升級系統源碼樹及ports 重新編譯內核 優化編譯環境 升級操作系統 升級配置文件 重新編譯內核 重新啟動服務器 優化FREEBSD 檢查升級情況 打開防火牆 優化內核參數 安裝防火牆 安裝數據庫MYSQL 安裝mysql40-server和mysql40-client 安裝phpmyadmin 安裝FTP服務器 安裝ftp軟件(使用pure-ftpd/) 安裝pureftpd_php_manager 安裝APACHE服務器 安裝apache13-modssl 安裝PHP語言 安裝php 安裝ZendOptimizer 安裝APACHE其它整合軟件 安裝mod_bandwidth 安裝mod_fastcgi 安裝mod_gzip 安裝mod_limitipconn 安裝mod_perl 安裝mod_throttle 安裝mod_watch 安裝APACHE第三方軟件 安裝限制每個虛擬主機的並發數軟件 安裝防止ddos攻擊的軟件 其它需要安裝的軟件姅 安裝MRTG 安裝net-snmp 安裝mrtg 設置虛空間的mrtg和流量分析 安裝BIND 9 安裝bind9 安裝郵件服務器 安裝qmail郵件系統 安裝WEBMIN和USERMIN 安裝webmin 安裝usermin 結束語 前言 FREEBSD系統是一種非常 UNIX、非常 Free、非常 BSD -- UNIX 的操作系統,因為它過 UNIX化,太過專業化了,教很多新手無從下手學習。我也是從幾年前開始學習FREEBSD, 並且在王波寫的<FREEBSD使用大全>指導下,正式使用FREEBSD的。在這段使用和管理過 程中,自己也積累了不少文章和實戰經驗。為了讓更多的朋友喜歡上FREEBSD,喜歡上 UNIX,我特地做了幾次升級和優化實例,結合自己管理服務器空間的經驗寫出此文,希望 在此拋磚引玉。 本文的目的是使新手可以根據此文章的步驟和方法,架設一台專業,高效,安全的 FREEBSD出來,並且可以立即投入實際運用,故文章中對運用及命令的使用多于理論化的 知識點的描述,如果您不明白命令有何作用,建議您查查相關資料。 本文假設已經架設好或者新安裝了一台FREEBSD系統主機。 本文中引用了很多FREEBSD官方站數據及網上數據,還有更多的是自己在實際工作中的經 驗,當然,里面的參數並不一定完全適合您,所以請您在使用時,盡可能根據您的實際需 要調整一些參數,使您的SERVER的性能完全的發揮出來。本文只是一個總的線索,如果我 要拆開來一個一個詳細解釋,我想會花更多的篇幅來寫的,因為我忙著04年1月的自考, 只寫了實際中的運作情況,請各位朋友見諒。 升級源碼樹 安裝cvsup 進入:/usr/ports/net/cvsup make clean make deinstall make install make clean 即可 升級系統源碼樹及ports 更新/usr/share/examples/cvsup目錄下stand-cvsup和ports-cvsup文件,並執行 cvsup 每g 每L2 standard-supfile和cvsup 每g 每L2 ports-cvsup兩個文件,升級ports 樹姅 重新編譯內核 優化編譯環境 更新/etc/make.conf文件,做適當的編譯優化,我的CPU是Intel的: CPUTYPE=i686 CFLAGS= -O3 -pipe COPTFLAGS= -O3 -pipe 升級操作系統 進入/usr/src 執行make world 整個過程很久,需要2小時左右。 升級配置文件 執行mergemaster升級配置文件,在此過程中,需要按i以便系統執行升級姅 重新編譯內核 到/sys/i386/conf里面,cp GENERIC onlinecq,再vi onlinecq優化內核,注意加入下面 的內容 #disable ctrl+alt+delete options SC_DISABLE_REBOOT #quota limit options QUOTA #ipfw support options IPFIREWALL options DUMMYNET options HZ=3000 options IPDIVERT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPSTEALTH options TCP_DROP_SYNFIN options IPFIREWALL_DEFAULT_TO_ACCEPT options ICMP_BANDLIM options ACCEPT_FILTER_DATA options ACCEPT_FILTER_HTTP #ipfilter support #options IPFILTER #options IPFILTER_LOG #options IPFILTER_DEFAULT_BLOCK 再執行: /usr/sbin/config onlinecq cd ../../compile/onlinecq make depend make make install 重新啟動服務器 到此為止,服務器操作系統及內核升級成功\ reboot 優化FREEBSD 檢查升級情況 使用ssh進入系統,使用uname 每a 可以查到是否升級成功\姅 打開防火牆 更新rc.conf里面的設置,加上: #enable_quotas=\"YES\" #check_quotas=\"YES\" firewall_enable=\"YES\" firewall_script=\"/etc/rc.firewall\" firewall_type=\"/etc/ipfw.rules\" #create it! firewall_quiet=\"NO\" firewall_logging_enable=\"YES\" log_in_vain=\"NO\" tcp_drop_synfin=\"NO\" tcp_restrict_rst=\"YES\" icmp_drop_redirect=\"YES\" 優化內核參數 修改系統內核參數,實現微調:vi /etc/sysctl.conf kern.ipc.somaxconn=8192 kern.ipc.maxsockbuf=2097152 kern.maxfilesperproc=32768 kern.maxfiles=65536 kern.securelevel=-1 net.inet.tcp.sendspace=65536 net.inet.tcp.recvspace=32768 net.inet.udp.maxdgram=57344 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=0 net.inet.ip.redirect=0 net.inet6.ip6.redirect=0 net.inet.icmp.icmplim=100 net.inet.tcp.always_keepalive=0 net.inet.tcp.delayed_ack=0 net.inet.tcp.log_in_vain=0 net.inet.udp.log_in_vain=0 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 net.local.stream.sendspace=65535 net.local.stream.recvspace=32768 net.inet.ip.fastforwarding=1 vfs.vmiodirenable=1 安裝防火牆 防火牆在上面已經編譯入了內核,並且在上面的rc.conf里面已經打開了,所以在此只要 設置一下即可! 允許\所有IP通過,免得把自己給擋在外面了。 ipfw add all from any to any 其它規則根據實際情況來做,如果您想系統每次啟動都使用上一次的規則,可以把這些內 容加到: vi /etc/ipfw.rules 里面,語法規則同ipfw。 安裝數據庫MYSQL 安裝mysql40-server和mysql40-client 進入/usr/ports/databases/mysql40-server 執行: make clean make deinstall make WITH_OPENSSL=yes WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes install 或者使用下面可參考的編譯參數:BUILD_STATIC=yes 編譯成靜態執行版本 make clean 更改mysql的root密碼: mysqladmin 每uroot 每p password 123456 生成/etc/my.cnf,使用如下命令: vi /etc/my.cnf [client] #password = your_password port = 3306 socket = /tmp/mysql.sock [mysqld] skip-innodb skip-locking skip-networking set-variable = port=3306 set-variable = socket=/tmp/mysql.sock set-variable = back_log=50 set-variable = connect_timeout=3 set-variable = key_buffer=128M set-variable = max_connections=1000 set-variable = max_allowed_packet=1M set-variable = net_buffer_length=8K set-variable = wait_timeout=3 set-variable = read_buffer_size=1M set-variable = sort_buffer_size=1M set-variable = table_cache=256 set-variable = myisam_sort_buffer_size=32M set-variable = log_slow_queries=/var/log/log_slow_queries.log #log-bin server-id = 1 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout 安裝phpmyadmin 注意,此步驟需要在apache和php之後再執行 進入/usr/ports/databases/phpmyadmin 執行: make clean make deinstall make install make clean 新建立一個system的數據庫備用。 安裝FTP服務器 安裝ftp軟件(使用pure-ftpd/) 進入/usr/ports/ftp/pufe-ftpd 執行: make clean make deinstall make WITH_MYSQL=1 install 或者使用下面可參考的編譯參數:WITH_LANG=simplified-chinese 使用簡體中文語言包 make clean 配置pure-ftpd,主要需要做以下的工作: cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf cp /usr/local/etc/pureftpd-mysql.conf.sample /usr/local/etc/pureftpd- mysql.conf 再修改/usr/local/etc/pure-ftpd.conf的如下部份為: NoAnonymous yes MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf 再修改/usr/local/etc/pureftpd-mysql.conf的如下部份為您的設定值: # Mandatory : user to bind the server as. MYSQLUser demo # Mandatory : user password. You must have a password. MYSQLPassword demo # Mandatory : database to open. MYSQLDatabase demo 再進入使用mysql 每uroot 每p123456 進入mysql的文本方式姅 使用如下命令建立新表: use system; DROP TABLE IF EXISTS users; CREATE TABLE users ( User varchar(16) NOT NULL default \'\', status enum(\'0\',\'1\') NOT NULL default \'0\', Password varchar(64) NOT NULL default \'\', Uid varchar(11) NOT NULL default \'-1\', Gid varchar(11) NOT NULL default \'-1\', Dir varchar(128) NOT NULL default \'\', ULBandwidth smallint(5) NOT NULL default \'0\', DLBandwidth smallint(5) NOT NULL default \'0\', comment tinytext NOT NULL, ipaccess varchar(15) NOT NULL default \'*\', QuotaSize smallint(5) NOT NULL default \'0\', QuotaFiles int(11) NOT NULL default 0, PRIMARY KEY (User), UNIQUE KEY User (User) ) TYPE=MyISAM; 安裝pureftpd_php_manager 下載pureftpd_php_manager.zip 解壓並放到指定的目錄里面,比如: /usr/local/www/data chmod 每R 755 /usr/local/www/data/pureftpd_php_manager 再加入一個普通用戶和一個群組,以供ftp使用: pw groupadd ftpusers pw useradd ftpuser 每g ftpusers 每s /sbin/nologin 記住他們的uid和gid號,備用! 進入並編輯pureftp.config.php文件 更改里面的如下行: $PUREFTP_CONFIG_FILE = \'/usr/local/etc/pureftpd-mysql.conf\';^M $DefaultUser = \"ftpuser\"; # Default User Logon^M $DefaultPass = \"\"; # Default User Password^M $DefaultUid = \"1002\"; # Default User ID ( must be a re al user acct )^M $DefaultGid = \"1001\"; # Default Group ID ( must be a r eal group acct )^M $DefaultDir = \"/home\"; # Default User Dir ( use /./ at the end to chroot )^M $DefaultUL = \"0\"; # Default Upload Throttl e ( 0 disables it )^M $DefaultDL = \"0\"; # Default Download Throt tle ( 0 disables it )^M $Defaultip = \"*\"; # Default IP restriction s ( * = any IP )^M $DefaultQS = \"200\"; # Default Quota Size ( 0 disable s it )^M $Defaultcmt = \"\"; # Default Comment for us er^M ^M // UA^M $DefaultQF = \"0\"; # Default Quota Files ( 0 disabl 安裝APACHE服務器 安裝apache13-modssl 進入/usr/ports/www/apache13-modssl 執行: make clean make deinstall make WITH_APACHE_SUEXEC=yes APACHE_HARD_SERVER_LIMIT=1024 APACHE_PERF_TUNING=yes install 編譯時帶上suexec和優化。 Make clean 取消所有Options里面的Indexes,禁止瀏覽目錄及文件。 設置KeepAlive Off 安裝PHP語言 安裝php 進入/usr/ports/www/mod_php4 執行: make clean make deinstall make install 編譯常用的選項即可,一定記得選擇上mysql和gd。 Make clean 安裝完成後,在/usr/local/etc/apache/httpd.conf里面,加入如下內容: AddType application/x-httpd-php .php .php3 .php4 .phtml AddType application/x-httpd-php-source .phps 替換DirectoryIndex細節為: DirectoryIndex index.html index.htm index.wml index.cgi index.shtml index.jsp index.js index.jp index.php4 index.php3 index.php index.phtml default.htm default.html home.htm 再cp php.ini-recommended /etc/php.ini 以及修改php.ini里面的參數 vi /etc/php.ini 修改下面兩處為: register_globals = On magic_quotes_gpc = On 安裝ZendOptimizer 先下載ZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz 再執行 tar zxvf ZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz cd ZendOptimizer-2.1.0b-FreeBSD4.0-i386 sh setup 即可完成傻瓜式的安裝。 注意:此時您的php.ini配置文件,一般會移到 /usr/loca/Zend/etc/php.ini 並且底部會增加以下幾行: [Zend] zend_optimizer.optimization_level=15 zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2.1.0 zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2.1.0 zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so 您可以根據需要,改變15為1023,來提升加速的等級。 安裝APACHE其它整合軟件 安裝mod_bandwidth 進入/usr/ports/www/mod_bandwidth 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule bandwidth_module libexec/apache/mod_bandwidth.so AddModule mod_bandwidth.c make clean 語法及作用: * BandWidthModule 該模塊的開關,可以對每個Server進行配置 * BandWidthPulse 設定計時單位,MS(微秒),建議為:1000000 (1秒) * BandWidth 可以針對特定來源的對象控制流,rate以字節為單位,但當rate為0時,為不限制流速。 例子: BandWidth ecp.fr 0 BandWidth 138.195 0 BandWidth all 1024 * LargeFileLimit 當傳送一個大于等于filesize KB大小的檔時,設定一個最大流速(字節/秒),當rate 為0的時候,不限速。 例子: LargeFileLimit 200 3072 LargeFileLimit 1024 2048 以上例子設定小于200KB的檔將不會被限制流速,大小在200K到1024K之間的檔將會被 限速3072 B/s,大于1024KB的文件將會被限速2048 B/s. * MinBandWidth 設定每個連接傳送數據的基本帶寬佔用,以Byte為單位。默認值:256 B/s。 當rate設定為0時,使用默認帶寬限制。 安裝mod_fastcgi 進入/usr/ports/www/mod_ fastcgi 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule fastcgi_module libexec/apache/mod_fastcgi.so AddModule mod_fastcgi.c AddHandler fastcgi-script fcgi fcgi fpl make clean 安裝mod_gzip 進入/usr/ports/www/mod_gzip 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule gzip_module libexec/apache/mod_gzip.so AddModule mod_gzip.c make clean 安裝mod_limitipconn 進入/usr/ports/www/mod_limitipconn 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule limitipconn_module libexec/apache/mod_limitipconn.so AddModule mod_limitipconn.c make clean 安裝mod_perl 進入/usr/ports/www/mod_perl 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule perl_module libexec/apache/mod_perl.so AddModule mod_perl.c make clean 安裝mod_throttle 進入/usr/ports/www/mod_throttle 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule throttle_module libexec/apache/mod_throttle.so AddModule mod_throttle.c make clean 安裝mod_watch 進入/usr/ports/www/mod_watch 執行: make clean make deinstall make install 編譯完成後,一定記得 vi /usr/local/etc/apache/httpd.conf LoadModule watch_module libexec/apache/mod_watch.so AddModule mod_watch.c make clean 安裝APACHE第三方軟件 安裝限制每個虛擬主機的並發數軟件 mod_vhost_limit 安裝: apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so 在 httpd.conf 加入: LoadModule vhost_limit_module libexec/mod_vhost_limit.so AddModule mod_vhost_limit.c 配置: MaxClients 150 ExtendedStatus On NameVirtualHost * ServerName server1 DocumentRoot /some/where/1 MaxVhostClients 100 ServerName server2 DocumentRoot /some/where/2 MaxVhostClients 30 ServerName server3 DocumentRoot /some/where/3 其中: server1 被限制為 100 個並發線程數。 server2 被限制為 30 個並發線程數。 server3 沒有被限制。 注:需 mod_status 的 ExtendedStatus On 支持!! 如超出限制的並發數在客戶端就會出現503錯誤: Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. ------------------------------------------------------------------------------ -- Apache/1.3.27 Server at server1 Port 80 在 error_log 中將會有類似以下的錯誤提示: [Mon Jun 23 15:22:24 2003] [error] client access to server1 deferred, MaxVhostClients 100 exceeded 安裝防止ddos攻擊的軟件 dosevasive1.8.tar.gz 安裝方法: tar zxvf mod_dosevasive.tar.gz cd dosevasive/ /usr/local/apache/bin/apxs -i -c mod_dosevasive.c vi /usr/local/apache/conf/httpd.conf 加入 LoadModule dosevasive_module libexec/mod_dosevasive.so AddModule mod_dosevasive.c DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 其它需要安裝的軟件姅 可選擇安裝的有: CPU溫度監控軟件 CPU負載監控軟件 封包流量監控軟件 …… 安裝MRTG 安裝net-snmp 進入/usr/ports/net/net-snmp 執行: make clean make deinstall make install make clean 安裝mrtg 進入/usr/ports/net/mrtg 執行: make clean make deinstall make install make clean 設置虛空間的mrtg和流量分析 生成流量控制㷌: /usr/local/sbin/apache2mrtg.pl /usr/local/etc/apache/httpd.conf > /usr/local/etc/apache/mod_watch.cfg 修改此文件,並且加如下頭部信息: WorkDir:/usr/local/www/data/mrtg Options[_]: growright,bits #Language: gb2312 #Title[^]: Traffic Analysis for PageTop[^]: Traffic Stats for OnlineCQ.COM User -------------------------------------------------------------------------------- #PageTop[$]: Contact QQ: 151482576 -------------------------------------------------------------------------------- PageFoot[^]: WWW.OnlineCQ.COM MSN: [email protected] QQ:151482576 保證WorkDir目錄可以被瀏覽器訪問,並且目錄存在!如果不是,您可以自己修改! 執行一下,看是否正確: /usr/local/sbin/mrtg /usr/local/etc/apache/mod_watch.cfg 如果有錯誤,多執行幾次即可! 再將此加入到排程里面,15分鐘自動執行一次: vi /etc/crontab */15 * * * * root /usr/local/bin/mrtg /usr/local/e tc/apache/mod_watch.cfg 安裝BIND 9 安裝bind9 這是一套域名解析系統,可以讓您的SERVER做DNS SERVER,非常不錯的! 進入/usr/ports/dns/bind9 make clean make deinstall make install make clean 然後再記得修改name.conf 等配置文件,具體的內容太復雜,建議看一下其它專門講授 這方面的書籍。 安裝郵件服務器 安裝qmail郵件系統 使用iceblood的安裝包,傻瓜式的安裝就可以了!注意第一次安裝時,多看幾遍它的說 明,不要弄錯了! 安裝完成後,自己再加上qmailadmin,它可以讓您在一台主機上面,開多個域名的企業郵 局! 安裝WEBMIN和USERMIN 安裝webmin 先下載webmin最新版 再解壓: tar zxvf webmin-1.100.tar.gz 進入目錄開始安裝: cd webmin-1.100 sh setup.sh 安裝時使用它的默認設置即可,自己要設置好管理員密碼,這一定要注意保密! 並且請設置為自動啟動,以便以後可以通過此來管理。 安裝完成後,可以通過如下方式訪問: http://IP:10000/ 注意,默認埠是10000 安裝usermin 先下載usermin最新版 再解壓: tar zxvf usermin-1.030.tar.gz 進入目錄開始安裝: cd usermin-1.030 sh setup.sh 安裝時使用它的默認設置即可。 安裝完成後,可以通過如下方式訪問: http://IP:20000/ 注意,默認埠是20000。 Usermin會自動和webmin整合的,使用webmin的管理員密碼,並且可以在webmin里面啟動 它。 結束語 至此為止,一般可以實際運作的FREEBSD系統就建立起來了,您可以reboot一下,讓最新 的設置及軟件生效。 如果在安裝過程中出現錯誤,您可以先檢查完錯誤,再接著安裝下去。或者你可以選擇你 感興趣的某些部份安裝! 當然因為時間倉促,涉及到的知識太廣,加上本人能力有限,其中錯誤在所難免,懇請各 位讀者提出來,大家共同提高,共同進步! |
租屋網 提供租屋資訊、租屋廣告刊登、房屋託租、房客尋屋、租屋配對、電子地圖、房屋資料上傳 明日黃金屋 買屋、賣屋、租屋、出租、房東租屋刊登、並提供租屋、最專業的服務、最安全親切的交易。 搬家公司 本公司為政府立案專業搬家公司,我們秉持客戶至上,正派經營理念,在大台北縣市一直有口碑 |