• 欢迎访问Ppabc博客网站,专注于Linux、CentOS、Apache、Nginx、MySQL、PHP等开源工具安装优化的技术博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入Ppabc博客
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏Ppabc博客吧

《FREEBSD升级及优化全攻略》[不错转了]

Freebsd admin 9年前 (2010-04-09) 247次浏览

《FREEBSD 升级及优化全攻略》
作者:重庆.樊礼
复制自:http://sysop.com.cn/system23569,1.html

欢迎转载﹐本文遵循 GNU 协议规则﹗

前言
升级源码树
安装 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(12 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=InnoDB;
安装 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 细节为:

<IfModule mod_dir.c>;
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
</IfModule>;
再 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 *
<VirtualHost *>;
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100
</VirtualHost>;
<VirtualHost *>;
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30
</VirtualHost>;
<VirtualHost *>;
ServerName server3
DocumentRoot /some/where/3
</VirtualHost>;
其中: 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
<IfModule mod_dosevasive.c>;
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>;
其它需要安装的软件﹔

可选择安装的有:
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[^]: <H1>;Traffic Stats for OnlineCQ.COM User</H1>;<HR>;
#PageTop[$]: Contact QQ: 151482576<HR>;
PageFoot[^]: http://WWW.OnlineCQ.COM MSN: cqfanli@hotmail.com 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 一下,让最新的设置及软件生效.
如果在安装过程中出现错误,您可以先检查完错误,再接着安装下去.或者你可以选择你感兴趣的某些部份安装!
当然因为时间仓促,涉及到的知识太广,加上本人能力有限,其中错误在所难免,恳请各位读者提出来,大家共同提高,共同进步!


Selinux 中国 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:《FREEBSD 升级及优化全攻略》[不错转了]
喜欢 (0)