twbsd.org
 
  Select Language: Home  SmbFTPD Forum 

书籍数据

ch00 序.htm

ch01 FreeBSD 简介.htm

ch02 安装 FreeBSD.htm

ch03 UNIX 系统入门.htm

ch04 使用者管理.htm

ch05 网络设定.htm

ch06 档案系统管理.htm

ch07 系统安全.htm

ch08 编译核心.htm

ch09 系统调校.htm

ch10 软件安装.htm

ch11 X Window 的使用.htm

ch12 NAT 及防火墙.htm

ch13 网页服务器.htm

ch14 网页服务器进阶应用.htm

ch15 FTP 服务器.htm

ch16 邮件服务器.htm

ch17 邮件服务器进阶应用.htm

ch18 DHCP服务器.htm

ch19 数据库系统.htm

ch20 Samba 网络芳邻.htm

ch21 NFS.htm

ch22 DNS 服务器.htm

ch23 指令应用.htm

ch24 Shell Script.htm

cha1 附录A etc目录下的档案介绍.htm

cha2 附录B 制作 FreeBSD 安装光盘.htm

cha3 附录C 版权宣告.htm

 


View printable page

第十四章 网页服务器进阶应用

第十四章 网页服务器进阶应用

网页服务器架设之后,世界各地的使用者都可以经由因特网连到您的主机,如何维护网站安全是一大课题。管理者更需要知道网站的使用情形,系统资源、网络频宽是否足够。本章将说明网页服务器使用上常见的管理议题,并介绍一些好用的管理工具。读完本章后,您将进一步了解下列主题:

  • 如何使用 SSL 建立安全的 HTTP 联机。
  • 使用密码保护目录存取权限。
  • 如何在一台主机上提供不同网址的网页。
  • 如何管理一般使用者的个人网页。
  • 加速 PHP scripts 的处理速度。
  • 分析网页的使用情形。
  • 网站使用流量分析。

14.1 HTTP 安全与 SSL 协定

当我们使用网络服务时,经由网络传送的数据都有可能被他人拦截窃听。简单的说,当您从网页上输入账号密码时,如果有人在您所使用的计算机和服务器之间拦截,就可以轻易的从网络封包中窃听到您所输入的数据。

随着网络的蓬勃发展,在线交易的使用量日益增加,对于数据的保护更是重要。如果一个在线交易的网站使用普通的 HTTP,则使用者输入的账号密码、交易数据、信用卡号等等都有可能会外泄,更别说交易数据被假造的风险了。为了解决 HTTP 的网络安全,发展出许多加密、认证的机制。其中最常见的就是使用金钥加密法的 HTTP over SSL (Secure Socket Layer),又称为 HTTPS,目前国内许多网络银行都是使用 HTTPS 作为交易安全的第一道关卡。

SSL 的加密方式是由服务器端提供了一组加解密用的金钥,在服务器端所使用的是私密金钥 (Private key),而客户端所使用的是公开金钥 (Public key)。在联机建立后,HTTP 服务器会将公开金钥传给客户端使用。公开金钥加密过的资料只能由私密金钥解密,在客户端要送出数据之前,会先使用公开金钥进行加密的动作,而服务器收到数据后,会使用私密金钥进行解密。

在 Apache 2 中,预设安装即支持 SSL,我们只需产生一组金钥,并设定启动 SSL 即可。

14.1.1 产生金钥

正确的凭证产生方法是先产生服务器用的公钥及 CSR (Certificate Signing Request),接着将 CSR 送给专门做凭证签发的公正单位做签章。或者,我们也可以自己做为一个凭证签发单位,自己为自己签发凭证。但由于我们自己产生的凭证不具公信力,所以使用者使用 HTTPS 连到网站时,会出现下列的警告讯息:

图 14-1

这个警告讯息并不影响加密,不过如果您所架设的是商用网站,您还是得交由公正单位作签证。

如果您要使用自我签发的凭证,第一步是要产生签发单位凭证,我们先建立一个目录名为 ssl,并将产生的凭证放在该目录下:

# mkdir ssl
# cd ssl
# openssl genrsa -out ca.key 1024
# openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan
Locality Name (eg, city) []:Taipei
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Certificate Authority
Common Name (eg, YOUR name) []:MyCA
Email Address []:alex@alexwang.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:按 Enter 即可
An optional company name []:按 Enter 即可

# openssl x509 -days 365 -signkey ca.key -in ca.csr -req -out ca.crt

