(一、系统安装)
]=A=VH& 7g(,$5 ;6N@raP7 6d~[M y 前言
\tc`Aj%K &FrW(>2 )A]E:]2 8Z;wF 写本文的初衷主要是记录下我一段时间学习使用FreeBSD建设网站平台的一些经验和体会。因为本人是菜鸟,所以很多地方不够完善。本文权当给初学者提供一个具体可操作的实例。所有操作步骤都是我边做边写。避免出现遗漏或一些不必要的小错误,给初学者带来麻烦。
*G"vV>OSV 0{ovLzW 本网站平台建设全过程包括FreeBSD系统的安装,web、ftp、mail、proxy服务器、视频点播服务器等。所有过程都在FreeBSD4.7环境下测试通过。
{7^7)^@ yteJHaq 由于写本文时参考了网上太多前辈和大侠的资料,无法一一列举。还请作者原谅。
'jp nQcwxx w$J0/eX{A 本连载文章前后关联很紧密,建议初学者一步一步来做。
H-%)r&"vn MF>1u% 试验环境如下:
?>lvV+3^` u@SE)qg 硬件环境:普通pc机,双网卡。配制不需要高,主要是稳定,并能适应长时间开机。听前辈介绍AMD k6的cpu运行FreeBSD好像有点问题。不过我没有试验。建议用intel的。
Y21,!$4gb Q1qf'u 软件环境:操作系统:FreeBSD4.7(4.8)
owA3>E5t& ZoJ:4uo
N` web服务器:Apache 1.3.27+modssl +mod_php4+mod_gzip+mod_fastcgi +mod_perl +mysql3.23
c nAwoTt4 'U<-w$!f+^ ftp服务器:Proftpd1.2.7+proftpd-mod-quotatab-1.2.4+mysql
{;4AdZk &&e{ 9{R mail服务器: iceblood前辈制作的qmail安装包(经过修改)+vqregister-2.5
EK:!.Fl 9wLV\>i[k proxy服务器:使用FreeBSD内置的NAT和PPP拨号+squid
J~z;sTR 7)zn[4v7qt 视频点播服务器:Helix Universal Servevr (realserver9.01)
7+aTrE{ "rz|sbj 网络环境:我用的是adsl动态拨号方式,因为动态ip所存在的一些问题,我把所有的服务都装在一台机器上,且这台机器要直接与外网相连。静态ip更方便一些。(本文两种方式都会讨论)
n8"S;:Zm @F_#d)+%> RYMOLX84 n50XGv 第一步:安装系统
v'`9^3(-
\M>+6m@w 关于安装过程网上有很多文章,这里不作详述。仅提出几点建议供大家参考:
]}Hcb)'j@ &_
er_V~ 1、 采用最小化安装。
8ID
fYJ fRo_rj _ 2、 安装时启用inetd,并在编辑inetd.conf文件时,把带有“ftp”的行前面的“#”号去掉。这样作是为了以后安装软件时可以用ftp上传文件。
V.;,1% )L#C1DP# 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地址)。以下除系统安装部分,我都是采用终端方式操作。
>V:g'[b 7*5$=z4,1 4、 分区时将/home、/usr和/var划的大一些,因为/usr为程序目录,/var要存放日志,/home是用户主目录,我的用户文件如网页、ftp上传文件等都放在这里。还有最好保留一部分空间留作以后需要的时候用。我的机器上有2块硬盘,一快18.2G SCSI硬盘,一块40G IDE硬盘。我是这样划分的。
gx&BzODPd0 hx$-d}W{ 128M /
Qg+0(odd d)|{iUcW 20G /home
IC}?oXs5G }zVPdBRfm 2G /ftp
ADRjCk}I M-KjRl 256M /tmp
8;7Y}c $3](6 6G /usr
}fw;{&s{z D%cWw0Oq 5G /var
ouKID_' \ief [ 其中/ftp是为匿名ftp用户访问专用。剩余空间留作备用。当然如果硬盘空间少的话,做我们的试验也是够用的。
+~J?/ c8mcJAc 关于安装方面的文章,大家也可以参考delphij写的《FreeBSD服务器的安装与优化》。
http://community.freebsdchina.org/catalog.php?forum=34 一文。
(x9d7$2 $NP5Z0v7 安装完系统后,要重新编译内核。目的是要系统支持Firrwall和提高运行效率。
7G}vQO 0N.tPF} 首先确认系统是否安装了FreeBSD的内核支持。如果是最小安装,则需要运行/stand/sysinstall命令安装内核支持。方法如下:
Q[i/] ug!DL=ZW # /stand/sysinstall
BDY@&vF }x4,a6^ 选Configure—Distributions—src—sys,内核文件将被安装在/usr/src/sys目录中。
1E!0N`E .:,RoK1 注意:这之后的过程在终端上操作要方便许多。SecureCRT支持在终端界面上直接拷贝和粘贴文本内容。
lpkg(J#& 0j%@P[zQ 转到内核文件目录
dwks"5l }*l V # cd /usr/src/sys/i386/conf
~I6Er6$C^ ,YFuMek 编辑内核文件
NUBzm nA>8
GqhnE> # vi kernel_wwwx # kernel_wwwx为我的内核文件名
Nd/iMV6V; p2|c8n== 我的内核文件如下:
B?c9cS5Mj zcItZP #
W5?F?Dp!v ZjY_AbD # GENERIC -- Generic kernel configuration file for FreeBSD/i386
=flgKRKk.r ~,yHE3B\G #
B+|E|8" p8y_uNQE # For more information on this file, please read the handbook section on
1QM*oj: J=>?D@K # Kernel Configuration Files:
J=67As /B"h#v-o #
94r8DkI cH6ie?KvAo #
http://www.FreeBSD.org/doc/en_US.IS...fig-config.html f&t]O$ 9BB<.
p #
hi,! Y-&r_s_~ # The handbook is also available locally in /usr/share/doc/handbook
,s0 E]]( Fa^5.p # if you've installed the doc distribution, otherwise always see the
i](,s. cs`/^2Vf"# # FreeBSD World Wide Web server (
http://www.FreeBSD.org/) for the
Y."ujo #bB %a+X\\v2 # latest information.
R3F>"(P@tS j~V@0z. #
w.J[3m/ e;pVoRI # An exhaustive list of options and more detailed explanations of the
hu\HK81m R|H9AM
~E # device lines is also present in the ./LINT configuration file. If you are
"!XeK| Wi m}0US;c#f # in doubt as to the purpose or necessity of a line, check first in LINT.
B{!)GZ(} NAhV8 #
jD3,z* ~\/>b}^uf' # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246.2.48 2002/08/31 20:28:26 obrien Exp $
0CI?[R\ }gyJaMA VB*N;bM^ (6z^m?t? machine i386
exV6&bdu hC<X\yxe cpu I586_CPU
'P}"ZHW Mm-FdP
m cpu I686_CPU
:SG9ygq' 6BVV2j)zl: ident kernel_wwwx #内核文件名,这个要和你的内核文件名一致
.%`|vGF )7=B]{B_ maxusers 0
P]T(I/\g (w]w
2&YD !U}A1) +]
B options INET #InterNETworking
*wP8)yv7 +FQ:Q+ options FFS #Berkeley Fast Filesystem
? AP2Opsl "e g`3v options FFS_ROOT #FFS usable as root device [keep this!]
%@ $h?HP `3kE$h# options SOFTUPDATES #Enable FFS soft updates support
Y\BB;"x1 Ri4_zb options UFS_DIRHASH #Improve performance on big directories
UT [7 J VP\HPSp options PROCFS #Process filesystem
rB?u.jn0T &d`Umm] options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
rMSB|*_ .=rv,PWjZ options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
j2lo~J) >h<eEv/ options SYSVSHM #SYSV-style shared memory
f2_LfbvH UA{sUj+? options SYSVMSG #SYSV-style message queues
# j*$ `W; >OE.6)'Rm options SYSVSEM #SYSV-style semaphores
[Z,AquCU( u_@%}zo?5* options P1003_1B #Posix P1003_1B real-time extensions
yk#yrxM twt
Bt L options _KPOSIX_PRIORITY_SCHEDULING
lf0/0KH \l{*1lQ` options ICMP_BANDLIM #Rate limit bad replies
mW1Sd#0 p\:_E+lsU options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
aRq7x~j
)\ 8_>\A=
E
# output. Adds ~128k to driver.
:84ja>`c hiaj!&+Q options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
G#5Cyu<r! @iUzRsl # output. Adds ~215k to driver.
3`TC* v Q+}rHf`[ qh0)~JL4 &o^ wgmS device tun 1
/`\-.S9 vPmP<c)cb options IPFIREWALL #防火墙
h@Ea$1'e, 7EY~5U/4 options IPFIREWALL_FORWARD #允许透明代理
\bQ|O7s 7;;W{W% options IPFIREWALL_VERBOSE #允许防火墙日志
ro@Zbm;P ,M7sOp6} options IPFIREWALL_VERBOSE_LIMIT=100 #限制日志
f Otrn |C'w] QYm options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包
/2>-h-zBjw j6Jz options IPDIVERT #启用由ipfw divert使用的转向IP套接字
rRcfZZ~` M y;0.P?Il" '`"LX!"ZO 78+H|bH8 # To make an SMP kernel, the next two are needed
*IGxa =d~]*[8 #options SMP # Symmetric MultiProcessor Kernel
n8[sR;r5f x@DXW( #options APIC_IO # Symmetric (APIC) I/O
eno*JK M =yZ5~3 ?MKf=!w P)1@HDN== device isa
2@08 V| `"AjbCL device eisa
}S*6+4 z$7YC49^ device pci
+Jt"JJ>% k :FG}k Y Q)#<T]~= oCy52Bm.! HZ8
j[kO :N8D1e-a # ATA and ATAPI devices
<kLY1EILM 8S]Mf*~S' device ata
6;n^/3*# L!S-f4^5 device atadisk # ATA disk drives
#Yw^n?~~ d/Py, :U)e
8 Lom%eoH) 32~Tf, 82$By]Y9 # SCSI Controllers #没有SCSI设备不需要这段
{6 #3` x ?^c:`. device ahb # EISA AHA1742 family
3;>(W m*i~Vjxj-m device ahc # AHA2940 and onboard AIC7xxx devices
R%#c~NOO ?b#?Vz device ahd # AHA39320/29320 and onboard AIC79xx devices
QMtt:f]?i {)b`fq device amd # AMD 53C974 (Tekram DC-390(T))
=7e8N&-nv ^]U2Jd device isp # Qlogic family
!-N!80 "3\RJ?eW:S device mpt # LSI-Logic MPT/Fusion
7e8hnTzl8< am%qlN< device ncr # NCR/Symbios Logic
44%H? ,d 1/cb;:h> device sym # NCR/Symbios Logic (newer chipsets)
@lTUag'U0 1'aS2vB9 options SYM_SETUP_LP_PROBE_MAP=0x40
xR_]^Get .z[+sy_ # Allow ncr to attach legacy NCR devices when
JYSw!!eC ;Ly4Z*!2 # both sym and ncr are configured
:[ITjkhde0 N23s{S t
}rO4b>J XX6&%7( device adv0 at isa?
7PQedZ<\ xje{kx# device adw
yLDHJ}R !?l 23(d device bt0 at isa?
;euWpE;E\# `/ HygC6 device aha0 at isa?
SbGp V>['~| device aic0 at isa?
F)gL=6h Qb(CH 5Q%#Z
L/' Y\op9Fw device ncv # NCR 53C500
Xrz0ch R=e`QMq device nsp # Workbit Ninja SCSI-3
[")0{LSA= l w%fY{ device stg # TMC 18C30/18C50
CC)9Ks\ y.O? c&! A%GJ|h,i w}YHCh # SCSI peripherals #没有SCSI设备不需要这段
)j9FB ]$L[3qA. device scbus # SCSI bus (required)
{>+$u"* 5vpf; device da # Direct Access (disks)
ITsJjcYw 1B1d>V$* device sa # Sequential Access (tape etc)
RF;N]A?* yjSN;3t71 device cd # CD
5=?&q 'i ?DRC!
9o^ device pass # Passthrough device (direct SCSI access)
Ee|@l3) K[ \z'9Q hV,3xrm?P *jJ62-o ,h>w % kEXcEF_9P p0tv@8C> Z
ZiS$&NK8 # atkbdc0 controls both the keyboard and the PS/2 mouse
)`Fr*H3{ mi-\PD>X device atkbdc0 at isa? port IO_KBD
I}q-J~s lyi}q"Kn*; device atkbd0 at atkbdc? irq 1 flags 0x1
!e7vc[N %b*%'#iK 9.@(& fC-^[Af) device vga0 at isa?
jqLyX RhJ<<T.2 D3K`b4YV pP
r<8tm[ {10ms_s >ciq4H43Q| # syscons is the default console driver, resembling an SCO console
[qXpi'q[ 7'8O*EoB' device sc0 at isa? flags 0x100
-m@s
9k m!2Dk#t C{ti>'"V yp4G"\hN9 0GR9opZtA $e_ps~{7$ # Floating point support - do not disable.
Wp]EaYt2D p']AXJ`Z device npx0 at nexus? port IO_NPX irq 13
=aekY;/ [_0g^(` jG2w(h/" [D,:=p` |u+&xX7 RasoOj$ # Serial (COM) ports
U;nC)'~YW9 Ax%BnkU device sio0 at isa? port IO_COM1 flags 0x10 irq 4
<- ?B# esHiWHAC
|-mazvA '
EDi6 # 我用的是8139和Dlink DFE-530TX网卡,大家可根据自己的网卡型号保留或删除
Jt)~h,68 5_`}$"<~ # 使用公共的MII总线控制器代码的PCI以太网适配器
em]K7B= K$
&wO. # 注意:一定要保留'device miibus'以确保可用
W"*R#:Q f8 jaMn9o # PCI Ethernet NICs that use the common MII bus controller code.
{#%xq]r_ Cb6MD # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
S3_4i;K\ y(dS1.5F device miibus # MII bus support
Z~uKT n W<4\4 device fxp # Intel EtherExpress PRO/100B (82557, 82558)
42u\Y_^ID wI4;/w> device rl # RealTek 8129/8139
aYgJTep>r 8F*
WT|] device vr # VIA Rhine, Rhine II
wgyO% V4-=Ni]k device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
`[KhG)Y7t LnDj QdTe!f| Q#N+5<]J)# # Pseudo devices - the number indicates how many units to allocate.
1+jYpYEQW /kz&9FM pseudo-device loop # Network loopback
d.AjH9 jg [z~Nw# pseudo-device ether # Ethernet support
K[[k,W]qb OeYLL4H pseudo-device sl 1 # Kernel SLIP
@NIypi$T eqR#` pseudo-device ppp 1 # Kernel PPP
uI2'jEjO Q7r,5w&cm pseudo-device tun # Packet tunnel.
7j:{rCp3J ~D5MAEazS pseudo-device pty # Pseudo-ttys (telnet etc)
`/zt&=`VB %Let AR pseudo-device md # Memory "disks"
/;4MexgB% [Mz;:/ pseudo-device gif # IPv6 and IPv4 tunneling
M@ kZ(Rkv qJA.+q.e$e pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
CiuN26> a,~P_B|@ m'tk#C 50&F#v%YB # The `bpf' pseudo-device enables the Berkeley Packet Filter.
9ojhI=: gcxk'd # Be aware of the administrative consequences of enabling this!
dmz3O(]$ YZl%JX pseudo-device bpf #Berkeley packet filter
,7P^]V1 !P$xh (完)
\2pFFVT
dLf8w>i`T tTH%YtG Y2-bU 7mo 我用的是8139网卡和Dlink DFE-530TX网卡,如果你用其他型号的网卡,需要察看当前目录的GENERIC 内核文件,找到描述自己的网卡型号的段并将其添加到新的内核文件里。其他的不改直接拷贝过来就可以用了。
>n~p1: $ Aa>gN 接下来编译安装新内核:
S=p u 7Ca\ (82 # /usr/sbin/config kernel_wwwx #kernel_wwwx为你的内核文件名
cEdJn@ , 'cN#rHPB6 # cd ../../compile/kernel_wwwx
qJU)d YSo7~^1W" # make depend
LFyceFbm F5+_p@!i # make
g i'agB^ V^I/nuy # make install
q}$=bR1+ suFOc 重新启动(reboot)
#@^w>D6W gF6j6 lM^!^6=v0l i@5%d!J 如果系统升级过源代码树,按下面方法编译内核:
/\cu!yiX oh~
vo! # cd /usr/src
[IFRwQ^%_O ;Ia1L{472m # make kernel KERNCONF=kernel_wwwx #kernel_wwwx为你的内核文件名
HFuaoS+b* O/9%"m:i 重新启动
WG
!t!1p rs Uw(K^ Us,[x Q JjLyV`DJ FreeBSD网站平台建设全过程(二、接入Internet并配制代理服务)
>x
ghq "jO3Y/>S @O}j:b sLdUrD% 使用adsl接入Internet有两种情况,通过拨号获取动态ip或服务商直接给定静态ip。后者配制起来较容易。本文先讨论动态ip如何设置。
9jGuelwN gvqd1?0w 由于第一步重新编译内核时已经加进了对Firewall的支持。这里就可以通过直接编辑/etc/ppp/ppp.conf文件和/etc/rc.conf文件就可以上网并支持NAT方式透明代理了。
v\(m"|4(i C'/M/|=Q# # vi /etc/ppp/ppp.conf
_SC ?vn 0%e868 我的ppp.conf文件内容如下:(注意set前要留空格)
v7FRTrqjj |vN@2h(|" default:
8UT%:DlxQ F[D0x26^ set log Phase tun command
XYHCggy M
|?p3% set ifaddr 10.0.0.1/0 10.0.0.2/0
?w37vsN '$h@ adsl: # 配置代号
D4Y!,7WEVt CKt|c!3 7 set device PPPoE:vr0 # vr0 改成你连接ADSL modem的网卡名
ESxC{
" /~l/_Jct@G set mru 1492
}&T<wm! ?h )3S7 set mtu 1492
)^f9[5ee %}MA5 t]o set authname username # username是拨号用户名
;%7XU~<a QHs:=i~VH set authkey password # password是拨号密码
&1E~ \8U MIlCUk set dial
XDdcq ]*| &lPBqw set login
Kwl qi]~ @y0bU*v7 add default HISADDR
E[3FdX8 w}W@M,.^ (完)
&O6;nJEI m/hi~.D9 YNC0Z'c9 ?FV7|)f # vi /etc/rc.conf
dD^_^'i '+!S|U,{ 我的rc.conf文件内容如下:(动态ip)
O/Mz?$8J J4[x,(iq( # -- sysinstall generated deltas -- # Tue Jul 15 21:20:28 1997
x1:Pj 52MCU l # Created: Tue Jul 15 21:20:28 1997
r($_>TS&" foz5D9sQ # Enable network daemons for user convenience.
B}q ?$J7%I@ # Please make all changes to this file, not to /etc/defaults/rc.conf.
|c
oEBFG NB+$ym # This file now contains just the overrides from /etc/defaults/rc.conf.
E]H tC?Aso hostname="wwwx.3322.org" # 你的主机域名
1( ?CNW[ }^pQbFku ifconfig_fxp0="inet 192.168.0.1 netmask 255.255.255.0" #内网网卡ip地址,fxp0是网卡名
n-y^7'v iijd$Tv inetd_enable="YES" # 开机加载inetd
-?aw^du -.b
I o kern_securelevel_enable="NO"
HTUYvU*- p&OJa$N$[ linux_enable="YES"
V+=*2?1 53`9^|: nfs_reserved_port_only="NO"
9uw,-0*5 !#c[~erNZ sendmail_enable="NO"
lbKv Tw`c6^%^y sshd_enable="YES"
iM/*&O} oDW<e'Jm usbd_enable="NO"
I(^jOgYU d4p{5F7]^ gateway_enable="YES"
^A11h6I })zB". firewall_enable="YES" #启用防火墙
K=m9H=IX~T J-, H6u firewall_script="/etc/rc.firewall"
MdVCD^B 84p[N8 firewall_type="open"
!bZhj3. piYws<Q firewall_quiet="YES"
vLnq%@x Q(=Vk~v firewall_logging_enable="YES"
8K@"B ' 1P=^ ppp_enable="YES" # 开机自动拨号
xm}q6>jRV vbRrk($` ppp_mode="ddial"
(>rS
_#^ 4-]Do? ppp_nat="YES" # 启用透明代理
5vs`uUzr b`h%W"|2L ppp_profile="adsl" # 配置代号
]]J#7L# W>`g;[ W # -- sysinstall generated deltas -- # Wed Jul 16 06:52:13 1997
{?EEIfg -5V)q.Og (完)
e;A^.\SP ;Cr_NP[8|j A*7Io4e! L.09\1?.n 这样重新启动后就可以拨号上网并实现透明代理了。客户端需要设置dns服务器为服务商提供的dns,网关设成代理服务器的内网卡ip地址,这里是192.168.0.1。并把IE中“internet选项”关于连接设置的所有复选框清除。
W{fULl +A8=R%&b)[ 如果解析不了域名,检查一下/etc/resolv.conf文件是否加入了正确的dns服务器地址。
Kk!6B >a&