(一、系统安装)
6"LcJ%o I+%[d^, x*/tyZg6 [64:4/<} 前言
Sxt"B 7{e
4c r_)' Ps ?(' wn< 写本文的初衷主要是记录下我一段时间学习使用FreeBSD建设网站平台的一些经验和体会。因为本人是菜鸟,所以很多地方不够完善。本文权当给初学者提供一个具体可操作的实例。所有操作步骤都是我边做边写。避免出现遗漏或一些不必要的小错误,给初学者带来麻烦。
GfxZ'VIn fa
jGZyd0: 本网站平台建设全过程包括FreeBSD系统的安装,web、ftp、mail、proxy服务器、视频点播服务器等。所有过程都在FreeBSD4.7环境下测试通过。
:KSV4>X[%a rKe2/4>0X 由于写本文时参考了网上太多前辈和大侠的资料,无法一一列举。还请作者原谅。
Z,
zWuE3 aD<A.Lhy 本连载文章前后关联很紧密,建议初学者一步一步来做。
Q04al= y|C(X 试验环境如下:
qTRsZz@ ,8S/t+H 硬件环境:普通pc机,双网卡。配制不需要高,主要是稳定,并能适应长时间开机。听前辈介绍AMD k6的cpu运行FreeBSD好像有点问题。不过我没有试验。建议用intel的。
=57>!) oA7tEu 软件环境:操作系统:FreeBSD4.7(4.8)
n$MO4s8) (Z+.45{- web服务器:Apache 1.3.27+modssl +mod_php4+mod_gzip+mod_fastcgi +mod_perl +mysql3.23
lK?uXr7^ LiC*@W ftp服务器:Proftpd1.2.7+proftpd-mod-quotatab-1.2.4+mysql
YiXk5B0Uh ^]>O;iB? mail服务器: iceblood前辈制作的qmail安装包(经过修改)+vqregister-2.5
7X`g,b! m4[ ;(1 proxy服务器:使用FreeBSD内置的NAT和PPP拨号+squid
n*R])=F@c YquI $PV _ 视频点播服务器:Helix Universal Servevr (realserver9.01)
/QK6Rac- jnkR}wAA 网络环境:我用的是adsl动态拨号方式,因为动态ip所存在的一些问题,我把所有的服务都装在一台机器上,且这台机器要直接与外网相连。静态ip更方便一些。(本文两种方式都会讨论)
(+w*[qHe h"[AOfTE$ MD}w Y><C f&NgS+<K$ 第一步:安装系统
=J]&c?I A9KET$i@v 关于安装过程网上有很多文章,这里不作详述。仅提出几点建议供大家参考:
.Yamc#A- >2y':fO 1、 采用最小化安装。
%8RrRW A]_7}<<N 2、 安装时启用inetd,并在编辑inetd.conf文件时,把带有“ftp”的行前面的“#”号去掉。这样作是为了以后安装软件时可以用ftp上传文件。
NlA,'`, 2jA {SY- 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地址)。以下除系统安装部分,我都是采用终端方式操作。
lF<]8m%F >2Y=*K,: 4、 分区时将/home、/usr和/var划的大一些,因为/usr为程序目录,/var要存放日志,/home是用户主目录,我的用户文件如网页、ftp上传文件等都放在这里。还有最好保留一部分空间留作以后需要的时候用。我的机器上有2块硬盘,一快18.2G SCSI硬盘,一块40G IDE硬盘。我是这样划分的。
]{;gw<T $g^@AdE% 128M /
]}>2D,; Z\(q@3 C 20G /home
z 4e7PW| AmUr.ofu 2G /ftp
rX U [$ubNk;!z 256M /tmp
lB8-Z ow @f_Lp%K 6G /usr
W-$Z(Z
XL ")1:F> 5G /var
*l(7D(# WJ]T\DI 其中/ftp是为匿名ftp用户访问专用。剩余空间留作备用。当然如果硬盘空间少的话,做我们的试验也是够用的。
*[Imn\hu `Y0%cXi3 关于安装方面的文章,大家也可以参考delphij写的《FreeBSD服务器的安装与优化》。
http://community.freebsdchina.org/catalog.php?forum=34 一文。
R)?*N@.s ,5P0S0*{ 安装完系统后,要重新编译内核。目的是要系统支持Firrwall和提高运行效率。
[CTnXb '9%\; 首先确认系统是否安装了FreeBSD的内核支持。如果是最小安装,则需要运行/stand/sysinstall命令安装内核支持。方法如下:
B5,N7z34F ^L,K& Jd # /stand/sysinstall
=bAx,,D# ]"pVj6O 选Configure—Distributions—src—sys,内核文件将被安装在/usr/src/sys目录中。
+X\FBvP& dUD[e,? 注意:这之后的过程在终端上操作要方便许多。SecureCRT支持在终端界面上直接拷贝和粘贴文本内容。
vJLK,[ DcS+_>a\{l 转到内核文件目录
{Ea
b
j ]]HNd7Vh # cd /usr/src/sys/i386/conf
5p,RI&nlN W Tcw4 编辑内核文件
;_XFo&@ h!,v/7= # vi kernel_wwwx # kernel_wwwx为我的内核文件名
;gD})@ %6t:(z 我的内核文件如下:
}t!Gey HRpte=`q #
$o!zUH~'v Yz9owe8}[ # GENERIC -- Generic kernel configuration file for FreeBSD/i386
!@5 9) x
o;QCOH #
;t)3F ~kV/!= # For more information on this file, please read the handbook section on
H[T?\Lq YByLoM* # Kernel Configuration Files:
}czrj%6 l&[O #
X hR4ru` q#~ (/ #
http://www.FreeBSD.org/doc/en_US.IS...fig-config.html &L3M] ]|#+zx|/D #
{aZ0; RCJ|P~* # The handbook is also available locally in /usr/share/doc/handbook
IM*y|UHt eB2a-, # if you've installed the doc distribution, otherwise always see the
%q"%AauJR D2#ZpFp"h # FreeBSD World Wide Web server (
http://www.FreeBSD.org/) for the
V( }:=eK 6]i-E>p3R # latest information.
S*pGMuui Xa[.3=bV? #
)Dms >[)7U _|p # An exhaustive list of options and more detailed explanations of the
,.S~
Y 9p85Pv [M= # device lines is also present in the ./LINT configuration file. If you are
)w em|:H zE*li`@ # in doubt as to the purpose or necessity of a line, check first in LINT.
vo?9(+:|e cF*TotU_m #
:S]%6gb8G c&6I[R # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246.2.48 2002/08/31 20:28:26 obrien Exp $
1> ?M>vK n>z9K') IZf{nQ[0 VCYwzB machine i386
,};&tR #-rH1h3*q cpu I586_CPU
Fk7?xc "> ypIR< cpu I686_CPU
.Cv6kgB@c 8H[<X_/ke ident kernel_wwwx #内核文件名,这个要和你的内核文件名一致
XE RUo TT%M'5& maxusers 0
3F"lXguS /*~EO{o qfF~D0} PJ')R:e, options INET #InterNETworking
|*Yr<zt ME$[=?7XX options FFS #Berkeley Fast Filesystem
Xc++b|k Lpkyoh v options FFS_ROOT #FFS usable as root device [keep this!]
`b&%Hm wKh4|Ka options SOFTUPDATES #Enable FFS soft updates support
j{ ]I]\=? alJ)^OSIe options UFS_DIRHASH #Improve performance on big directories
2F;y;l% E#34Wh2z options PROCFS #Process filesystem
JBj]najN xh-o}8*n" options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
z9f-.72"X 2g
`o options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
]2A^1Del S)(.,x options SYSVSHM #SYSV-style shared memory
+ /G2fhE -
nm"of\o options SYSVMSG #SYSV-style message queues
F~ty!(c 4(n-_BS options SYSVSEM #SYSV-style semaphores
eSn+ B;
Vsr.=Nd= options P1003_1B #Posix P1003_1B real-time extensions
1NFsb-<u `?H]h"{7Q options _KPOSIX_PRIORITY_SCHEDULING
-]Bq|qTH[( (M|Dx\_ options ICMP_BANDLIM #Rate limit bad replies
=HK!(C J`Q>3]wL options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
HdI8f!X'TG PN%zIkbo # output. Adds ~128k to driver.
^S<Y>Nm] Sz
$~P9 options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
n6=By|jRh ]OhiYU4 # output. Adds ~215k to driver.
$QF{iV@6d4 f^ZRT@`O Rr$-tYy6 1UgEI"#a6g device tun 1
`cn#B
BV 2ACCh4(/P options IPFIREWALL #防火墙
k8yEdi` Eh`7X=Z7E options IPFIREWALL_FORWARD #允许透明代理
Ufj`euY ,^r9n[M4M options IPFIREWALL_VERBOSE #允许防火墙日志
)iX~}7 KM0ru options IPFIREWALL_VERBOSE_LIMIT=100 #限制日志
L<S9 }v;V=%N+v options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包
P;y45b yF:1( 4 options IPDIVERT #启用由ipfw divert使用的转向IP套接字
0JS?; fk bRDYGuC e
,'_xV OKZV{Gja # To make an SMP kernel, the next two are needed
PNhe GMx&y2. Z #options SMP # Symmetric MultiProcessor Kernel
@u+]aI!`- `RT>}_j #options APIC_IO # Symmetric (APIC) I/O
fb7; |LF
)* : gqN ]#<4vl\ +QavYqPF device isa
A QU+mo G't$Qx,IC device eisa
f)rq%N & FkDmP`Od device pci
%Xd[(Q) 5ta `%R_ HWAdhDZ m@j?za9s M^Yh|%M ja'T+!k # ATA and ATAPI devices
#Pau\|e_ uc{Ihw device ata
g/_5unI}u ~At7 +F[ device atadisk # ATA disk drives
2W(s(-hD I|!OY`ko 8%mu8l MKCsv+ P5V}#;v \7eUw,~Q> # SCSI Controllers #没有SCSI设备不需要这段
K3&qq[8.e c):/!Q device ahb # EISA AHA1742 family
#zy:a% Es`Px_k device ahc # AHA2940 and onboard AIC7xxx devices
Wb_J(!da $Wol?)z device ahd # AHA39320/29320 and onboard AIC79xx devices
MY)O^I X$ r6Dz;uz device amd # AMD 53C974 (Tekram DC-390(T))
E~T-=ocKE n6>#/eUH device isp # Qlogic family
]cvwIc"> xu%k~4cB, device mpt # LSI-Logic MPT/Fusion
9RL`<,Q aK~8B_5k8 device ncr # NCR/Symbios Logic
8`{:MkXP -ad{tJV| device sym # NCR/Symbios Logic (newer chipsets)
,Vax&n+J }#+^{P3 ; options SYM_SETUP_LP_PROBE_MAP=0x40
rHI{aO7 I,DS@SK # Allow ncr to attach legacy NCR devices when
QL/(72K nF:4}qy\ # both sym and ncr are configured
4@gG<QJW U>SShpmZA Vt~{Gu-Y }6~hEc*/" device adv0 at isa?
M0"_^? y<3-?}.aZ device adw
Qljpx?E V &T~zh1 device bt0 at isa?
MJ)RvNF D)P ._? device aha0 at isa?
W
i.&e VGN5<?PrN device aic0 at isa?
!|uWH `RW HN/U UDFDJm$ R w\gTo device ncv # NCR 53C500
I@N8gn h"W,WxL8 device nsp # Workbit Ninja SCSI-3
]N]!o#q}L (mB&m@-N device stg # TMC 18C30/18C50
2pCaX\t Rv>-4@fMJ t}4,]ms Yh7t"=o # SCSI peripherals #没有SCSI设备不需要这段
,qwuLBW Dy&i&5E.-l device scbus # SCSI bus (required)
ATyEf5Id_ d-ko
^Y0 device da # Direct Access (disks)
j;r-NCBnz 7A7?GDW device sa # Sequential Access (tape etc)
**CR}
yV >'$Mp < device cd # CD
Y@iS_lR &-w
Cvp7 device pass # Passthrough device (direct SCSI access)
|e&\<LwsP djZqc5t S hWJ72c 29b9`NXt e9tjw[+A qR{=pR cjY-y-vO 6MW{,N # atkbdc0 controls both the keyboard and the PS/2 mouse
,`Z1m
o>n kD%( _K5 device atkbdc0 at isa? port IO_KBD
}8z?t:|S Ml5w01O device atkbd0 at atkbdc? irq 1 flags 0x1
>=>2m2z= ?V=ZIGj ru%y w9imKVry device vga0 at isa?
*^4"5X@ 33q}CzK ^
@5QP$. V!=,0zy~Z 3d]S!=4H" w&#]-|$ # syscons is the default console driver, resembling an SCO console
&z3o7rif$ @. l@\4m device sc0 at isa? flags 0x100
{P./==^0 ^CX6&d
(ZizuHC F>l]
9!P|m ?l )[7LR4 !pW0qX\1n # Floating point support - do not disable.
T^KKy0ZGM /~?*=}c^m device npx0 at nexus? port IO_NPX irq 13
ND;#7/$> cI*;k.KU p2](_}PK Fxz"DZY6 xp{tw$ ~
7s!VR # Serial (COM) ports
q9_OGd|P # W']6'O device sio0 at isa? port IO_COM1 flags 0x10 irq 4
0~S^Y1hH ;^*W+,4WB *)Zdz9E'1( eMsd37J # 我用的是8139和Dlink DFE-530TX网卡,大家可根据自己的网卡型号保留或删除
u#.2w)!D 9A=,E& # 使用公共的MII总线控制器代码的PCI以太网适配器
4HlQ&2O%# M2Qr(K| # 注意:一定要保留'device miibus'以确保可用
>bW#Zs,6 `^&OF uee # PCI Ethernet NICs that use the common MII bus controller code.
TJRCH>E[a ##*3bDf$-5 # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
t{96p77)= +<C!U' device miibus # MII bus support
z:*|a+cy Z9|P'R(l device fxp # Intel EtherExpress PRO/100B (82557, 82558)
L4HI0Mx /4Gt{ygSr device rl # RealTek 8129/8139
jLluj lo+A%\1 device vr # VIA Rhine, Rhine II
:F?C)F i/4>2y9/F4 device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
tD)J*]G ga +dt y)@wjH{6 i_%_ x* # Pseudo devices - the number indicates how many units to allocate.
L8B!u9% 77Y/!~kd pseudo-device loop # Network loopback
V,njO{Q ms]sD3z/W+ pseudo-device ether # Ethernet support
7<R E_/] 4r}51 N\ pseudo-device sl 1 # Kernel SLIP
?@86P|19 7@Qcc t4A pseudo-device ppp 1 # Kernel PPP
ZECfR>`x e^voW"?% pseudo-device tun # Packet tunnel.
zDG b7S{ z0 3K=aZ pseudo-device pty # Pseudo-ttys (telnet etc)
9'B `]/L oEv'dQ9 pseudo-device md # Memory "disks"
Dd|VMW= 2^7`mES pseudo-device gif # IPv6 and IPv4 tunneling
AK4t\D)K1 QXK{bxwC pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
/{I$ #:M 2,b$7xaf !nnC3y{G >(<f 0 # The `bpf' pseudo-device enables the Berkeley Packet Filter.
$&c*'3 *.[.
{qG( # Be aware of the administrative consequences of enabling this!
tw@X>
G1z 9(Xn>G'iT pseudo-device bpf #Berkeley packet filter
Di{de` wCBplaojJ (完)
:ws<-Qy At;LO9T3z h?U
O&( "{t$nVJ 我用的是8139网卡和Dlink DFE-530TX网卡,如果你用其他型号的网卡,需要察看当前目录的GENERIC 内核文件,找到描述自己的网卡型号的段并将其添加到新的内核文件里。其他的不改直接拷贝过来就可以用了。
P%n>Tg80M dZuOrTplA 接下来编译安装新内核:
UEL_uij ;_=&-mz # /usr/sbin/config kernel_wwwx #kernel_wwwx为你的内核文件名
o mx= Mtx 4'WZ # cd ../../compile/kernel_wwwx
~W/z96'
5 V7/Rby Q # make depend
h";L 53h0UL # make
#'}*dy/ :`sUt1Fw. # make install
h68 xet; &p,]w~d,U 重新启动(reboot)
-Y8B~@]P? $~)SCbL^5 7tp36 TE 3so%gvY.' 如果系统升级过源代码树,按下面方法编译内核:
l]SX@zTb j~MI<I+l[ # cd /usr/src
WIGi51yC.x rJB}qYD # make kernel KERNCONF=kernel_wwwx #kernel_wwwx为你的内核文件名
9gIrt 6 6]wIG$j 重新启动
,esmV- ar,7S&s