我们在第二个 openssl 指令中必须输入一些基本信息,最后产生一个有效期限 365 天的凭证。接着,必须产生 Apache 服务器用的凭证:

# openssl genrsa -out server.key 1024
# openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan
Locality Name (eg, city) []:Taipei
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Web Team
Common Name (eg, YOUR name) []:www.alexwang.com
Email Address []:alex@alexwang.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:按 Enter 即可
An optional company name []:按 Enter 即可

# openssl x509 -days 365 -CA ca.crt -CAkey ca.key -in server.csr -req -out server.crt

同样的,我们必须输入关于这个凭证的一些数据,最后,我们使用之前所产生的凭证签发一个有效期限 365 天的服务器用凭证。必须注意的是,在 Common Name 必须输入您的主机名称,以避免联机时凭证名称和网页名称不符的警告。另外,我们在产生凭证时,当 OpenSSL 要求输入用来保护凭证的密码时,我们都没有输入密码。如果您输入密码,则以后 Apache 要启动时都必须输入密码才可以启动。

最后,我们将服务器用的凭证复制到 Apache 的设定文件位置:

# mkdir /usr/local/etc/apache2/ssl.crt
# mkdir /usr/local/etc/apache2/ssl.key
# cp server.crt /usr/local/etc/apache2/ssl.crt/server.crt
# cp server.key /usr/local/etc/apache2/ssl.key/server.key
# chmod 400 /usr/local/etc/apache2/ssl.crt/server.crt
# chmod 400 /usr/local/etc/apache2/ssl.key/server.key

最后,请将我们制作过程中的凭证删除:

# rm -rf ssl

凭证制作完成后,我们就可以开始设定支持 SSL 的 Apache 了。

14.1.2 设定及启动 HTTPS

首先,我们必须先修改 /usr/local/etc/apache2/ssl.conf 以设定 SSL,请先找到下列区段:

<VirtualHost _default_:443>

# General setup for the virtual host
DocumentRoot "/home/www"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog /var/log/httpd-error.log
TransferLog /var/log/httpd-access.log

我们必须修改 DocuemntRoot,并将它设为我们网页根目录,然后要修改 ServerName,将它设定为我们的主机名称。

为了要该 Apache 启动时可以支持 SSL,请在 /etc/rc.conf 中加入 Apache SSL 的设定:

apache2ssl_enable="YES"

最后,请重新启动 Apache 即可:

# /usr/local/etc/rc.d/apache2.sh restart

接下来,您就可以使用 https://192.168.0.1 连到您的主机了。请注意,我们使用的联机方法是 https,而非 http。如果您联机的主机名称和凭证产生的名称不同,将会有名称不符的警告讯息。

图 14-2

14.2 对目录设定密码保护

在架设网站时,如果您有特殊需求,必须指定某个目录只能由某些使用者才能存取,我们可以使用 Apache 内建的目录保护功能,让使用者必须输入使用者名称及密码才能存取该目录。

在开始设定目录的保护之前,我们必须先修改 httpd.conf,允许使用者可以在网页目录中使用认证功能。首先 ,请编辑 /usr/local/etc/apache2/httpd.conf,找到网页目录设定的区段:

...
LoadModule auth_module libexec/apache2/mod_auth.so
...
<Directory "/home/www">
	Options Indexes FollowSymLinks MultiViews ExecCGI
	AllowOverride AuthConfig
	Order allow,deny
	Allow from all
</Directory>
...
AccessFileName .htaccess
...

我们必须先确定 Apache 有加载 mod_auth.so 模块。接着,我们在网页目录的区段中 AllowOverride 的部份设定了使用 AuthConfig。如果 AllowOverride 设为 None 表示不允许使用者变更目录设定,设为 AuthConfig 表示可以使用 AuthDBMGroupFile、 AuthDBMUserFile, AuthGroupFile、AuthName、AuthType 等认证的功能。 另外,在 AccessFileName 中,我们设定了用来保护目录的设定文件名称,预设为 .htaccess。

Apache 允许使用者在目录下放置一个档案来控制该目录的存取权限,预设是使用 .htaccess。 我们可以自行用文书软件编辑一个文件名为 .htaccess 的档案来设定档案所在目录的权限。假设我们要保护的目录是 /home/www/private/ 这个目录,请新增一个文字文件 /home/www/private/.htaccess,内容如下:

AuthName "管理专区"
AuthType "Basic"
AuthUserFile "/var/http.pw"
require valid-user

其中请注意各参数的大小写。这里我们设定储存使用者账号及密码的档案是 /var/http.pw

