(一、系统安装)
'0:i<`qv#g .e@>
bLqy!QE 3o*FPO7? 前言
P-CB;\ . V$ps-t _d@=nK) Bn?:w\%Ue 写本文的初衷主要是记录下我一段时间学习使用FreeBSD建设网站平台的一些经验和体会。因为本人是菜鸟,所以很多地方不够完善。本文权当给初学者提供一个具体可操作的实例。所有操作步骤都是我边做边写。避免出现遗漏或一些不必要的小错误,给初学者带来麻烦。
YzAFC11, Po(]rQbE 本网站平台建设全过程包括FreeBSD系统的安装,web、ftp、mail、proxy服务器、视频点播服务器等。所有过程都在FreeBSD4.7环境下测试通过。
?vgH"W~3> NBjeHtT 由于写本文时参考了网上太多前辈和大侠的资料,无法一一列举。还请作者原谅。
@b2`R3}9R z%1{ 本连载文章前后关联很紧密,建议初学者一步一步来做。
9I`Y-D C9qJP^F 试验环境如下:
3NIUW!gr +R6a}d/K 硬件环境:普通pc机,双网卡。配制不需要高,主要是稳定,并能适应长时间开机。听前辈介绍AMD k6的cpu运行FreeBSD好像有点问题。不过我没有试验。建议用intel的。
][d,l\gu+s y:d{jG^ 软件环境:操作系统:FreeBSD4.7(4.8)
;gMgj$mI XX6 T$pA6 web服务器:Apache 1.3.27+modssl +mod_php4+mod_gzip+mod_fastcgi +mod_perl +mysql3.23
:~zv t /4$4h;_8 ftp服务器:Proftpd1.2.7+proftpd-mod-quotatab-1.2.4+mysql
Z)pz, #D*r]M mail服务器: iceblood前辈制作的qmail安装包(经过修改)+vqregister-2.5
jTb-;4N' g%xGOA proxy服务器:使用FreeBSD内置的NAT和PPP拨号+squid
)4R:)-"f k6"KB 视频点播服务器:Helix Universal Servevr (realserver9.01)
r[_4Lo@G "CQw/qZw 网络环境:我用的是adsl动态拨号方式,因为动态ip所存在的一些问题,我把所有的服务都装在一台机器上,且这台机器要直接与外网相连。静态ip更方便一些。(本文两种方式都会讨论)
dRI^@n -h#mn2U~3r zP!J/}z >O7~h[FN 第一步:安装系统
kS :\Oz\
JN'cXZJPn 关于安装过程网上有很多文章,这里不作详述。仅提出几点建议供大家参考:
G^wtE90 @ {#mpDX 1、 采用最小化安装。
5Y\!pf7SQ| f[sF:f(zI 2、 安装时启用inetd,并在编辑inetd.conf文件时,把带有“ftp”的行前面的“#”号去掉。这样作是为了以后安装软件时可以用ftp上传文件。
>^$2f&z DNkWOY#{ 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地址)。以下除系统安装部分,我都是采用终端方式操作。
\*0yaSQF Bfr'Zdw 4、 分区时将/home、/usr和/var划的大一些,因为/usr为程序目录,/var要存放日志,/home是用户主目录,我的用户文件如网页、ftp上传文件等都放在这里。还有最好保留一部分空间留作以后需要的时候用。我的机器上有2块硬盘,一快18.2G SCSI硬盘,一块40G IDE硬盘。我是这样划分的。
iWLa> z|, nmFC%p)4 128M /
npp[@*~ 06*rWu9P3 20G /home
`zpbnxOL$T Y[Ltrk{ 2G /ftp
UsQ4~e 4- kforu!C 256M /tmp
(k`{*!:1a FP^{=0 6G /usr
R?66b{O cK`"lxO 5G /var
>T jJA# AoaN22 其中/ftp是为匿名ftp用户访问专用。剩余空间留作备用。当然如果硬盘空间少的话,做我们的试验也是够用的。
!@A#=(4R4 fP HLXg5s 关于安装方面的文章,大家也可以参考delphij写的《FreeBSD服务器的安装与优化》。
http://community.freebsdchina.org/catalog.php?forum=34 一文。
%ZP+zhn} %7hB&[ 5 安装完系统后,要重新编译内核。目的是要系统支持Firrwall和提高运行效率。
J*fBZ.NO ILwn&[A0 首先确认系统是否安装了FreeBSD的内核支持。如果是最小安装,则需要运行/stand/sysinstall命令安装内核支持。方法如下:
otJ!UfpR8 a j\nrD1 # /stand/sysinstall
=~KsS}`1, !yOeW0/2[ 选Configure—Distributions—src—sys,内核文件将被安装在/usr/src/sys目录中。
Avlz=k1* C\ZkGX 注意:这之后的过程在终端上操作要方便许多。SecureCRT支持在终端界面上直接拷贝和粘贴文本内容。
!? 5U| qTQ!jN 转到内核文件目录
"xRBE\B Jb["4X;h # cd /usr/src/sys/i386/conf
<?Wti_ /M q2rUbU_A( 编辑内核文件
$2~\eG=u H vhuw&.\ # vi kernel_wwwx # kernel_wwwx为我的内核文件名
<plC_{Y:wu D]s]"QQ8 我的内核文件如下:
M$Zo.Bl$( ,)!u)wz #
(Y%Q|u qT:zEt5 # GENERIC -- Generic kernel configuration file for FreeBSD/i386
<M]h{BS= -62'}%?A<C #
E\nv~Y?SG NS)}6OI3~" # For more information on this file, please read the handbook section on
)6KMHG
!R-z% # Kernel Configuration Files:
s@hRqGd: YC_5YY(k #
!QI\Fz? 8vSse #
http://www.FreeBSD.org/doc/en_US.IS...fig-config.html ^D`v3d W1B)]IHc #
9[c%J*r 8X|r4otn4 # The handbook is also available locally in /usr/share/doc/handbook
vIl+#9L0 ^ci3F<?Q= # if you've installed the doc distribution, otherwise always see the
1?* 0[?ny`Y # FreeBSD World Wide Web server (
http://www.FreeBSD.org/) for the
&UCsBqIY 4MuO1W- # latest information.
*'Y@3vKE m!z|h9Ed #
f
h#C' sn UO*Ymj
1 # An exhaustive list of options and more detailed explanations of the
[%Bf<
J< bwM@/g%DL # device lines is also present in the ./LINT configuration file. If you are
!o=U19) Io4(f # in doubt as to the purpose or necessity of a line, check first in LINT.
@yXfBML?] r_e7a6 #
=0;}K@(J 4'4\,o # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246.2.48 2002/08/31 20:28:26 obrien Exp $
iy.2A!f^. I+>%uShm $N:Vo(* N,2s?Y_! machine i386
V7G7&' {!|}=45Z cpu I586_CPU
DrnJ;Hi" m-^8W[r+_ cpu I686_CPU
i
wxVl)QL )[mwP.T= ident kernel_wwwx #内核文件名,这个要和你的内核文件名一致
5zFR7/p{ dVB~Smsr maxusers 0
]?x:
Qm'yo <<=WY_m} #P]#9Ty: J_Ltuso options INET #InterNETworking
#ET/ = LK6; ?m options FFS #Berkeley Fast Filesystem
A;\7|'4 Q#h
9n] 5 options FFS_ROOT #FFS usable as root device [keep this!]
%AOja+ I$E.s*B9 options SOFTUPDATES #Enable FFS soft updates support
~%?`P/.o ]EwVpvTw options UFS_DIRHASH #Improve performance on big directories
|-V&O=!^+ 1]IQg;q options PROCFS #Process filesystem
O+}qQNe< `wF8k{Pb options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
WD Fjp FnJ?C&xK options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
;nC.fBu V=fEPM options SYSVSHM #SYSV-style shared memory
it] E-^2> p!k7C&]E options SYSVMSG #SYSV-style message queues
b'6-dU% 5_XV%-wM options SYSVSEM #SYSV-style semaphores
xss`Y,5? !mWiYpbU+ options P1003_1B #Posix P1003_1B real-time extensions
x.8TRMk^ ` PYJ^I0 options _KPOSIX_PRIORITY_SCHEDULING
f2,jh}4 >pU:Gr options ICMP_BANDLIM #Rate limit bad replies
h?bb/T+' Qne/g}PD` options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
8,0YD#x %tG*C,l] # output. Adds ~128k to driver.
/dv<qp U|g:`v7 options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
bdGIF'p% &\apwD # output. Adds ~215k to driver.
k)TSR5A A:7k+4 R+&jD;U{ ]p_@@QTC device tun 1
kOh{l: 2-+ 0ez(A options IPFIREWALL #防火墙
SM`w;?L:? K_K5'2dE options IPFIREWALL_FORWARD #允许透明代理
&3yD_P_3 i;!H!-sM options IPFIREWALL_VERBOSE #允许防火墙日志
fu90]upz~ k?2k'2dy options IPFIREWALL_VERBOSE_LIMIT=100 #限制日志
R'S0 zp6 8T(e.I options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包
,\qs4& UKM2AZ0lb options IPDIVERT #启用由ipfw divert使用的转向IP套接字
?s:d[To6 4C FB"?n0
)c8j} OK\A</8r # To make an SMP kernel, the next two are needed
b, :QT~g= @-+Q#
Zz` #options SMP # Symmetric MultiProcessor Kernel
Vb9',a?#n Br`IW #options APIC_IO # Symmetric (APIC) I/O
8>7&E- PG,_^QGCX o`Ta("9^ &gjF4~W] device isa
qbv#I; q`pP$i: device eisa
|^A ;&// .jj$ Kh q] device pci
QR>gt; U*3uq7 5< ja3 zL\OB?)5J *6} N =Z hcyM6:} # ATA and ATAPI devices
Ntbg`LGf'! -=(!g&0 device ata
*k19LI.5 hXA6D) device atadisk # ATA disk drives
|m2X+s9 DG?"5:Zd Ps 8%J; CP6LHkM9 Qci4J i F+vl] # SCSI Controllers #没有SCSI设备不需要这段
n/h,Lr)Z %?m$`9yU device ahb # EISA AHA1742 family
L@gWzC~?Q Ovj^IjG-` device ahc # AHA2940 and onboard AIC7xxx devices
0$-xw HvVts\f device ahd # AHA39320/29320 and onboard AIC79xx devices
d20gf:@BM k70|'* Kh device amd # AMD 53C974 (Tekram DC-390(T))
$ >EYhLBa HB7;0yt`: device isp # Qlogic family
l~M_S<4n A7n\h-b device mpt # LSI-Logic MPT/Fusion
CXC`sPY f{FDuIln device ncr # NCR/Symbios Logic
=XY\iV1J* qBCK40 device sym # NCR/Symbios Logic (newer chipsets)
Dre]AsgiV Iyyh!MVF options SYM_SETUP_LP_PROBE_MAP=0x40
lgb?)= ma((2My'H # Allow ncr to attach legacy NCR devices when
.<Zy|1
4 c.j$9=XLBG # both sym and ncr are configured
,JEFGI{ D)d~3`=# #cCL.p"] Q_Gi]M9 device adv0 at isa?
r3\cp0P;s DuOG { device adw
)'4k|@8| #/Eb*2C`b device bt0 at isa?
W]5USFan TqddOp device aha0 at isa?
y8rm )lZp9O device aic0 at isa?
dx+hhg \L $]/Zxd jb^N|zb oDU ;E device ncv # NCR 53C500
g2T -TG'd [!U?}1YQ device nsp # Workbit Ninja SCSI-3
.;*s`t -
h9?1vc7 device stg # TMC 18C30/18C50
wy}k1E'M %!PM&zV 9t#S= DP 2!$gyu6bpG # SCSI peripherals #没有SCSI设备不需要这段
yd?x=| &w1P\4?G device scbus # SCSI bus (required)
mljh|[ fOMvj%T@2 device da # Direct Access (disks)
zBe8,, e `IY/9'vT device sa # Sequential Access (tape etc)
!ki.t %C=]1Q=T) device cd # CD
|e2be1LD }eRD|1 device pass # Passthrough device (direct SCSI access)
WuZ/C_ w18y}mS"H .k0~Vh2u A21N|$[ YR;^hs? <E0UK^-} |USX[jm\ 1 %,a =,v # atkbdc0 controls both the keyboard and the PS/2 mouse
b/Xbs0q Z%n(O(^L device atkbdc0 at isa? port IO_KBD
oun;rMq \R3H+W device atkbd0 at atkbdc? irq 1 flags 0x1
78/N *>+,(1Fz E_bO9nRHV Y
"VY%S^ device vga0 at isa?
PxfY&;4n! z$kenhFG/ J:kmqk! \l@,B +) xu'yVt9RC $]rj73p^tH # syscons is the default console driver, resembling an SCO console
{pHM},WJ dS5a
device sc0 at isa? flags 0x100
l}lIi8 6}KZp~s '`Wwt.A aN,M64F $e /^u[~: bk\yCt06y; # Floating point support - do not disable.
VV9_`myN7 -k7X:!>QHC device npx0 at nexus? port IO_NPX irq 13
bHI<B)=` V,[d66H=N wX*K]VMn B.L]Rk\4 d`(@_czdF -Fn}4M # Serial (COM) ports
dzkw$m^@^ zH*KYB device sio0 at isa? port IO_COM1 flags 0x10 irq 4
H~E(JLcU }YHX-e<Yx] <~)kwq' jH6&q~# # 我用的是8139和Dlink DFE-530TX网卡,大家可根据自己的网卡型号保留或删除
v$ub~Q6W &EpAg@9! # 使用公共的MII总线控制器代码的PCI以太网适配器
xrN
&N_K# # (- Qx # 注意:一定要保留'device miibus'以确保可用
@e'5E^ RAp=s # PCI Ethernet NICs that use the common MII bus controller code.
/P
2[:[w )<xypDQ # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
&< !Ufa& ":nQgV\9 device miibus # MII bus support
$*W6A/%O ~M(5Ho device fxp # Intel EtherExpress PRO/100B (82557, 82558)
1=]kWp`i 0Ld@H) device rl # RealTek 8129/8139
<Tot|R; G\a8B#hg device vr # VIA Rhine, Rhine II
)nd\7|5# @l0|*lo% device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
.T*GN|@$! XB[<;*Iz 0j_bh,zG# 8O"U 0 # Pseudo devices - the number indicates how many units to allocate.
nIvJrAm4k Z'k|u4ZC pseudo-device loop # Network loopback
5H9r=a d|iy#hy"_ pseudo-device ether # Ethernet support
Q*XE
h q}FVzahv pseudo-device sl 1 # Kernel SLIP
{vE(l' aceZ3U>W pseudo-device ppp 1 # Kernel PPP
C8L'si . ]8E7 pseudo-device tun # Packet tunnel.
n\ Hs@. sk|=% }y pseudo-device pty # Pseudo-ttys (telnet etc)
| 0,vQv 8#&q$kE pseudo-device md # Memory "disks"
1LY8Ma]E c~o+WI
Ym pseudo-device gif # IPv6 and IPv4 tunneling
M+!x}$&v w%zRHf8C pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
O MX-_\") b,IocD6v;P .{S8f#p9T efY8M2 # The `bpf' pseudo-device enables the Berkeley Packet Filter.
1+7GUSIb ,2]X}&{i # Be aware of the administrative consequences of enabling this!
O$ HBO @WKzX41' pseudo-device bpf #Berkeley packet filter
k;5P om o-cAG{.WC (完)
g_Im;1$ =@)d5^<5F (7DXRcr< 5ZY)nelc 我用的是8139网卡和Dlink DFE-530TX网卡,如果你用其他型号的网卡,需要察看当前目录的GENERIC 内核文件,找到描述自己的网卡型号的段并将其添加到新的内核文件里。其他的不改直接拷贝过来就可以用了。
{ccIxL
/~ 7_# 1Ec|; 接下来编译安装新内核:
4c+$%pq5 wdvLx # /usr/sbin/config kernel_wwwx #kernel_wwwx为你的内核文件名
"3F;cCDv] OD=!&LM # cd ../../compile/kernel_wwwx
#pHs@uvO _U{&@}3
# make depend
&J!aw "<i SZ # make
CD0VfA>Z Xe+,wW3YF # make install
s9oO%e< LG]3hz9^9 重新启动(reboot)
&5t :H 8b -xD*tf* aV1lJ;0 Hk7K`9 如果系统升级过源代码树,按下面方法编译内核:
-]:GL>b 7'NS9| # cd /usr/src
[\Qr. 2 cubUq5 # make kernel KERNCONF=kernel_wwwx #kernel_wwwx为你的内核文件名
\x>65; O3o: qly! 重新启动
>ulY7~wUv \b*X:3g* ^S#t|rN
G9g6.8*& FreeBSD网站平台建设全过程(二、接入Internet并配制代理服务)
`8\Ja$ = /VHi> H UWxPIu .C]cK%OO
N 使用adsl接入Internet有两种情况,通过拨号获取动态ip或服务商直接给定静态ip。后者配制起来较容易。本文先讨论动态ip如何设置。
3^=+gsc jKIc09H| 由于第一步重新编译内核时已经加进了对Firewall的支持。这里就可以通过直接编辑/etc/ppp/ppp.conf文件和/etc/rc.conf文件就可以上网并支持NAT方式透明代理了。
4Tct V|MY!uV # vi /etc/ppp/ppp.conf
OJ4SbI Wn|&cG9 我的ppp.conf文件内容如下:(注意set前要留空格)
xdy^^3" smQVWs> default:
y/c%+Ca/ kWj
\x|E
set log Phase tun command
,572n[-q X%9*O[6{ set ifaddr 10.0.0.1/0 10.0.0.2/0
4F MAz^ Brd,Eg adsl: # 配置代号
Cz^Q5F` fYrGpW(` set device PPPoE:vr0 # vr0 改成你连接ADSL modem的网卡名
(ozb%a#B O3NWXe< set mru 1492
[t0rfl{. /b,TpuM^ set mtu 1492
T{vR, iwY'4Z
e set authname username # username是拨号用户名
YW;
Hk1 N6Z{BLZ set authkey password # password是拨号密码
]|:uU =GR'V set dial
Dmdy=&G 8n?kZY$, set login
9j|gdfb%ml <JI&
{1 add default HISADDR
1MA@JA:T G.U5)4_^ (完)
Rn+4DcR 1QJBb \ 7k=fZ$+O mW`oq # vi /etc/rc.conf
J0220 _ z"F*\xa 我的rc.conf文件内容如下:(动态ip)
=fyyqb4 eR!G[C w- # -- sysinstall generated deltas -- # Tue Jul 15 21:20:28 1997
@=uN\) 1 b*,3<