|
|
| FREEBSD升级及优化全攻略 | | 发布日期:2005-3-28 浏览:373次 | | 关键字: | FreeBSD升级及优化全攻略 ──文 重庆.樊礼(梦飞)
欢迎转载﹐本文遵循GNU协议规则﹗
前言2 升级源码树3 安装cvsup3 升级系统源码树及ports3 重新编译内核3 优化编译环境3 升级操作系统3 升级配置文件4 重新编译内核4 重新启动服务器5 优化FREEBSD5 检查升级情况5 打开防火墙5 优化内核参数5 安装防火墙6 安装数据库MYSQL7 安装mysql40-server和mysql40-client7 安装phpmyadmin8 安装FTP服务器9 安装ftp软件(使用pure-ftpd/)9 安装pureftpd_php_manager10 安装APACHE服务器11 安装apache13-modssl11 安装PHP语言12 安装php12 安装ZendOptimizer12 安装APACHE其它整合软件13 安装mod_bandwidth13 安装mod_fastcgi14 安装mod_gzip14 安装mod_limitipconn15 安装mod_perl15 安装mod_throttle16 安装mod_watch16 安装APACHE第三方软件17 安装限制每个虚拟主机的并发数软件17 安装防止ddos攻击的软件18 其它需要安装的软件﹔18 安装MRTG19 安装net-snmp19 安装mrtg19 设置虚空间的mrtg和流量分析19 安装BIND920 安装bind920 安装邮件服务器21 安装qmail邮件系统21 安装WEBMIN和USERMIN21 安装webmin21 安装usermin22 结束语22
前言
FREEBSD系统是一种非常UNIX、非常Free、非常BSD--UNIX的操作系统,因为它过UNIX化,太过专业化了,教很多新手无从下手学习。我也是从几年前开始学习FREEBSD,并且在王波写的<FREEBSD使用大全>指导下,正式使用FREEBSD的。在这段使用和管理过程中,自己也积累了不少文章和实战经验。为了让更多的朋友喜欢上FREEBSD,喜欢上UNIX,我特地做了几次升级和优化实例,结合自己管理服务器空间的经验写出此文,希望在此抛砖引玉。 本文的目的是使新手可以根据此文章的步骤和方法,架设一台专业,高效,安全的FREEBSD出来,并且可以立即投入实际运用,故文章中对运用及命令的使用多于理论化的知识点的描述,如果您不明白命令有何作用,建议您查查相关资料。 本文假设已经架设好或者新安装了一台FREEBSD系统主机。 本文中引用了很多FREEBSD官方站数据及网上数据,还有更多的是自己在实际工作中的经验,当然,里面的参数并不一定完全适合您,所以请您在使用时,尽可能根据您的实际需要调整一些参数,使您的SERVER的性能完全的发挥出来。本文只是一个总的线索,如果我要拆开来一个一个详细解释,我想会花更多的篇幅来写的,因为我忙着04年1月的自考,只写了实际中的运作情况,请各位朋友见谅。
升级源码树 安装cvsup 进入:/usr/ports/net/cvsup makeclean makedeinstall makeinstall makeclean 即可
升级系统源码树及ports 更新/usr/share/examples/cvsup目录下stand-cvsup和ports-cvsup文件,并执行cvsup–g–L2standard-supfile和cvsup–g–L2ports-cvsup两个文件,升级ports树﹔
重新编译内核 优化编译环境 更新/etc/make.conf文件,做适当的编译优化,我的CPU是Intel的: CPUTYPE=i686 CFLAGS=-O3-pipe COPTFLAGS=-O3-pipe
升级操作系统 进入/usr/src 执行makeworld 整个过程很久,需要2小时左右。
升级配置文件 执行mergemaster升级配置文件,在此过程中,需要按i以便系统执行升级﹔
重新编译内核 到/sys/i386/conf里面,cpGENERIConlinecq,再vionlinecq优化内核,注意加入下面的内容 #disablectrl alt delete optionsSC_DISABLE_REBOOT
#quotalimit optionsQUOTA
#ipfwsupport optionsIPFIREWALL optionsDUMMYNET optionsHZ=3000 optionsIPDIVERT optionsIPFIREWALL_VERBOSE optionsIPFIREWALL_VERBOSE_LIMIT=100 optionsIPSTEALTH optionsTCP_DROP_SYNFIN optionsIPFIREWALL_DEFAULT_TO_ACCEPT optionsICMP_BANDLIM
optionsACCEPT_FILTER_DATA optionsACCEPT_FILTER_HTTP
#ipfiltersupport #optionsIPFILTER #optionsIPFILTER_LOG #optionsIPFILTER_DEFAULT_BLOCK
再执行: /usr/sbin/configonlinecq cd../../compile/onlinecq makedepend make makeinstall
重新启动服务器 到此为止,服务器操作系统及内核升级成功 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"#createit! 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通过,免得把自己给挡在外面了。 ipfwaddallfromanytoany
其它规则根据实际情况来做,如果您想系统每次启动都使用上一次的规则,可以把这些内容加到: vi/etc/ipfw.rules 里面,语法规则同ipfw。
安装数据库MYSQL 安装mysql40-server和mysql40-client 进入/usr/ports/databases/mysql40-server 执行: makeclean makedeinstall makeWITH_OPENSSL=yesWITH_LinuxTHREADS=yesBUILD_OPTIMIZED=yesinstall 或者使用下面可参考的编译参数:BUILD_STATIC=yes 编译成静态执行版本 makeclean
更改mysql的root密码: mysqladmin–uroot–ppassword123456
生成/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 #RemovethenextcommentcharacterifyouarenotfamiliarwithSQL #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 执行: makeclean makedeinstall makeinstall makeclean
新建立一个system的数据库备用。
安装FTP服务器 安装ftp软件(使用pure-ftpd/) 进入/usr/ports/ftp/pufe-ftpd 执行: makeclean makedeinstall makeWITH_MYSQL=1install 或者使用下面可参考的编译参数:WITH_LANG=simplified-chinese 使用简体中文语言包 makeclean 配置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的如下部份为: NoAnonymousyes MySQLConfigFile/usr/local/etc/pureftpd-mysql.conf
再修改/usr/local/etc/pureftpd-mysql.conf的如下部份为您的设定值: #Mandatory:usertobindtheserveras. MYSQLUserdemo #Mandatory:userpassword.Youmusthaveapassword. MYSQLPassworddemo #Mandatory:databasetoopen. MYSQLDatabasedemo
再进入使用mysql–uroot–p123456进入mysql的文本方式﹔ 使用如下命令建立新表: usesystem; DROPTABLEIFEXISTSusers; CREATETABLEusers( Uservarchar(16)NOTNULLdefault'', statusenum('0','1')NOTNULLdefault'0', Passwordvarchar(64)NOTNULLdefault'', Uidvarchar(11)NOTNULLdefault'-1', Gidvarchar(11)NOTNULLdefault'-1', Dirvarchar(128)NOTNULLdefault'', ULBandwidthsmallint(5)NOTNULLdefault'0', DLBandwidthsmallint(5)NOTNULLdefault'0', commenttinytextNOTNULL, ipaccessvarchar(15)NOTNULLdefault'*', QuotaSizesmallint(5)NOTNULLdefault'0', QuotaFilesint(11)NOTNULLdefault0, PRIMARYKEY(User), UNIQUEKEYUser(User) )TYPE=MyISAM;
安装pureftpd_php_manager 下载pureftpd_php_manager.zip 解压并放到指定的目录里面,比如: /usr/local/www/data chmod–R755/usr/local/www/data/pureftpd_php_manager
再加入一个普通用户和一个群组,以供ftp使用: pwgroupaddftpusers pwuseraddftpuser–gftpusers–s/sbin/nologin
记住他们的uid和gid号,备用!
进入并编辑pureftp.config.php文件 更改里面的如下行: $PUREFTP_CONFIG_FILE='/usr/local/etc/pureftpd-mysql.conf';^M
$DefaultUser="ftpuser";#DefaultUserLogon^M $DefaultPass="";#DefaultUserPassword^M $DefaultUid="1002";#DefaultUserID(mustbeare aluseracct)^M $DefaultGid="1001";#DefaultGroupID(mustbear ealgroupacct)^M $DefaultDir="/home";#DefaultUserDir(use /./attheendtochroot)^M $DefaultUL="0";#DefaultUploadThrottl e(0disablesit)^M $DefaultDL="0";#DefaultDownloadThrot tle(0disablesit)^M $Defaultip="*";#DefaultIPrestriction s(*=anyIP)^M $DefaultQS="200";#DefaultQuotaSize(0disable sit)^M $Defaultcmt="";#DefaultCommentforus er^M ^M //UA^M $DefaultQF="0";#DefaultQuotaFiles(0disabl
安装APACHE服务器 安装apache13-modssl 进入/usr/ports/www/apache13-modssl 执行: makeclean makedeinstall makeWITH_APACHE_SUEXEC=yesAPACHE_HARD_SERVER_LIMIT=1024APACHE_PERF_TUNING=yesinstall 编译时带上suexec和优化。 Makeclean
取消所有Options里面的Indexes,禁止浏览目录及文件。 设置KeepAliveOff 安装PHP语言 安装php 进入/usr/ports/www/mod_php4 执行: makeclean makedeinstall makeinstall 编译常用的选项即可,一定记得选择上mysql和gd。 Makeclean 安装完成后,在/usr/local/etc/apache/httpd.conf里面,加入如下内容: AddTypeapplication/x-httpd-php.php.php3.php4.phtml AddTypeapplication/x-httpd-php-source.phps
替换DirectoryIndex细节为:
DirectoryIndexindex.htmlindex.htmindex.wmlindex.cgiindex.shtmlindex.jspindex.jsindex.jpindex.php4index.php3index.phpindex.phtmldefault.htmdefault.htmlhome.htm
再cpphp.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 再执行 tarzxvfZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz cdZendOptimizer-2.1.0b-FreeBSD4.0-i386 shsetup 即可完成傻瓜式的安装。 注意:此时您的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 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModulebandwidth_modulelibexec/apache/mod_bandwidth.so AddModulemod_bandwidth.c
makeclean
语法及作用: *BandWidthModule 该模块的开关,可以对每个Server进行配置
*BandWidthPulse 设定计时单位,MS(微秒),建议为:1000000(1秒)
*BandWidth 可以针对特定来源的对象控制流,rate以字节为单位,但当rate为0时,为不限制流速。 例子:
BandWidthecp.fr0 BandWidth138.1950 BandWidthall1024
*LargeFileLimit 当传送一个大于等于filesizeKB大小的档时,设定一个最大流速(字节/秒),当rate 为0的时候,不限速。 例子: LargeFileLimit2003072 LargeFileLimit10242048 以上例子设定小于200KB的档将不会被限制流速,大小在200K到1024K之间的档将会被 限速3072B/s,大于1024KB的文件将会被限速2048B/s.
*MinBandWidth 设定每个连接传送数据的基本带宽占用,以Byte为单位。默认值:256B/s。 当rate设定为0时,使用默认带宽限制。 安装mod_fastcgi 进入/usr/ports/www/mod_fastcgi 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModulefastcgi_modulelibexec/apache/mod_fastcgi.so AddModulemod_fastcgi.c AddHandlerfastcgi-scriptfcgifcgifpl
makeclean
安装mod_gzip 进入/usr/ports/www/mod_gzip 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModulegzip_modulelibexec/apache/mod_gzip.so AddModulemod_gzip.c
makeclean
安装mod_limitipconn 进入/usr/ports/www/mod_limitipconn 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModulelimitipconn_modulelibexec/apache/mod_limitipconn.so AddModulemod_limitipconn.c
makeclean
安装mod_perl 进入/usr/ports/www/mod_perl 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModuleperl_modulelibexec/apache/mod_perl.so AddModulemod_perl.c
makeclean
安装mod_throttle 进入/usr/ports/www/mod_throttle 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModulethrottle_modulelibexec/apache/mod_throttle.so AddModulemod_throttle.c
makeclean
安装mod_watch 进入/usr/ports/www/mod_watch 执行: makeclean makedeinstall makeinstall 编译完成后,一定记得 vi/usr/local/etc/apache/httpd.conf LoadModulewatch_modulelibexec/apache/mod_watch.so AddModulemod_watch.c
makeclean
安装APACHE第三方软件 安装限制每个虚拟主机的并发数软件 mod_vhost_limit 安装: apxs-cmod_vhost_limit.c-o/path/to/libexec/mod_vhost_limit.so 在httpd.conf加入: LoadModulevhost_limit_modulelibexec/mod_vhost_limit.so AddModulemod_vhost_limit.c 配置: MaxClients150 ExtendedStatusOn NameVirtualHost*
ServerNameserver1 DocumentRoot/some/where/1 MaxVhostClients100
ServerNameserver2 DocumentRoot/some/where/2 MaxVhostClients30
ServerNameserver3 DocumentRoot/some/where/3
其中:server1被限制为100个并发线程数。server2被限制为30个并发线程数。server3没有被限制。
注:需mod_status的ExtendedStatusOn支持!! 如超出限制的并发数在客户端就会出现503错误:
ServiceTemporarilyUnavailable Theserveristemporarilyunabletoserviceyourrequestduetomaintenancedowntimeorcapacityproblems.Pleasetryagainlater. --------------------------------------------------------------------------------
Apache/1.3.27Serveratserver1Port80
在error_log中将会有类似以下的错误提示: [MonJun2315:22:242003][error]clientaccesstoserver1deferred,MaxVhostClients100exceeded
安装防止ddos攻击的软件 dosevasive1.8.tar.gz 安装方法:
tarzxvfmod_dosevasive.tar.gz cddosevasive/ /usr/local/apache/bin/apxs-i-cmod_dosevasive.c vi/usr/local/apache/conf/httpd.conf 加入 LoadModuledosevasive_modulelibexec/mod_dosevasive.so AddModulemod_dosevasive.c
DOSHashTableSize3097 DOSPageCount2 DOSSiteCount50 DOSPageInterval1 DOSSiteInterval1 DOSBlockingPeriod10
其它需要安装的软件﹔ 可选择安装的有: CPU温度监控软件 CPU负载监控软件 封包流量监控软件 ……
安装MRTG 安装net-snmp 进入/usr/ports/net/net-snmp 执行: makeclean makedeinstall makeinstall makeclean
安装mrtg 进入/usr/ports/net/mrtg 执行: makeclean makedeinstall makeinstall makeclean 设置虚空间的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[^]:TrafficAnalysisfor PageTop[^]:TrafficStatsforOnlineCQ.COMUser
#PageTop[$]:ContactQQ:151482576
PageFoot[^]:WWW.OnlineCQ.COMMSN:cqfanli@hotmail.comQQ: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
安装BIND9 安装bind9 这是一套域名解析系统,可以让您的SERVER做DNS SERVER,非常不错的! 进入/usr/ports/dns/bind9 makeclean makedeinstall makeinstall makeclean 然后再记得修改name.conf 等配置文件,具体的内容太复杂,建议看一下其它专门讲授这方面的书籍。
安装邮件服务器 安装qmail邮件系统 使用iceblood的安装包,傻瓜式的安装就可以了!注意第一次安装时,多看几遍它的说明,不要弄错了! 安装完成后,自己再加上qmailadmin,它可以让您在一台主机上面,开多个域名的企业邮局!
安装WEBMIN和USERMIN 安装webmin 先下载webmin最新版 再解压: tarzxvfwebmin-1.100.tar.gz 进入目录开始安装: cdwebmin-1.100 shsetup.sh
安装时使用它的默认设置即可,自己要设置好管理员密码,这一定要注意保密! 并且请设置为自动启动,以便以后可以通过此来管理。 安装完成后,可以通过如下方式访问: http://IP:10000/ 注意,默认埠是10000
安装usermin 先下载usermin最新版 再解压: tarzxvfusermin-1.030.tar.gz 进入目录开始安装: cdusermin-1.030 shsetup.sh
安装时使用它的默认设置即可。 安装完成后,可以通过如下方式访问: http://IP:20000/ 注意,默认埠是20000。 Usermin会自动和webmin整合的,使用webmin的管理员密码,并且可以在webmin里面启动它。
结束语 至此为止,一般可以实际运作的FREEBSD系统就建立起来了,您可以reboot一下,让最新的设置及软件生效。 如果在安装过程中出现错误,您可以先检查完错误,再接着安装下去。或者你可以选择你感兴趣的某些部份安装! 当然因为时间仓促,涉及到的知识太广,加上本人能力有限,其中错误在所难免,恳请各位读者提出来,大家共同提高,共同进步! 我的联络方式是: cqfanli@163.com
──文 重庆.樊礼(梦飞) 2003/12/30附件:freebsd-update.pdf | | 关键字: |
|
|