接下来我们就可以新增使用者及密码了。Apache 用来新增密码的指令为 htpasswd:

# /usr/local/sbin/htpasswd -c /var/http.pw username 
New password: 输入 username 的密码
Re-type new password: 再输入一次

上述指令会建立密码文件 /var/http.pw 并加入使用者 username。如果您还要再加入第二个使用者,不需要加参数 -c。

接着,我们使用使用浏览器连到该目录时,将出现下列画面:

图 14-3

此时输入你设定的使用者名称及密码即可。若输入的账号密码正确,即可正常看到该目录的内容,否则在输入三次错误之后,将出现禁止存取的页面。

小提示

在您通过身份认证后,浏览器会自动将身份认证的数据暂存起来,以便下次联机时使用。所以在通过认证后,您不会每次要连受保护的目录时都要输入账号密码。如果您将浏览器关闭后,下次再连到该页面时,才会再被要求输入密码。

14.3 虚拟主机

如果您想要使用一台主机管理多个不同名称的网页,例如,www.alexwang.com 及 www.twbsd.org 全都连到同一台服务器,我们可以经由 Apache 虚拟主机的功能,让不同的网址秀出不同的网页内容。其本上,就是在一台机器上设定多个主机名称或 IP,并依不同名称来决定其根目录所在。当使用者联机到我们的主机时,每一个不同的名称所看到的根目录都不同。

要达到这样的功能,我们必须先确定主机有多个 DNS 名称,这样别人打该主机名称才会对应到你的 IP。假设你的主机 IP 是 111.222.78.9 ,上面有二个主机名称,一个是 www.abc.com,另一个是 www.cde.net。 您必须先在 DNS 中设定让这二个主机名称都可以对应到 11.22.78.9 这个 IP。

在确认 DNS 设定没问题后,我们就可以开始设定 Apache 虚拟主机的功能了。请编辑 httpd.conf,在虚拟主机的部份加入下列设定:

# 设定使用名称的虚拟本机
NameVirtualHost *:80

# 设定 www.abc.com 的管理者账号、存放网页的目录及log 所在
<VirtualHost *>
	ServerAdmin jack@abc.com
	DocumentRoot /home/www/abc
	ServerName www.abc.com
	ErrorLog /var/log/abc_error.log
	CustomLog /var/log/abc_access.log common
</VirtualHost>
# 设定 www.cde.com 的资料
<VirtualHost *>
	ServerAdmin tom@cde.net
	DocumentRoot /home/www/cde
	ServerName www.cde.net
	ErrorLog /var/log/cde_error.log
	CustomLog /var/log/cde_access.log common
</VirtualHost>

做完上面的设定后,就可以重新启动 Apache 了。如果你还有别的 Domain Name 指向 111.222.78.9 的话,例如 www.fgh.org ,但你并未设定其 Virtual Host 数据,Apache 将以第一个设定的 Virtual Host 数据为主。在这个范例里,当你打 www.fgh.org 会连到 www.abc.com 的设定。

必须要注意的是,有些客户端的联机软件并不支持 Name-Based 的虚拟主机,要支持 name-based virtual host,客户端必须送出 HTTP 的标头,也就是浏览器必须支持 HTTP/1.1。不过,请放心,我们常用的 IE、Netscape、lynx 都有支援。

14.4 网页记录分析

在我们将所制作好的网页放在网页服务器之后,我们会想知道每一个网页的浏览次数、使用者的停留时间等等,以做为改善网页的依据。这些信息都可以从 Apache 的联机记录文件中获得,但由于 Apache 的联机记录中,只有一笔一笔使用者浏览网页的记录,我们需要使用一些工具来分析记录文件,让这些记录文件能更易于阅读。

本章将介绍 Webalizer 这套软件。Webalizer 会读取 Apache 的联机记录文件,并将分析结果存成网页,让我们可以经由网页的图形更轻松的了解每一个页面的使用情形。由于 Webalizer 所进行的分析是经由读取 log 档,因此 log 文件的数据越多,分析出来的结果也就越详尽。

我们使用下列指令安装 Webalizer:

# cd /usr/ports/www/webalizer
# make install clean

在安装完 Webalizer 之后,我们必须先做一些简单的设定。在 /usr/local/etc/ 有一个 Webalizer 的设定文件范例 webalizer.conf-dist,我们先将它复制一份再开始编辑:

# cp /usr/local/etc/webalizer.conf-dist /usr/local/etc/webalizer.conf
# ee /usr/local/etc/webalizer.conf

