(一、系统安装)
L9":= ky-9I<Z,, dw]jF=u ._IBO; *@ 前言
/32x|Ow# 1 Z.
G<' wxSJ E+e:UBeUV 写本文的初衷主要是记录下我一段时间学习使用FreeBSD建设网站平台的一些经验和体会。因为本人是菜鸟,所以很多地方不够完善。本文权当给初学者提供一个具体可操作的实例。所有操作步骤都是我边做边写。避免出现遗漏或一些不必要的小错误,给初学者带来麻烦。
Doc_rQYku e.jbFSnA 本网站平台建设全过程包括FreeBSD系统的安装,web、ftp、mail、proxy服务器、视频点播服务器等。所有过程都在FreeBSD4.7环境下测试通过。
V+&C_PyC ~V6wcXd 由于写本文时参考了网上太多前辈和大侠的资料,无法一一列举。还请作者原谅。
|QB[f*y5 !U8n=A#,- 本连载文章前后关联很紧密,建议初学者一步一步来做。
%uy5la 24Uvi:B?~ 试验环境如下:
5|0} X{G&r$ 硬件环境:普通pc机,双网卡。配制不需要高,主要是稳定,并能适应长时间开机。听前辈介绍AMD k6的cpu运行FreeBSD好像有点问题。不过我没有试验。建议用intel的。
#1oyRD- 5'zD}[2 软件环境:操作系统:FreeBSD4.7(4.8)
ErXzKf u</LgOP`- web服务器:Apache 1.3.27+modssl +mod_php4+mod_gzip+mod_fastcgi +mod_perl +mysql3.23
<P1yA>=3` :M
_N ftp服务器:Proftpd1.2.7+proftpd-mod-quotatab-1.2.4+mysql
ZF~@a+o ,37\8y?o\ mail服务器: iceblood前辈制作的qmail安装包(经过修改)+vqregister-2.5
N- :.z]j#_ S{#L7S proxy服务器:使用FreeBSD内置的NAT和PPP拨号+squid
K]c\3[vR .bvEE 视频点播服务器:Helix Universal Servevr (realserver9.01)
dcbE<W#ss &Y3r'" 网络环境:我用的是adsl动态拨号方式,因为动态ip所存在的一些问题,我把所有的服务都装在一台机器上,且这台机器要直接与外网相连。静态ip更方便一些。(本文两种方式都会讨论)
5Gw B1}q pa8R;A70Dl hX9vtV5L H^r;,Q$9 第一步:安装系统
*\PCMl S@Q4fmH 关于安装过程网上有很多文章,这里不作详述。仅提出几点建议供大家参考:
~duF2m 72 !rZ r:@ 1、 采用最小化安装。
5l[&-:(Lh r!e:sJAB. 2、 安装时启用inetd,并在编辑inetd.conf文件时,把带有“ftp”的行前面的“#”号去掉。这样作是为了以后安装软件时可以用ftp上传文件。
WCUaXvw xfK@tLEZ-1 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地址)。以下除系统安装部分,我都是采用终端方式操作。
ptMDhMVW e-Ma8+X\ 4、 分区时将/home、/usr和/var划的大一些,因为/usr为程序目录,/var要存放日志,/home是用户主目录,我的用户文件如网页、ftp上传文件等都放在这里。还有最好保留一部分空间留作以后需要的时候用。我的机器上有2块硬盘,一快18.2G SCSI硬盘,一块40G IDE硬盘。我是这样划分的。
iininITOS{ ykat0iqo 128M /
;Qq<5I"y YgL{*XYAt 20G /home
U~1)a(Yu; )
o`ep{<t 2G /ftp
g`\5!R1 `b?o%5V2x 256M /tmp
S}/5W ^bG91"0A 6G /usr
!@3"vd{^ 5-?*Boi>i 5G /var
My<.^~ 2D)B%nM[ 其中/ftp是为匿名ftp用户访问专用。剩余空间留作备用。当然如果硬盘空间少的话,做我们的试验也是够用的。
'B yB1NL #bCQEhCy 关于安装方面的文章,大家也可以参考delphij写的《FreeBSD服务器的安装与优化》。
http://community.freebsdchina.org/catalog.php?forum=34 一文。
1=z6m7@'- 4U>g0 安装完系统后,要重新编译内核。目的是要系统支持Firrwall和提高运行效率。
^bk:g}o l#bE_PD; 首先确认系统是否安装了FreeBSD的内核支持。如果是最小安装,则需要运行/stand/sysinstall命令安装内核支持。方法如下:
BHN EP |= +*L<"@ # /stand/sysinstall
k$3Iv"gbx Cm%|hk>fQ 选Configure—Distributions—src—sys,内核文件将被安装在/usr/src/sys目录中。
</]a`h] #sM`>KG6T1 注意:这之后的过程在终端上操作要方便许多。SecureCRT支持在终端界面上直接拷贝和粘贴文本内容。
/ ?Hq {L/hhKT 转到内核文件目录
zw[ #B # as3*49^9 # cd /usr/src/sys/i386/conf
;:obg/;uJ jG["#5<? 编辑内核文件
H[2W(q6 @id!F<+%oD # vi kernel_wwwx # kernel_wwwx为我的内核文件名
H;{IOBo IN7Cpg~9% 我的内核文件如下:
B]u !BBjC ,{2= nb[ #
%sCG}?
y A9Icn>3?`( # GENERIC -- Generic kernel configuration file for FreeBSD/i386
H/}W_ h^^ bJoP@s #
O;+
sAt L(o#)I>j # For more information on this file, please read the handbook section on
Ubm]V{7 k&lfxb9pd # Kernel Configuration Files:
^C'{# p" Qo\?(EM #
}'`}| pM$ 3/V0w|ZgD #
http://www.FreeBSD.org/doc/en_US.IS...fig-config.html |.;*,bb|3 t?wVh0gT #
T/234;Uf| 9m%2&fjK^ # The handbook is also available locally in /usr/share/doc/handbook
XwIKpr8 <f#pS[A # if you've installed the doc distribution, otherwise always see the
z1nKj\AM2 "7J38Ej\ # FreeBSD World Wide Web server (
http://www.FreeBSD.org/) for the
XaF;IS@A moRo>bvN~ # latest information.
?7uK:'8 J
p)I9k,Ez #
*i>hFNLdOM NA=m<n# # An exhaustive list of options and more detailed explanations of the
MU:q`DRr i} 5M'~F # device lines is also present in the ./LINT configuration file. If you are
apjoIO-< hc*t Q2 # in doubt as to the purpose or necessity of a line, check first in LINT.
RQ;w$I\ $Y M(NC #
C#n.hgo>I k)R~o
b # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246.2.48 2002/08/31 20:28:26 obrien Exp $
SP"t2LTP *Hz]<b? fd$nAE upnX7as machine i386
9[R+m3V/` +GncQs
y cpu I586_CPU
p
z\8Bp}yo Q^*4FH!W cpu I686_CPU
Irui{%T <%.lPO]&E ident kernel_wwwx #内核文件名,这个要和你的内核文件名一致
t;V^OGflv L7[f-cK2: maxusers 0
gx8i|] Tvt(nWn(H1 P9W?sPnC5 t;`ULp~& options INET #InterNETworking
/ke[nr mt~E&Z(A options FFS #Berkeley Fast Filesystem
E24j(> i.{.koH< options FFS_ROOT #FFS usable as root device [keep this!]
YJ|U|[ p8FXlTk options SOFTUPDATES #Enable FFS soft updates support
D$+g5u) 86);0EBX options UFS_DIRHASH #Improve performance on big directories
6^lix9q7 0?cJ>)N options PROCFS #Process filesystem
~OWpk)Vq (8~D^N6Z options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
a"l\_D'.K8 yKy
)%i options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
k"|Fu 7AlL,&+ options SYSVSHM #SYSV-style shared memory
qh+&Z x~ EQ.K+d*K][ options SYSVMSG #SYSV-style message queues
-A@/cS%p l6zYiM options SYSVSEM #SYSV-style semaphores
PS8^=
AH-BZ8 options P1003_1B #Posix P1003_1B real-time extensions
\OXQ%J2v eD8e0
D'S options _KPOSIX_PRIORITY_SCHEDULING
gVrfZ&XF84 !hjF"Pa options ICMP_BANDLIM #Rate limit bad replies
rZWs-]s6t Ckc5;:b&m options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
)2Bb,p<Wr H>o \C # output. Adds ~128k to driver.
%|j8#09 O`5h jq# options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
\AIFIy h^
K]ASj # output. Adds ~215k to driver.
[N#4H3GM8 Km,%p@`m o/ 7[
G {$#88Qa\- device tun 1
IJVzF1vC [] el4.J, options IPFIREWALL #防火墙
[.}Uzx xz,o Mlw options IPFIREWALL_FORWARD #允许透明代理
m>RtKCtP j^WYMr, options IPFIREWALL_VERBOSE #允许防火墙日志
t1G__5wp M|Nh(kvH options IPFIREWALL_VERBOSE_LIMIT=100 #限制日志
9kB R /{ |o+*Iy) options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包
b
0qA [H{@<* options IPDIVERT #启用由ipfw divert使用的转向IP套接字
U#&+n-npO Kr[oP3 s4QCun~m 4H NaE{O4 # To make an SMP kernel, the next two are needed
B]vR=F}* +prUau* #options SMP # Symmetric MultiProcessor Kernel
ns*:mGh #SG.`J<% #options APIC_IO # Symmetric (APIC) I/O
dS\!tdHP-Q 3y,2RernK @biU@[D -+M360 device isa
c&N;r|N L|L|liWd device eisa
g5RH:]DV KMK8jJ device pci
^tjw }sE !
,{zDMA S^;;\0#NK bWSc&/9y *l;S"}b*,_ JU.!< # ATA and ATAPI devices
b(CO7/e> ~y?Nn8+&f device ata
$VB
dd~f \XYidj device atadisk # ATA disk drives
g"k4Z 2r;h"> a
9{:ot8, _aBy>=2c$ `SOQPAnK+; _RUL$Ds # SCSI Controllers #没有SCSI设备不需要这段
`6lOq H ^G2M4+W| device ahb # EISA AHA1742 family
4HR36=E6 cy)-Rfg device ahc # AHA2940 and onboard AIC7xxx devices
n#}~/\P6 ^#Mp@HK device ahd # AHA39320/29320 and onboard AIC79xx devices
F" M 4w#2m>. device amd # AMD 53C974 (Tekram DC-390(T))
'7/F]S0K N{~P}Sw device isp # Qlogic family
em5~4;&' .9WOTti device mpt # LSI-Logic MPT/Fusion
Bs` {qmbC Z4c'1-lh device ncr # NCR/Symbios Logic
/qMnIo
KeRC8mYp device sym # NCR/Symbios Logic (newer chipsets)
?qi~8.<w K~2sX>l options SYM_SETUP_LP_PROBE_MAP=0x40
u|T]Ne [ZC\8tP`V # Allow ncr to attach legacy NCR devices when
/}J_2 Qe\vx1GRLH # both sym and ncr are configured
@x!,iT s^SU6P/] "(vK.-T 7(uz*~Z?`0 device adv0 at isa?
y.}{KQ"a* %p$XK(6 device adw
1G"ohosmF *S"RU~1_ device bt0 at isa?
Jwfb%Xge~ x;$ESPPg device aha0 at isa?
M:/(~X{? JqZt1um device aic0 at isa?
M.
%
p'^5 $5.52 @/|g|4 "]kzt ux device ncv # NCR 53C500
4}k@p>5v' !02y'JS1 device nsp # Workbit Ninja SCSI-3
hc[J,yG [Eccj`\e g device stg # TMC 18C30/18C50
%OB>FY:| IW&*3I<K +Ugy=678Tr >
Xh=P% # SCSI peripherals #没有SCSI设备不需要这段
8h }a:/ o $W@@aM device scbus # SCSI bus (required)
cTzR<Yr ?upd device da # Direct Access (disks)
t-o,iaPG3 t&EizH$ device sa # Sequential Access (tape etc)
4H%#Sn#L^! f<iK% device cd # CD
)[J!{$&y ~tyqvHC device pass # Passthrough device (direct SCSI access)
j6RV{Lkr_ c0o Z7)*} "igA^^?X1N R9 Ab.t ]Idwy|eG T4Vp0i ]'[:QGr A[^#8evaK # atkbdc0 controls both the keyboard and the PS/2 mouse
|9\i+)C i!*<LIq device atkbdc0 at isa? port IO_KBD
axph]o@ y@ =}Zl
E device atkbd0 at atkbdc? irq 1 flags 0x1
cW_wIy\]& i%.k{MY f=}T^Z< O/FI>RT\H device vga0 at isa?
[j5+PV :wXiz`VH %J9u?-~ Hv/5) fs;\_E[) V^R,j1* # syscons is the default console driver, resembling an SCO console
k{#k: v]EZYEXFL) device sc0 at isa? flags 0x100
6E
K <9M 5,##p"O( ui,!_O .c
%G\nl 8y<.yfgG <mlN\BcX; # Floating point support - do not disable.
l+>Y JygJ4RI%j device npx0 at nexus? port IO_NPX irq 13
du$M H`fJ<So? }|2A6^FH. {*F
=&D JxwKTFU'3O xWXLk )A # Serial (COM) ports
@ Do.Wgt O50<h O]l device sio0 at isa? port IO_COM1 flags 0x10 irq 4
\V!{z;.fA Pg:xC9w4 &z40l['4bz 0$c(<+D # 我用的是8139和Dlink DFE-530TX网卡,大家可根据自己的网卡型号保留或删除
e
ar:`11z B !,&{[D
# 使用公共的MII总线控制器代码的PCI以太网适配器
Nv. LEPTL#WT1 # 注意:一定要保留'device miibus'以确保可用
n
nAtXVy 035jU ' # PCI Ethernet NICs that use the common MII bus controller code.
YR0AI l:L o*/;Zp== # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
au+Jz_$) A :KZyd"Z device miibus # MII bus support
SO *oBA' =TNFAt device fxp # Intel EtherExpress PRO/100B (82557, 82558)
tmq?h%O> y[85eM device rl # RealTek 8129/8139
qQ^CSn98J =|aZNHqH device vr # VIA Rhine, Rhine II
(?8i^T?WP= yUJ#LDW device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
u8KQV7E ^
'|y^t 'A.5T%n- (>A#|N1U # Pseudo devices - the number indicates how many units to allocate.
[(_,\:L${ ,)*[Xa_n pseudo-device loop # Network loopback
aWJ
BYw6{L PkyX,mr#1 pseudo-device ether # Ethernet support
c}n66qJF5 A|1xK90^XT pseudo-device sl 1 # Kernel SLIP
KCbJ^Rln =,;$d*h pseudo-device ppp 1 # Kernel PPP
3Fn}nek
hx&fV#m pseudo-device tun # Packet tunnel.
9q$^x/z! I*Dj@f` pseudo-device pty # Pseudo-ttys (telnet etc)
)#M$ov K;"oK pseudo-device md # Memory "disks"
*j]Bo,AC 7L&,Na pseudo-device gif # IPv6 and IPv4 tunneling
0]*W0#{Zj $t^Td< pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
Ewr2popK kI!@J6
~ !mY0odH v{|y,h&]a # The `bpf' pseudo-device enables the Berkeley Packet Filter.
CSoVB[vS KzV|::S^ # Be aware of the administrative consequences of enabling this!
C^,baCX eq%cRd]u pseudo-device bpf #Berkeley packet filter
xS%&l)dT :3R3>o6m (完)
O>hh 0lniu=xmQ- 8g)$%Fy+N zF^H*H 我用的是8139网卡和Dlink DFE-530TX网卡,如果你用其他型号的网卡,需要察看当前目录的GENERIC 内核文件,找到描述自己的网卡型号的段并将其添加到新的内核文件里。其他的不改直接拷贝过来就可以用了。
.hxFFk%5 v&;JVai 接下来编译安装新内核:
]!^wB 3j HLqN=vE6 # /usr/sbin/config kernel_wwwx #kernel_wwwx为你的内核文件名
+,YK}?e NY<qoV # cd ../../compile/kernel_wwwx
hy;V~J# am3.Dt2\ # make depend
h>*3i# G)[gLD{g? # make
xLFMC?I $rk=#;6]v; # make install
!ck~4~J D:j5/ * 重新启动(reboot)
. G25D w=!xTA Tim/7*vx !:5'MI@ 如果系统升级过源代码树,按下面方法编译内核:
w@R" g%k- 9#1?Pt^{< # cd /usr/src
s 7wA3|9 h@*I(ND< # make kernel KERNCONF=kernel_wwwx #kernel_wwwx为你的内核文件名
bXOM=T {aV,h@> 重新启动
q1L>nvE g||
q
3 cE`qfz %7`eT^ FreeBSD网站平台建设全过程(二、接入Internet并配制代理服务)
{`*Fu/Upb +924_,zF "2-D[rYZ Z]{=Jy!F 使用adsl接入Internet有两种情况,通过拨号获取动态ip或服务商直接给定静态ip。后者配制起来较容易。本文先讨论动态ip如何设置。
mDp8JNJNE {g[kn^| 由于第一步重新编译内核时已经加进了对Firewall的支持。这里就可以通过直接编辑/etc/ppp/ppp.conf文件和/etc/rc.conf文件就可以上网并支持NAT方式透明代理了。
._j?1Fw` |P&
\C8h # vi /etc/ppp/ppp.conf
G#` <>$CYTb 我的ppp.conf文件内容如下:(注意set前要留空格)
gV9bt~ O86p]Lr default:
`?[,1 p ]jLs|tat set log Phase tun command
n05GM.|*s qTbc?S46pt set ifaddr 10.0.0.1/0 10.0.0.2/0
j~.tyxOq# 0S>L0qp adsl: # 配置代号
|BhL. /CyFe<