(一、系统安装)
D]{#!w(d e)Be*J]4 /MErS< 6 6eUM[C. 前言
vw;GbQH( :#?Z)oQpT sbxOnwP\ Jvk!a~e 写本文的初衷主要是记录下我一段时间学习使用FreeBSD建设网站平台的一些经验和体会。因为本人是菜鸟,所以很多地方不够完善。本文权当给初学者提供一个具体可操作的实例。所有操作步骤都是我边做边写。避免出现遗漏或一些不必要的小错误,给初学者带来麻烦。
q13bV kb27$4mm 本网站平台建设全过程包括FreeBSD系统的安装,web、ftp、mail、proxy服务器、视频点播服务器等。所有过程都在FreeBSD4.7环境下测试通过。
wNHvYulI P|>pm]>C
由于写本文时参考了网上太多前辈和大侠的资料,无法一一列举。还请作者原谅。
N,iYUM? y@5{.jsr_ 本连载文章前后关联很紧密,建议初学者一步一步来做。
Xx=jN1=, 0gI^GJN%Y! 试验环境如下:
P)>`^wc$ Fp_?1y 硬件环境:普通pc机,双网卡。配制不需要高,主要是稳定,并能适应长时间开机。听前辈介绍AMD k6的cpu运行FreeBSD好像有点问题。不过我没有试验。建议用intel的。
tSP)'N< J
FYV@%1~ 软件环境:操作系统:FreeBSD4.7(4.8)
ku@sQn $IM}d"/9 web服务器:Apache 1.3.27+modssl +mod_php4+mod_gzip+mod_fastcgi +mod_perl +mysql3.23
/M}jF*5N Au-_6dT ftp服务器:Proftpd1.2.7+proftpd-mod-quotatab-1.2.4+mysql
'zEmg} J6WyFtlyLc mail服务器: iceblood前辈制作的qmail安装包(经过修改)+vqregister-2.5
@w%{yzr% (1t b proxy服务器:使用FreeBSD内置的NAT和PPP拨号+squid
D 7D:?VoR h!vq~g 视频点播服务器:Helix Universal Servevr (realserver9.01)
[&tN(K9* +"u6+[E 网络环境:我用的是adsl动态拨号方式,因为动态ip所存在的一些问题,我把所有的服务都装在一台机器上,且这台机器要直接与外网相连。静态ip更方便一些。(本文两种方式都会讨论)
#J=@} S) nB;yS< t_VF=B^LuR _iJ8*v8A 第一步:安装系统
BIBBp=+ ]r|nz~Aa$ 关于安装过程网上有很多文章,这里不作详述。仅提出几点建议供大家参考:
$Ur-Q d C78V/{ 1、 采用最小化安装。
]TE,N$X >=T\=y 2、 安装时启用inetd,并在编辑inetd.conf文件时,把带有“ftp”的行前面的“#”号去掉。这样作是为了以后安装软件时可以用ftp上传文件。
5Tl3k=o} #>]o' KQx 3、 添加一个wheel组的用户,这样在系统工作正常后可以在windows系统上通过终端登录软件(如SecureCRT)进行所有操作。FreeBSD4.7在最小安装时支持SSH终端登录,所以我们需要使用支持SSH协议的终端软件,如SecureCRT。例如我添加的用户名是ylf,隶属wheel系统组。系统产生一个用户目录/home/ylf。我可以通过SecureCRT以ylf身份登录到系统,然后通过su命令切换到root用户。同时我也可以在IE浏览器内键入
ftp://192.168.0.1 ,并输入ylf用户名和密码登录ftp将需要的文件上传到自己的用户目录里。(192.168.0.1是我的服务器连接内网的网卡ip地址)。以下除系统安装部分,我都是采用终端方式操作。
ySS
kw7 LW"p/`#< 4、 分区时将/home、/usr和/var划的大一些,因为/usr为程序目录,/var要存放日志,/home是用户主目录,我的用户文件如网页、ftp上传文件等都放在这里。还有最好保留一部分空间留作以后需要的时候用。我的机器上有2块硬盘,一快18.2G SCSI硬盘,一块40G IDE硬盘。我是这样划分的。
.4t-5,7s% L. %N 128M /
/3(|P 8hKyp5(%l 20G /home
K&\3j-8^ H{XD>q. 2G /ftp
QSaJb?I m^9[k,;K 256M /tmp
kW
7$ 5UTIGla 6G /usr
Buv4&.Z} m9&MTRD\ 5G /var
B?-~f^*,jG G;'=#c
^ 其中/ftp是为匿名ftp用户访问专用。剩余空间留作备用。当然如果硬盘空间少的话,做我们的试验也是够用的。
8.g(&F E&RiEhuv 关于安装方面的文章,大家也可以参考delphij写的《FreeBSD服务器的安装与优化》。
http://community.freebsdchina.org/catalog.php?forum=34 一文。
{eQ')f Zl:Z31 安装完系统后,要重新编译内核。目的是要系统支持Firrwall和提高运行效率。
Uc?4!{$X G T3wJQ5N 首先确认系统是否安装了FreeBSD的内核支持。如果是最小安装,则需要运行/stand/sysinstall命令安装内核支持。方法如下:
r=`]L-}V z .xOT;t # /stand/sysinstall
Bl
>)G X\l h/AL`$ 选Configure—Distributions—src—sys,内核文件将被安装在/usr/src/sys目录中。
#Is/j = 9uRs@]i 注意:这之后的过程在终端上操作要方便许多。SecureCRT支持在终端界面上直接拷贝和粘贴文本内容。
WN_i-A1G/h V*|#j0}b 转到内核文件目录
Z6`oGFq L,
k\`9bQ # cd /usr/src/sys/i386/conf
gk*Md+ .2si[:_(p 编辑内核文件
m V U(b, mHnHB.OL # vi kernel_wwwx # kernel_wwwx为我的内核文件名
L'*P;z7< :Hn*|+' 我的内核文件如下:
B!#F!Wk" 9qqzCMrI0e #
neHozmm| EJbFo682 # GENERIC -- Generic kernel configuration file for FreeBSD/i386
.\W6XRw RyxEZ7dC<y #
_;M46o%h |.s#m^" # For more information on this file, please read the handbook section on
@
k`^Z5tN -d|VXD5N # Kernel Configuration Files:
X+:>&&9 &)8-iO #
nhUL{ER sbZ^BFqp #
http://www.FreeBSD.org/doc/en_US.IS...fig-config.html gEE6O%]g T.=du$ #
jMT];%$[ 6]#\|lds1 # The handbook is also available locally in /usr/share/doc/handbook
|H,g}XWMU !Gphs`YI # if you've installed the doc distribution, otherwise always see the
`wyX)6A|bt zeXMi:X # FreeBSD World Wide Web server (
http://www.FreeBSD.org/) for the
^w+jPT-n &SzLEbU! # latest information.
m^8KHa #2F 6} #
T@GR Tg /!r#=enG7 # An exhaustive list of options and more detailed explanations of the
WF6'mg^^? =uYz4IDB # device lines is also present in the ./LINT configuration file. If you are
8Jz/' 3,snx4q
( # in doubt as to the purpose or necessity of a line, check first in LINT.
Wgh4DhAW ~okIiC]# #
.?TPoqs7Z -*?Y4}mK # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246.2.48 2002/08/31 20:28:26 obrien Exp $
~N i#xa tGKIJ`w*h yqg&dq iw,F)O machine i386
,sAN,?eG~ !
Z e cpu I586_CPU
fs]9H K/@\ dh7PpuN{ cpu I686_CPU
6zQ {Y"0 /nK)esB1L ident kernel_wwwx #内核文件名,这个要和你的内核文件名一致
q4k)E b&$ ?.z maxusers 0
xHml"Y1 X^tVq..0 hIj[#M&6 XFeeNcqF options INET #InterNETworking
728}K^7: !;SpQ28 options FFS #Berkeley Fast Filesystem
$jYwV0 )e)@_0 options FFS_ROOT #FFS usable as root device [keep this!]
{__Z\D2I CI+dIv> options SOFTUPDATES #Enable FFS soft updates support
HQ%-e5Q hT&,5zaWdv options UFS_DIRHASH #Improve performance on big directories
Yx_[vLm *yuw8 options PROCFS #Process filesystem
S7Xr~5>X mT.p-C options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
d[.kGytUt \/jr0): options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
Ae,-.xJ ]P TTI\n options SYSVSHM #SYSV-style shared memory
%h**L'~``
q+{-p?;; options SYSVMSG #SYSV-style message queues
#e.2m5T ?Z @FxW options SYSVSEM #SYSV-style semaphores
/Yk2 |L '0|AtO77 options P1003_1B #Posix P1003_1B real-time extensions
V1KWi^ NyD[9R? options _KPOSIX_PRIORITY_SCHEDULING
i0uBb%GMT \?[#>L4 options ICMP_BANDLIM #Rate limit bad replies
0fvQPs!O L<>;E options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
#q~SfG P>=~\v nN# # output. Adds ~128k to driver.
&\] [:kG; ?JTy+V2t options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
dtQ>4C"N 4Vj|k\vE4 # output. Adds ~215k to driver.
^*C+^l&J! :Ia3yi# FxSBxz<N-A UYH;15s device tun 1
E|D~:M%~ -6MgC9] options IPFIREWALL #防火墙
0SV#M6`GX [~bfM6Jw options IPFIREWALL_FORWARD #允许透明代理
B^Q\l!r -zg,pK$+ options IPFIREWALL_VERBOSE #允许防火墙日志
RqW
ZhHI1M lhTjG,U= options IPFIREWALL_VERBOSE_LIMIT=100 #限制日志
XOO!jnQu |,bsMJh0 options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包
/-<S F T` 2%N$Y] options IPDIVERT #启用由ipfw divert使用的转向IP套接字
SF 61rm WO$PW`k ;HM&
":7 IpY R # To make an SMP kernel, the next two are needed
rX6"w31 %y33evX/B #options SMP # Symmetric MultiProcessor Kernel
/Dj6Bj
} ,+P!R0PNH #options APIC_IO # Symmetric (APIC) I/O
>`p`^: } ab@Nd$ C$\|eC j .ps'{rl8 device isa
s
S8Z5k; aQwc Py|1R device eisa
^AMcZ6!\ d8Jy$,/`? device pci
9 )u*IGj d<.
hkNN CfQOG7e@ |$#u~<r_
w B2VC:TG> }6.R.*Imz # ATA and ATAPI devices
#gi0FXL Z5;1ySn{ device ata
"JAYTatO7H M*BDrM device atadisk # ATA disk drives
33|>u+ XodA(73`i w"$CV@AJ -0PT(gx d7qY(!& 5Fm.] / # SCSI Controllers #没有SCSI设备不需要这段
V0z.w:- 8I$B^,N device ahb # EISA AHA1742 family
zx'G0Z9] )6iY9[@tN device ahc # AHA2940 and onboard AIC7xxx devices
?`Qw=8]` g}0}$WgH: device ahd # AHA39320/29320 and onboard AIC79xx devices
:}TT1@ 5j1}?0v_ device amd # AMD 53C974 (Tekram DC-390(T))
6+BR5Nr d*Dq=.F( device isp # Qlogic family
{MU>5\ 5Tluxt71 device mpt # LSI-Logic MPT/Fusion
X|t?{.p CFAz/x@% device ncr # NCR/Symbios Logic
T j9;". X{\>TOk device sym # NCR/Symbios Logic (newer chipsets)
9+U%k(9 $-YS\R\9x options SYM_SETUP_LP_PROBE_MAP=0x40
Sx+.<]t2A |;ycEB1 # Allow ncr to attach legacy NCR devices when
"2(lgxhj *O,\/aQ+ # both sym and ncr are configured
DtG><g}[] NmYSk6kWJ "AP''XNi Dg%zN i2GS device adv0 at isa?
bVSa}&*kM 0DhF3] device adw
j':Ybr>BR rBa <s device bt0 at isa?
HT)b3Ws~M8 &N GYV device aha0 at isa?
B5*{85p(u iq-n(Rfw~ device aic0 at isa?
?~uTbNR RzQ1Wq o{pQDI {R Q\&FuU device ncv # NCR 53C500
'm}K$h(U RoSh|$JF device nsp # Workbit Ninja SCSI-3
]24aK_Uu 5t#+UR device stg # TMC 18C30/18C50
&G7JGar =HmV0 )+RTA
y [k 6|wiZw # SCSI peripherals #没有SCSI设备不需要这段
EWNh:<F? eWS[|'dl device scbus # SCSI bus (required)
&!]$# `Gzukh device da # Direct Access (disks)
4\4onCzuT Z0g3> iItM device sa # Sequential Access (tape etc)
TKj8a(R_ I8@NQ=UV0 device cd # CD
F& .iY0Pt 3Ba>a(E device pass # Passthrough device (direct SCSI access)
]#P9.c_} I-oI,c%+ >[B}eS> Iq0_X7:{QI e p~3e5 <uDEDb1|l _R<eWp ]+;1) # atkbdc0 controls both the keyboard and the PS/2 mouse
LvgNdVJDP| %l%5Q;t device atkbdc0 at isa? port IO_KBD
ce th )Xm /2pf*\u device atkbd0 at atkbdc? irq 1 flags 0x1
}Iz'#I
Xx
GY,l&.& IJ2 ]2FI 0gO<]]M? device vga0 at isa?
i71, .ii9-+_ ac"Pn?
q 8rwkux > ?9xaBWf 8 P85qa@w # syscons is the default console driver, resembling an SCO console
PhW<)B] eWzD'3h^ device sc0 at isa? flags 0x100
q+f]E&': l{F^"_U 8aZuI|z .|
CcUmx BV,P;T0"D c;c'E&9P] # Floating point support - do not disable.
/Y@^B,6\ yPrp:%PS device npx0 at nexus? port IO_NPX irq 13
)j(13faW| s''?:
+ XlIRedZ{ k<RJSK8 H~E(~fl y%)5r}S^ # Serial (COM) ports
wr{03mQHxp v9R#=m/= device sio0 at isa? port IO_COM1 flags 0x10 irq 4
ktLXL;~X >(5*y=\i 9XWHr/-_@ 0Ci\( # 我用的是8139和Dlink DFE-530TX网卡,大家可根据自己的网卡型号保留或删除
UH/) 4Wg tz0@csXV # 使用公共的MII总线控制器代码的PCI以太网适配器
n B4)% `3+yu'
Q' # 注意:一定要保留'device miibus'以确保可用
U]j4Izq S6-)N(3| # PCI Ethernet NICs that use the common MII bus controller code.
wjh[}rTV* %^s;{aN*! # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
$G/h-6+8 4GWt.+{J$ device miibus # MII bus support
>!O3 jb k Kn3qq device fxp # Intel EtherExpress PRO/100B (82557, 82558)
= !7k/n'; w"d~R device rl # RealTek 8129/8139
[.4R ,[U nN" Y~W^k device vr # VIA Rhine, Rhine II
cmgI,n-o? N),bhYS] device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
Poy ]5:. H&jK|]UXoO owL>w ,JIjAm*2 # Pseudo devices - the number indicates how many units to allocate.
4zuM?Dp *(6vO{ pseudo-device loop # Network loopback
cF!ygz// P5s'cPX pseudo-device ether # Ethernet support
"?EoYF_ USfpCRj9 pseudo-device sl 1 # Kernel SLIP
-1).'aJ^ `|K30hRp: pseudo-device ppp 1 # Kernel PPP
-q1vB8gjj [uCW8:e pseudo-device tun # Packet tunnel.
OAPR wOQ^= +U/+iI>0 pseudo-device pty # Pseudo-ttys (telnet etc)
^@?-YWt T0BFit6 pseudo-device md # Memory "disks"
\jL n5$OW m<L.H33' pseudo-device gif # IPv6 and IPv4 tunneling
v0euvs gi!{y pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
xG sg' l/9V59Fv9 S*;8z}5<\ SXX6EIJr| # The `bpf' pseudo-device enables the Berkeley Packet Filter.
sYnf
# ' Zwj\Hz. # Be aware of the administrative consequences of enabling this!
t.wB\Kmt\ O=E"n*U pseudo-device bpf #Berkeley packet filter
:SFcnYv0 USF&; M3 (完)
oE:9}]N_ ZL[~[ df@I C@`pB nXH U|5.I 我用的是8139网卡和Dlink DFE-530TX网卡,如果你用其他型号的网卡,需要察看当前目录的GENERIC 内核文件,找到描述自己的网卡型号的段并将其添加到新的内核文件里。其他的不改直接拷贝过来就可以用了。
v+XB$j^H qOaI4JP@ 接下来编译安装新内核:
*s4h tt M$&aNt; # /usr/sbin/config kernel_wwwx #kernel_wwwx为你的内核文件名
5J!ncLNm{ FPj j1U`C # cd ../../compile/kernel_wwwx
W rvSYqN (p4|,\+ # make depend
lGHU{7j\ ]pUf[^4 # make
dH4wyd` y\-f{I # make install
AQX~do\A tXj28sh$ 重新启动(reboot)
-*q:B[d xj6ht/qq vY|{CBGbd ,G2]3
3Z 如果系统升级过源代码树,按下面方法编译内核:
nNuv 0 s9t`! # cd /usr/src
T)%34gN vrVb/hhG # make kernel KERNCONF=kernel_wwwx #kernel_wwwx为你的内核文件名
>KF1]/y< Z^t" !oY 重新启动
T\ ;7' &YMz3ugI 5Fh?YS = nNb Oq[ FreeBSD网站平台建设全过程(二、接入Internet并配制代理服务)
qRXQL"Pe_l E]G#"EV!Y #H]cb# {Rc!S? 8 使用adsl接入Internet有两种情况,通过拨号获取动态ip或服务商直接给定静态ip。后者配制起来较容易。本文先讨论动态ip如何设置。
}T<[JXh=J O{b.-< 由于第一步重新编译内核时已经加进了对Firewall的支持。这里就可以通过直接编辑/etc/ppp/ppp.conf文件和/etc/rc.conf文件就可以上网并支持NAT方式透明代理了。
MUo}Qi0K tqI]S
X # vi /etc/ppp/ppp.conf
P'Q|0lB h\+U+?u 我的ppp.conf文件内容如下:(注意set前要留空格)
QWt?` h= u= a5Z4 N' default:
4-P'e%S Jjt'R`t%t set log Phase tun command
.j*muDVQn oU }eAZj{ set ifaddr 10.0.0.1/0 10.0.0.2/0
/S}0u}jID? j$Ttoo adsl: # 配置代号
'FB?#C %U SM> V
o+ set device PPPoE:vr0 # vr0 改成你连接ADSL modem的网卡名
6"+/Imb- y*ae 5=6( set mru 1492
G8}w|'0m dP8b\H set mtu 1492
/cn=8%!N L_f u<W set authname username # username是拨号用户名
XA8{N aA Hx^X^ set authkey password # password是拨号密码
Uj!3H]d H{*~d+:ol set dial
IooAXwOF Uloa]X=Im8 set login
qTM,'7Rwn *P4G}9B|9: add default HISADDR
HWe?vz$4" CXqU<a& (完)
Q+e|;Mj 0!v+ + (n'Mf FI@!7@ # vi /etc/rc.conf
nS xFz! 8v&4eU'S 我的rc.conf文件内容如下:(动态ip)
O`2;n.>\ _YVp$aKDR # -- sysinstall generated deltas -- # Tue Jul 15 21:20:28 1997
%E q}H Y8I*B=7 # Created: Tue Jul 15 21:20:28 1997
u<`CkYT ve|:z # Enable network daemons for user convenience.
wOH$S=Ba5, h-B&m:gD_U # Please make all changes to this file, not to /etc/defaults/rc.conf.
lp`raNNo <"I#lib # This file now contains just the overrides from /etc/defaults/rc.conf.
|G.|ocj; Sp+ zP-3 hostname="wwwx.3322.org" # 你的主机域名
?nOul}y/ ?#|Y'%a" ifconfig_fxp0="inet 192.168.0.1 netmask 255.255.255.0" #内网网卡ip地址,fxp0是网卡名
P$E #C:= -h&AO\*^W inetd_enable="YES" # 开机加载inetd
o"F=3b~:n H.sHXuu kern_securelevel_enable="NO"
_97A9wHj $bQ[H[4l linux_enable="YES"
Bob K>db uW*)B_c nfs_reserved_port_only="NO"
b(8#*S!U Bny3j~*U sendmail_enable="NO"
*g
=ey?1S Ew>E]Ys sshd_enable="YES"
E"p; W0GDn usbd_enable="NO"
?1\rf$l8 Dh=?Hzw gateway_enable="YES"
=aM(r6 C zTODV<-` firewall_enable="YES" #启用防火墙
pWY $aI E/MD]ox firewall_script="/etc/rc.firewall"
906b= ,tt]C~\u firewall_type="open"
zS]8ma 6?an._ C firewall_quiet="YES"
5;{Q >n IbFS8 *a\ firewall_logging_enable="YES"
'CiV=&3/ &jJj6
+P\ ppp_enable="YES" # 开机自动拨号
!]1'?8 ,,_$r7H` ppp_mode="ddial"
|G^w2"D_Z V^9c:!aI ppp_nat="YES" # 启用透明代理
kXw&