以下我们将一一说明此设定档的内容,如果您想要更改其中的设定,请将该行开头的井字号移除再开始修改:

# 设定 Apache 联机记录文件的位置。
#LogFile        /var/lib/httpd/logs/access_log
LogFile        /var/log/httpd-access.log

# 设定 log 文件的型式,Webalizer 除了 Apache 外,还可以支持分析 FTP 软件
# 或 proxy 软件 squid 的 log 文件。LogType 预设的值是 'clf',表示分析
# 网页数据,你也可以设定为 ftp 或 squid。
#LogType	clf

# OutputDir 是我们想要输出分析数据的位置。请设定为网页根目录下的某一个
# 目录。例如我们的网页根目录是 /home/www,请先在该目录下建立一个子目录
# 名为 traffic,接着再设定 OutputDir 为 /home/www/traffic。
#OutputDir      /var/lib/httpd/htdocs/usage
OutputDir      /home/www/traffic

# HistoryName 可以让我们设定 webalizer 所产生的历史记录文件的文件名。这个档
# 可以用来产生 主要的 HTML 页面 (index.html),我们不需要修改。
#HistoryName	webalizer.hist

# 由于我们可能会设定某一段时间自动将 Apache 的 log 压缩或删除。而
# Incremental 这个变量可以让我们在产生分析资料时,只更新增加的部份
# 而分析过的资料就不再分析,以免覆盖了旧有的资料。
#Incremental	no
Incremental	yes

# 若您设定 Incremental 为 yes,IncrementalName 可以让您设定目前增加
# 的分析数据存放位置。
#IncrementalName	webalizer.current

# ReportTitle 是分析结果网页的标题。在该标题后会加上您的主机名称。
#ReportTitle    Usage Statistics for

# 设定您的主机名称。
#HostName       localhost

# HTMLExtension 是所产生的 HTML 档的扩展名。
#HTMLExtension  html

# PageType 可以让您设定何种扩展名结尾的页面要加入分析数据。因为在
# log 文件中有一些图片,而这些图版我们并不希望加入分析数据中,或者我
# 们也可以增加 PHP 页面的分析数据。所以在这里,我们加上一行用来分析
# PHP 页面的设定。
PageType	htm*
PageType	cgi
PageType	php
#PageType	phtml
#PageType	php3
#PageType	pl

# 如果您希望只使用 https 才可以连到分析页面,则将 UseHTTPS 设为 yes。
#UseHTTPS       no

# DNSCache 可以设定 DNS 快取的文件名称,在分析数据时,可能会一直需要
# 做 DNS 的分析,这个档可以提高 DNS 查询的效率。
#DNSCache	dns_cache.db

# DNSChildren 可以设定要使用多少 process 来做 DNS 查询,预设是 0,表示
# 不查询,我们可以设定的值从 1 到 100。最好不要设太多,以免消耗太多系统
# 资源。
#DNSChildren	0

# HTMLPre 是用设定每个 HTML 档案开头第一行要插入的字,最长 80 个字符。
#HTMLPre <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

# HTMLHead 可以让我们设定 HTML 页面 <HEAD></HEAD> 中间要插入的字。最长
# 也是 80 个字符。
#HTMLHead <META NAME="author" CONTENT="The Webalizer">

# HTMLBody 会取代在 HTML 页面中的 <BODY>  这个标签。可以让我们设定网页
# 的一些属性。最长也是 80 个字符。
#HTMLBody <BODY BGCOLOR="#E8E8E8" TEXT="#000000" LINK="#0000FF" VLINK="#FF0000">

# HTMLPost 会将设定的字符串插入 HTML 第一个 <HR> 标签之后,最长也是 80 个
# 字。
#HTMLPost 	<BR CLEAR="all">

# HTMLTail 可以设定 HTML 页面的结尾所要插入的字符串。最长 80 个字符。
#HTMLTail <IMG SRC="msfree.png" ALT="100% Micro$oft free!">

# HTMLEnd可以设定 HTML 页面的最后结尾所要插入的字符串。我们最少要有
# </BODY> 和 </HTML> 这二个标签,最长 80 个字符。
#HTMLEnd </BODY></HTML>

# Quiet 可以让我们设定在分析时是否要输出讯息,因为我们会使用 crontab
# 定时执行,所以不要输出分析过程的讯息比较好。
Quiet		yes

# ReallyQuiet 可以设定档有错误产生时,是否要输出讯息。
#ReallyQuiet	no

