第十四章 網頁伺服器進階應用
網頁伺服器架設之後,世界各地的使用者都可以經由網際網路連到您的主機,如何維護網站安全是一大課題。管理者更需要知道網站的使用情形,系統資源、網路頻寬是否足夠。本章將說明網頁伺服器使用上常見的管理議題,並介紹一些好用的管理工具。讀完本章後,您將進一步了解下列主題:
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 # echo "01" > ca.srl
我們在第二個 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 的設定檔位置:
# cp server.crt /usr/local/etc/apache22/server.crt # cp server.key /usr/local/etc/apache22/server.key # chmod 400 /usr/local/etc/apache22/server.crt # chmod 400 /usr/local/etc/apache22/server.key
最後,請將我們製作過程中的憑證刪除:
# rm -rf ssl
憑證製作完成後,我們就可以開始設定支援 SSL 的 Apache 了。
14.1.2 設定及啟動 HTTPS
首先,我們必須先修改 /usr/local/etc/apache22/httpd.conf 以使用 SSL 的設定檔:
# Secure (SSL/TLS) connections Include etc/apache22/extra/httpd-ssl.conf |
接著,我們必須先修改 /usr/local/etc/apache22/extra/httpd-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/apache22 restart
接下來,您就可以使用 https://192.168.0.1 連到您的主機了。請注意,我們使用的連線方法是 https,而非 http。如果您連線的主機名稱和憑證產生的名稱不同,將會有名稱不符的警告訊息。
圖 14-2
14.2 對目錄設定密碼保護
在架設網站時,如果您有特殊需求,必須指定某個目錄只能由某些使用者才能存取,我們可以使用 Apache 內建的目錄保護功能,讓使用者必須輸入使用者名稱及密碼才能存取該目錄。
在開始設定目錄的保護之前,我們必須先修改 httpd.conf,允許使用者可以在網頁目錄中使用認證功能。首先 ,請編輯 /usr/local/etc/apache22/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, 以載入虛擬主機設定檔:
# Virtual hosts Include etc/apache22/extra/httpd-vhosts.conf |
接著我們修改 /usr/local/etc/apache22/extra/httpd-vhost.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 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:
# env LANG=C /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
第一次執行上面的指令可能會有一些錯誤訊息,不要理它,因為是第一次執行 mrtg,所沒有一些舊的圖,只要再多執行幾次就好了。沒問題之後,使用指令 crontab -e 來 讓上述指令每 5 分鐘執行一次,加入下面這一行:
*/5 * * * * env LANG=C /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg |
現在你可以使用 http://yourserver/mrtg 來連去看看。
圖 14-7
最後別忘了移除安裝過程的暫存檔:
# cd /usr/ports/net-mgmt/mrtg/ # make clean