Anda di halaman 1dari 5

搭建一个大型网站架构的实验环境(Web 服务器篇)

2007/12/28 16:35

五、Web 服务器的配置
Web 服务器(192.168.10.40)同时提供 Web 服务和 DNS 服务。所以这里我们需要安装
和配置 Apache 和 Bind。
服务器网络配置
# ee /etc/rc.conf
ifconfig_lnc0="inet 192.168.10.40 netmask 255.255.255.0"
defaultrouter="192.168.10.10"
hostname="web.rd.bj"

# ee /etc/hosts
192.168.10.40 web.rd.bj

配置好网络环境后,我们先来配置 DNS 服务器。在默认的 Freebsd 的安装过程中已经安


装好了 Bind,我们现在只需修改配置文件即可。
我们现在先虚拟一个域名:rd.bj 来作为整个测试环境的根域名。

# cd cd /etc/namedb/
# ee named.conf
在 listen-on 中增加监听 IP:192.168.10.40
listen-on { 127.0.0.1; 192.168.10.40; };
然后在最后加入:
zone "rd.bj" {
type master;
file "master/rd.bj";
};
zone "10.168.192.in-addr.arpa" {
type master;
file "master/10.168.192.in-addr.arpa";
};

正解档的设置
# ee master/rd.bj
加入:
$TTL 172800
@ IN SOA rd.bj. root.rd.bj. (
2005100301 ; Serial
172800 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS rd.bj.
IN A 192.168.10.40
web IN A 192.168.10.40
squid01 IN A 192.168.10.30
squid02 IN A 192.168.10.31
proxy IN A 192.168.10.20
www IN A 192.168.10.20

开头的 @ 代表网域名称 rd.bj,IN 表示为 internet 的数据型态。


SOA 后面接的是 rd.bj,表示这台 rd.bj 机器是 rd.bj 网域中的主要名称服务器。而
root.rd.bj 表示管理者的 Email 是 root@rd.bj。
正解档中的内容中除了第一行外,每一行的格式为 [name] [ttl] [class] [type] [data]。以下
是每个字段的说明:
name:可以是网域名称或是主机名称,如果不写的话表示与上一个设定相同。
ttl:是数据要存活的时间 (time to live),也就是 cache server 将保留在它的 cache 中的时
间。如果不写的话表示和 SOA 中的设定相同。
class:指定网络的类型,这个字段应该都是使用 IN 代表 internet。
type:设定该笔数据的型态,例如:MX, A, CNAME, PTR, NS 等。
data:就是实际设定数据的部份。
Serial:这个设定的版本,这次修改的数字必须比上次的数字大,也就是每次修改这个档
时,都要将这个数字提高,这样别的服务器才会将数据更新。一般而 言,我们会以日期加
上几位的数字来表示,如 2004040301 表示 2004 年 4 月 3 日的第一次设定。
Refresh:这个数字是次要名称服务器要多久和主要名称服务器比对数据并更新。
Retry:如果比对失败,要在几秒后再向主要名称服务器查询。
Expire:表示如果次要名称服务器一直连不上主要名称服务器,这笔数据要多久无法比对
便失效。这个字段一样是以秒计算。
Minimum:表示别的快取服务器可以将你的设定存放多久。

反解档的设置
# ee master/10.168.192.in-addr.arpa
加入:
$TTL 172800
@ IN SOA rd.bj. root.rd.bj. (
2001080301 ; Serial
172800 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS rd.bj.
40 IN PTR rd.bj.
40 IN PTR web.rd.bj.
30 IN PTR squid01.rd.bj.
31 IN PTR squid02.rd.bj.
20 IN PTR proxy.rd.bj
20 IN PTR www.rd.bj

当我们设置好正解档和反解档后,我们执行一下命令产生一个 localhost 的反解档:


# cd /etc/namedb
# sh make-localhost

最后再修改文件/etc/resolv.conf
# ee /etc/resolv.conf
设置成:
nameserver 127.0.0.1
这样就可以让此台服务器成为这个网域中第一台 DNS 服务器。

现在我们就配置好了我们的 DNS 服务器,启动她吧!!!


# /etc/rc.d/named start
我们可以使用下面的指令查询信息:
# tail /var/log/messages
查看到没有错误信息后,我们使用 nslookup 命令来验证一下我们的设置。
# nslookup web.rd.bj

这里有个情况要提醒一下大家,由于我们现在 squid01,squid02 和 proxy 三台服务器还没


有配置,所以在这里测试可能会出一下状况,所以我们可以再把其他 3 台服务器设置好了
以后,再一起测试。

测试完成以后(只要是 messages 文件中没有关于 DNS 的错误信息,我们这里就先假定


我们的配置是正确的),然后我们来设置开机启动 DNS 服务。
# ee /etc/rc.conf
加入:
named_enable="YES"

下班了, 回家接着写吧!!! 万恶的北京交通 ... 嘟嘟嘟 ... 堵堵堵

好,我们接着干吧!

我们现在开始安装 Apache 服务器,先找找 whereis


# whereis apache22
apache22: /usr/ports/www/apache22

Let's go ,找她去 ...


# cd /usr/ports/www/apache22
# make config #配置安装选项
大家可以根据实际用途进行选择安装,因为我这里建立的是一个实验环境,我把能装上的
都装上,目的是以后可以把个个模块都配置看看效果,在这里先预先都装好, 以备不时之
需。
如果大家想把 Apache 以 worker 模式运行,则需要修改 Makefile 文件。
# ee Makefile
将 WITH_MPM?= prefork # or worker, event, itk 改成:
WITH_MPM?= worker # or worker, event, itk
# make install clean
OK,耐心等待,讲个笑话,大家轻松一下吧!
一日,老师上机实践课时出了一道题让大家用 C 编程。其最后结果要和他的答案一致。
全班同学在规定时间无解,又近午饭,众人更是头昏眼花。忽一同学叫老师,声他成了。
老师前去一看,答案果同。就放其出去。
众同学暗想,该人水平一般,何故今日高水平发挥。于是找其源程序一看。
只有一句“printf("XXXXX");”
众人大哗。

漫长的等待,终于安装完成了。
# rehash
# pkg_info | grep apache
apache-worker-2.2.6_3 Version 2.2 of Apache web server with worker MPM.
# apachectl -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_so.c
现在我们对 Apache 进行简单的配置,对 Apache 进行更深入的调优,我们在这里暂且不
做讨论,等我们的实验环境都搭建好了后, 大家可以根据自己的业务需求进行调整。
# cd /usr/local/etc/apache22
# ee httpd.conf
更改以下参数:
Listen 192.168.10.40:80
ServerAdmin admin@rd.bj
ServerName web.rd.bj:80
其他都不变,保存退出。
设置 Apache 开机启动:
# ee /etc/rc.conf
加入:
apache22_enable="YES"
保存退出。
现在我们启动一下 Apache,看看我们的安装是否正确。
# apachectrl start

浏览器访问 http://192.168.10.40

very good,我们的 Apache 就先告一段落了。现在我们快马加鞭,配置我们的 squid 缓存


服务器。