# TimeMe 可以设定在分析之后是否要输出时间。
#TimeMe		no

# GMTTime 可以设定是否要使用 GMT (UTC) 时间而非本地时间。
#GMTTime		no

# Debug 可以设定是否要输出除错讯息。
#Debug		no

# FoldSeqErr 可以让 Webalizer 忽略读取 log 档的错误。
#FoldSeqErr	no

# VisitTimeout 可以设定 session 的到期时间,默认值是 30 分钟。
#VisitTimeout	1800

# IgnoreHist 请保持 no。
#IgnoreHist	no

# Country Graph 是用来显示分析资料中关于国家的统计资料是否要显示。
#CountryGraph	yes

# DailyGraph 及 DailyStats 是设定是否显示每日分析资料。
#DailyGraph	yes
#DailyStats	yes

# HourlyGraph 是 HourlyStats是设定是否显示每小时分析资料。
#HourlyGraph	yes
#HourlyStats	yes

# GraphLegend 是设定是否要显示彩色图表。
#GraphLegend	yes

# GraphLines 是用来设定图表的网格线数量,最多 20。
#GraphLines	2

# "Top" 的选项是每一个分格表格中,要显示多少笔前几名的资料。
#TopSites        30
#TopKSites       10
#TopURLs         30
#TopKURLs        10
#TopReferrers    30
#TopAgents       15
#TopCountries    30
#TopEntry        10
#TopExit         10
#TopSearch       20
#TopUsers        20

# The All* 可以让我们显示所有 log 文件中有记录的数据,而非只有前几名而
# 已。如果设定了某一个 All 的选项,webalizer 将会为该设定新增一个页面。
#AllSites	no
#AllURLs	no
#AllReferrers	no
#AllAgents	no
#AllSearchStr	no
#AllUsers       no

# Webalizer 会自动使用让网址 /somedir/ 可以连结到 /somedir/index.htm
# 如果你想要设定让除了 index. 结尾的网址有此效果外,还要让其它网
# 址也有同样效果,您可以在此设定。
#IndexAlias     home.htm
#IndexAlias	homepage.htm

# Hide*, Group*, Ignore* 及Include* * 可以设定让 Webalizer 忽略
# log 中的关键词,让 log 中某些记录不要被加入分析数据中。例如
# 有的搜寻引擎会自动连到您的网页来找数据,您可以设定忽略这样的
# 联机。请自行参阅说明。
… 略 …
# End of configuration file...  Have a nice day!

接着我们必须依您的设定在网页根目录中建立一个数据夹以储存 Webalizer 所产生的图表,假设我们的网页根目录是 /home/www,并在其目录下建立一个子目录名为 traffic

# mkdir /home/www/traffic

紧接着我们就可以使用下列指令来产生统计图表:

# /usr/local/bin/webalizer

因为我们在 webalizer.conf 中设定了所要使用的 apache 使用记录的文件名及所产生的图表存放位置,所以在执行 webalizer 时不必再加任何参数。如果您想指定使用其它的联机记录文件来做分析,您可以在指令后面加上该记录文件的文件名,例如:

# /usr/local/bin/webalizer /var/log/httpd-access.log

产生了图表之后,我们就可以使用浏览器输入 http://www.mydomain.com/traffic 连到该网页。连到该页面后,您可以看到下列画面:

图 14-5

我们可以看到八月份每天平均有 294 人造访,该月共有 7945 人。点选了该月份后,可以再看该月份更详细的数据。例如,一天中哪一个时间最多人造访、哪一个网页最点选最多次、使用者来源、进到本网站后第一个看的页面是什么等等。下图为最常被点选的页面统计:

图 14-6

最后,为了让分析图表能定时自动更新,我们可以使用 crontab 每小时定期执行一次分析。

# crontab -e
13      *       *       *       *       /usr/local/bin/webalizer

在上述的 crontab 的设定中,我们让系统在每小时的第 13 分时执行一次 webalizer,您也可以依您的需求调整更新的时间。存盘离开之后,crontab 会自动加载新的设定,如此一来我们就可以随时拥有最新的统计信息了。

14.5 MRTG 流量分析

我们除了可以使用 Webalizer 来了解网页内容的使用情形外,网站管理者还必须知道目前网站频宽是否足够。如果您想要知道网站流量的使用情形,我们可以安装 MRTG 这套软件经由网页来监看网络流量。MRTG 会去收取 SNMP (Simple Network Management Protocol) 所产生的数据,因此所要记录的机器必须要安装 SNMP。在你的主机上安装 MRTG 后,你不仅可以收集自己的流量数据,也可以收集局域网络上其它可以接收到的 SNMP 数据。

