本節書摘來自華章計算機《cacti實戰》一書中的第2章,第2.2節,作者:劉钊,張躍著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
“原材料”準備好了,但距離cacti成功運作還有一步之遙,必須正确、完整地安裝配置cacti所需的環境和服務,本節分為windows和linux兩個平台來介紹安裝和配置cacti系統需要的基礎環境和服務。
2.2.1 windows server平台的環境搭建
以windows server 2008 r2 standard版本為例,基于iis的windows平台的cacti環境配置流程如圖2-1所示。

當然,在windows平台上,可以使用apache的httpd元件來代替windows自帶的iis元件,那麼,基于apache httpd的windows平台的cacti環境配置流程如圖2-2所示。
在圖2-2中,可以發現一個叫作“appserv”的子產品,它是一個為使用者打包好的,內建了apache、php、mysql的程式,有了它就不需要手動繁瑣地安裝和配置,“appserv”部分也将在本章介紹。
下面進入cacti基礎環境配置的實戰部分。
1.?php的安裝與配置
可以從<code>http://windows.php.net/download/</code>下載下傳最新版的php安裝程式,通常該程式是一個zip壓縮包,本書把壓縮包解壓至e:php。
這裡需要注意一點,如果目前的環境使用windows自帶的iis作為web服務,則php程式需要下載下傳non-thread-safe(nts)版本,這是一個“大坑”,選擇錯誤的版本,會導緻後續在配置php時,缺少相關的配置檔案和功能子產品,是以切記要選對版本。圖2-3為php官方網站的聲明截圖。
如果目前的環境使用apache的httpd來作為web服務,則php程式需要下載下傳vc6版本,這也是一個“大坑”,選擇錯誤,會導緻apache環境中的php子產品加載不上,或者出現加載錯誤,切記要選擇正确的版本。圖2-4為php官方網站的聲明截圖。
同時,如果apache選擇內建了openssl的版本,如httpd-2.0.65-win32-x86-openssl-0.9.8y之類的,則php要選擇thread safe的版本;如果apache選擇no-ssl,如httpd-2.0.65-win32-x86-no_ssl,則php也必須選擇no thread safe版本。
(1)windows iis環境下的php的安裝配置
php軟體的安裝步驟和操作如表2-3所示。這裡需要說明的是,對于軟體的安裝及配置,本書都将以類似于表2-3的表格形式呈現出來。
下面配置系統環境變量,依次選擇“開始”→“控制台→系統和安全→系統”,彈出如圖2-5所示的界面。
選擇“更改設定”,會彈出如圖2-6所示的對話框。
點選“環境變量”按鈕,彈出如圖2-7所示的對話框。
在“環境變量”對話框中的“系統變量”清單框中選擇“path”選項,點選“編輯”按鈕,彈出如圖2-8所示的對話框。
在變量值的最後加入“;e:php;e:phpextrasmibs”,千萬不要忘記加入語句最前面的分号!
還需要注意一點,如果使用的是php 4版本,“e:phpextrasmibs”路徑應該設定為“e:phpmibs”,如果使用的是php 5版本,則“e:phpextrasmibs”保持不變。
下面修改php的配置檔案内容,如果使用的是php 4或更早的版本,那麼将配置腳本2-1中的内容,複制後粘貼到e:phpphp.ini.dist檔案的最後即可,不要忘記把e:phpphp.ini.dist檔案重命名為php.ini。
配置腳體2-1 修改php配置檔案增加擴充功能
如果使用的是php 5或以前版本,将配置腳本2-2中的内容複制後粘貼到c:phpphp.ini.dist的最後即可,也不要忘記重命名檔案為php.ini。
配置腳體2-2 修改php配置檔案增加擴充功能
上面增加的内容主要是為了讓php程式可以支援更多的擴充包,當然,這些擴充包可不是真的用來“擴充”的,它們是cacti系統可以運作的必備元件。
注意,除了以上的修改内容以外,如果在配置檔案中出現了“session.save_path=c:tmp”這樣的内容,就需要去掉它。
(2)windows apache環境下的php的安裝配置
前面介紹了關于版本的問題,筆者在安裝cacti環境的過程中,版本幾乎成了頭号敵人,有時候報錯原因非常詭異,根本找不到問題點,但是嘗試着換一個軟體版本,問題就解決了,我們真的不想大家還像我們以前一樣,一點點地死磕版本。回到正題上來,如果使用apache的httpd作為web伺服器的話,則需要安裝的php版本也要做出相應的改動,本書中使用的是php-5.2.10-win32-vc6-x86,它可以相容apache httpd-2.0.65-win32-x86-openssl-0.9.8y版本的web伺服器。
php的安裝過程,請參考如表2-4所示的内容。
php在apache環境下的配置,與在windows環境下沒有什麼差別。
首先需要更改系統的環境變量,然後修改php的配置檔案,這兩部分内容在前面已經介紹過,這裡就不再贅述了。
2.?iis的安裝與配置(也可以使用apache,二者選其一)
iis是windows作業系統内置原生的web程式,在使用它之前,需要進行一些配置,使iis能夠和php對接,協同工作。
首先确認作業系統已經正确安裝了iis功能,并且啟用了cgi功能,如圖2-9所示。
表2-5是php manager子產品的安裝步驟說明。
下面講解如何将iis和php對接。
重新打開iis的管理控制台,會發現多了一個叫作php manager的圖示,如圖2-10所示。
輕按兩下“php manager”圖示,打開如圖2-11所示的界面,會發現iis服務中還沒有加載php的相關支援程式,選擇“register new php version”。
在如圖2-12所示的對話框中選擇“php-cgi.exe”檔案的儲存路徑,點選“确定”按鈕,iis會自動加載php的相關程式,如圖2-13所示。
點選“check phpinfo()”連結,彈出如圖2-14所示的對話框,點選“确定”按鈕,測試iis和php的連通性。
如果彈出如圖2-15所示的畫面,則說明iis和php已經成功對接了。
3.?apache的安裝與配置(也可以使用iis,二者選其一)
除了windows原生的iis元件可以作為web伺服器之外,apache的httpd也是一個很好的選擇,它同樣可以提供web通路的服務。iis和apache兩者選其一即可,作者不建議在同一個系統上安裝兩個web伺服器,這樣會給後續的工作造成諸如“端口占用”的棘手問題。
這裡選擇httpd-2.0.65-win32-x86-openssl-0.9.8y版本的軟體,按照之前在php安裝配置部分關于版本選擇的說明,這裡需要選擇php的對應版本是具有thread safe功能的,并且是vc6版本的php-5.2.10-win32-vc6-x86。
apache的安裝過程,請參考如表2-6所示的步驟說明。
下面需要配置httpd的檔案,httpd的配置檔案通常放在安裝目錄當中,名稱為httpd.conf,當然,如果怕弄錯配置檔案,可以在開始菜單中找到正确的配置檔案,如圖2-16所示。
在介紹配置方法前,需要說明一點,因為版本不同,apache的配置檔案有幾種不同的配置方案,下面分别介紹。
1)如果使用的是apache 1.3.x和php 4版本,那麼将配置腳本2-3中的内容加入配置檔案中。
配置腳體2-3 apache程式的配置腳本
2)如果使用的是apache 2.x和php 4版本,那麼将配置腳本2-4中的内容加入配置檔案中。
配置腳體2-4 修改php配置檔案增加擴充功能
3)如果使用的是apache 2.x和php 5版本,那麼将配置腳本2-5中的内容加入配置檔案中。
配置腳體2-5 修改php配置檔案增加擴充功能
按照不同的apache版本配置好之後,測試apache和php兩個元件之間的連通性。在e:httpdapache2htdocs目錄中手動建立一個測試檔案,名稱可以是test.php,在這個檔案中輸入配置腳本2-6中的内容。
配置腳體2-6 修改php配置檔案增加擴充功能
打開浏覽器,在位址欄中輸入<code>http://localhost/test.php</code>。看看是否有輸出,也許會沒有輸出,僅僅是一個空白頁,這通常情況下是由權限問題、環境變量設定問題、子產品加載造成的。首先需要檢視apache的錯誤日志,這裡通過一個比較複雜的例子來說明。
當檢視日志記錄2-1時,發現apache啟動時已經成功加載了php子產品,但是輸出了錯誤。
日志記錄2-1 apache的日志記錄
這是為什麼呢?查詢相關手冊得知,原來在安裝php程式時,選擇了完全安裝,但是這些連結庫是有互相依賴關系的,造成了沖突,那麼怎麼解決呢?
很簡單,手動修改php配置檔案,将日志中提到的子產品注釋掉,如圖2-17所示。
重新開機apache服務,bingo!測試成功。
4.?mysql的安裝與配置
mysql是負責整體cacti系統的中繼資料存儲的部分,下面介紹它在cacti系統環境中的安裝配置參考表2-7的内容。
安裝好mysql之後,不一定隻在本地對它進行維護,也有一些場景要通過另外一台裝置遠端連接配接,但是mysql預設的屬性不允許遠端連接配接,這就需要對它進行修改,請參考配置腳本2-7中的内容。
配置腳體2-7 開啟mysql資料庫執行個體的遠端連接配接
然後重新開機mysql服務即可。
5.?appserv的安裝與配置(傻瓜安裝模式)
有人看到上面描述的安裝配置過程,估計是要暈掉的,cacti的安裝環境這麼麻煩,算了,算了,不用了!
其實這些配置過程都非常基礎,但工作量比較大。有沒有什麼簡便快速的方法可以讓web伺服器運作起來呢?有的,那就是appserv。這是一個能夠幫助使用者快速搭建web環境的軟體包。
可以從官方網站上下載下傳,然後點選安裝程式,進行安裝。安裝過程請參考表2-8中的内容。
程式安裝結束之後還沒有完,還記得我們曾經做過的那些配置麼?對,如果使用appserv來快速建構web環境,一樣也逃不了修改配置檔案的命運,還是老老實實修改配置吧,正好讓我們一起再複習一遍。
1)apache的配置:添加配置腳本2-8中的語句到httpd.conf檔案中。
配置腳體2-8 apache的配置
2)php的配置:添加配置腳本2-9中的語句到php.ini檔案中。
配置腳體2-9 php的配置
重新開機appserv服務,輸入<code>http://localhost/phpinfo.php</code>進行測試,如圖2-19所示。
安裝配置完成。下一步就是配置mysql資料庫。這一點請參考上面的mysql部分,這裡不再贅述了。
6.?rrdtool的安裝與配置
從官方網站rrdtool:<code>http://www.cacti.net/downloads/rrdtool/win32/</code>下載下傳rrdtool的程式包,這個程式包不用安裝,下載下傳完成後解壓縮,将解壓出來的檔案中的所有檔案複制到“c:/cacti”路徑下即可。
7.?net-snmp的安裝與配置
在net-snmp的官方網站<code>http://net-snmp.sourceforge.net/</code>下載下傳最新版本的win64安裝檔案,并将它安裝到“e:/net-snmp”路徑下。這個過程沒有什麼難點,注意将安裝路徑修改正确即可。
至此,已經将在windows平台上建構cacti系統的環境準備好了。在正式安裝cacti主體程式之前,還需要學習如何在linux平台上搭建基礎環境。
2.2.2 linux平台環境的搭建
在linux環境下,cacti的作業系統環境比較容易安裝,不論linux是何版本,都要确認以下的軟體是否在linux作業系統中。
httpd
php
php-mysql
php-snmp
mysql
net-snmp
本書的作業系統版本是redhat enterprise 5.6,在安裝作業系統時,為了後續的軟體調試友善,選擇完全安裝,也就是說,cacti所需的軟體環境,大部分都已經在原生的作業系統中了,不需要額外安裝。
1.?php的安裝配置
通過php –m指令确認php都加載了哪些子產品,如圖2-20所示。
無論怎樣,都要確定php環境中已經加載了如下子產品。
snmp
xml
session
sockets
ldap (如果後續需要ldap認證,則需要用到該子產品)
gd (有些插件可能會用到)
從圖2-20中,大家可能會感到奇怪,為什麼gd子產品沒有被加載上呢?其實主要原因是采用了系統自帶的php程式,預設配置下,不會自動加載gd子產品,需要手動獨立添加子產品來加載該子產品。
目前大部分的作業系統已經将這個工作做得極為簡化,以我們手中的作業系統為例,隻要安裝CD光牒中的php-gd-5.1.6-27.el5_5.3.x86_64.rpm安裝包即可,系統會自動加載檔案,如果所用的環境不支援這種方式,也不要着急,下面介紹一種純粹手動添加子產品的方法。
以安裝tidy子產品為例,需要先通過網絡下載下傳tidy的安裝包,通常就是源碼包,對這個源碼包進行解壓、編譯、安裝,請參考配置腳本2-10的内容。
配置腳體2-10 編譯安裝tidy程式包
進入php源程式目錄中的ext目錄,這裡存放着各個擴充子產品的源代碼,選擇需要的子產品,如tidy子產品。執行phpsize程式來生成安裝所需的編譯檔案,注意,phpsize在php安裝目錄的bin目錄下,如“/usr/local/php5/bin/phpsize”。運作時,可能會報錯,phpsize執行的錯誤輸出如日志記錄2-2所示。
日志記錄2-2 phpsize執行的錯誤輸出
這時候,需要安裝autoconf,此軟體放在作業系統的安裝CD光牒中,通常以rpm包方式儲存,安裝CD光牒中的autoconf程式即可。完成上述操作後,需要生成配置檔案,并編譯生成子產品,參考配置腳本2-11。
配置腳體2-11 phpsize的編譯指令
tidy.so被複制到php對應的目錄php.ini中,設定擴充目錄“extension_dir="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/”,添加擴充子產品引用“extension = tidy.so”。
至此子產品添加完成。
2.?apache的安裝配置(httpd)
1)開始配置web服務,找到存放httpd配置檔案的路徑,通常該路徑是/etc/httpd/conf/httpd.conf,使用vi指令對它進行編輯,請參考配置腳本2-12。
配置腳體2-12 修改apache的配置檔案
2)重新啟動apache httpd服務即可。
按照windows部分的介紹,手動建立一個測試檔案,名為test.php,在該檔案中輸入配置腳本2-13的内容。
配置腳體2-13 修改test.php的配置檔案
3)打開浏覽器,在位址欄中輸入http://localhost/test.php,彈出如圖2-21所示的頁面,說明apache+php的環境已經配置成功了。
3.?mysql的安裝配置
在linux作業系統下配置mysql比較簡單,系統已經安裝好了mysql程式,隻需要設定如配置腳本2-14所示的超級使用者root的密碼,之後重新開機mysql服務即可。
配置腳體2-14 設定root使用者的密碼
4.?rrdtool的安裝配置
在linux環境下安裝rrdtool軟體很簡單,從官方網站下載下傳rrdtool的rpm安裝包,安裝即可。
這裡需要注意一下,作者在安裝rrdtool軟體的過程中發現該軟體在安裝過程中不斷報錯,我們在嘗試了很多次之後,發現一個比較可行的解決方案,請參考配置腳本2-15。
配置腳體2-15 安裝rrdtool軟體
以上問題都解決之後。記住!需要把rrdtool、rrdtool-devel、perl-rrdtool這3個包在同一時間使用rpm指令安裝,來排除它的依賴性問題。
5.?建立cacti使用者
如配置腳本2-16所示,需要在linux作業系統中建立cacti使用者以保證整體系統的安全性,畢竟沒有哪個實際的生産環境會讓你用root使用者“胡作非為”的。
配置腳體2-16 建立cacti使用者
至此,基于linux作業系統的cacti基礎環境已經配置成功了,下面開始安裝cacti主體程式。