14.5.1 安装 SNMP

在安装 MRTG 之前,我们先使用 ports 来安装 SNMP:

# cd /usr/ports/net-mgmt/net-snmp
# make install clean

安装完成后,我们必须要先新增一个可以读取 SNMP 信息的 community name。所谓的 community name 是一个明码的字符串,我们可以将它视为 management station 和 agent 之间的密码,是 MRTG 和 net-SNMP 沟通时必须要先传送的字符串。我们可以依不同的网域或主机给予不同的权限,依 community name 的设定来决定不同权限。

一个网络组件可以有多个 community name,一般 SNMP Agent 所预设公开的 community name 是 public。我们不一定要将 community name 设定为 public,因为 public 是一般 SNMP 的默认值,为了安全的问题,我们不将它设为 public。这里我们将设定 community name 为 mrtg,而且只有 read only 的权限。

要设定 community name 请先新增一个文字文件 /usr/local/share/snmp/snmpd.conf 并加入下列设定:

rocommunity     mrtg
syslocation     Office
syscontact      alex@alexwang.com

上述设定中,mrtg 为只读的 community name,Office 是您机器所在位置,而 syscontact 所接的字符串是您的 Eamil。另外, 我们还必须在 /etc/rc.conf 中加入下列这一行:

snmpd_enable="YES"

接着,请使用下列指令启动 SNMP:

# /usr/local/etc/rc.d/snmpd.sh start

14.5.2 安装 MRTG

我们使用 ports 来安装 MRTG:

# cd /usr/ports/net-mgmt/mrtg
# make install

接着要产生 MRTG 的设定档

# cd /usr/local/etc/mrtg
# rehash
# cfgmaker mrtg@alexwang.com >mrtg.cfg

这里的 mrtg 是我们在安装 net-snmp 时所设定的值。如果你使用错的 community name,你可能会从要记录的设备上得到错误响应。而 alexwang.com 是你所要记录的主机位置。mrtg.cfg 就是所要产生的设定档名。

如果您想要记录多个主机,只要在 cfgmaker 时多加入主机名称即可,例如:

# cfgmaker mrtg@alexwang.com public@ftp.alexwang.com >mrtg.cfg

这样就会同时记录上面二台主机的流量了。

产生基本的设定档后,我们可以再编辑刚才产生的设定档 ee mrtg.cfg,在档案开头的部份加入一些客制化的设定:

# 如果要使用中文的 MRTG 则加入下面这一行
Language: big5

# 设定你的 MRTG 要放在哪个目录,应该要放在网页可以
# 连结到的地方,我的网页根目录是 /home/www,所以我将
# MRTG 放在下面的目录。
WorkDIR:/home/www/mrtg

# 预设的 MRTG 所产生的图时间是由右到左
# 我喜欢由左到右,故加入下面这一行
Options[_]: growright

接着请建立一个你在 mrtg.cfg 中设定的 WorkDIR 的目录:

# mkdir /home/www/mrtg

然后使用指令 indexmaker 来建立 MRTG 的首页:

# indexmaker -title '流量统计' -output /home/www/mrtg/index.html mrtg.cfg

这里的参数 -title 是该 index.html 档的 title,而 -output 就是要输出的档案位置,预设是stdio(通常指的是屏幕) 。

输出的档案 index.html 你也可以使用其它的网页编辑软件再去修改美化它。接下来要将 MRTG 的一些图片文件复制到 mrtg 的目录里:

# cd /usr/ports/net-mgmt/mrtg/work/mrtg*
# cd images
# cp * /home/www/mrtg/

最后执行 MRTG:

# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

第一次执行上面的指令可能会有一些错误讯息,不要理它,因为是第一次执行 mrtg,所没有一些旧的图,只要再多执行几次就好了。没问题之后,使用指令 crontab -e 来 让上述指令每 5 分钟执行一次,加入下面这一行:

*/5    *    *    *    *    /usr/local/bin/mrtg  /usr/local/etc/mrtg/mrtg.cfg

现在你可以使用 http://yourserver/mrtg 来连去看看。

图 14-7

最后别忘了移除安装过程的暂存档:

# cd /usr/ports/net/mrtg/
# make clean
Top Ths file was last modified: 2005 December 27 07:32:58.

Copyright © 2002-2024 Alex Wang from www.twbsd.org. All rights reserved.