“原材料”准备好了,但距离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的安装与配置
可以从http://windows.php.net/download/下载最新版的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:\php\extras\mibs”,千万不要忘记加入语句最前面的分号!
还需要注意一点,如果使用的是PHP 4版本,“E:\php\extras\mibs”路径应该设置为“E:\php\mibs”,如果使用的是PHP 5版本,则“E:\php\extras\mibs”保持不变。
下面修改PHP的配置文件内容,如果使用的是PHP 4或更早的版本,那么将配置脚本2-1中的内容,复制后粘贴到E:\php\php.ini.dist文件的最后即可,不要忘记把E:\php\php.ini.dist文件重命名为php.ini。
配置脚体2-1 修改PHP配置文件增加扩展功能
extension_dir = e:\php\extensions extension=php_snmp.dll extension=php_sockets.dll cgi.force_redirect = 0
如果使用的是PHP 5或以前版本,将配置脚本2-2中的内容复制后粘贴到C:\php\php.ini.dist的最后即可,也不要忘记重命名文件为php.ini。
配置脚体2-2 修改PHP配置文件增加扩展功能
extension_dir = e:\php\ext extension=php_mysql.dll extension=php_snmp.dll extension=php_sockets.dll cgi.force_redirect = 0
上面增加的内容主要是为了让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所示。
IIS 7.5为了易于PHP程序的安装,增设了PHP Manager模块。这个模块极大地简化了PHP的配置工作,只要简单安装,IIS就会自动完成相关配置,其下载地址为http://phpmanager.codeplex.com/releases/view/69115。
下面讲解如何将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程序的配置脚本
LoadModule php4_module c:\php\sapi\php4apache.dll AddModule mod_php4.c AddType application/x-httpd-php .php DirectoryIndex index.html index.htm index.php
2)如果使用的是Apache 2.x和PHP 4版本,那么将配置脚本2-4中的内容加入配置文件中。
配置脚体2-4 修改PHP配置文件增加扩展功能
LoadModule php4_module c:\php\sapi\php4apache2.dll AddType application/x-httpd-php .php DirectoryIndex index.html index.htm index.php
3)如果使用的是Apache 2.x和PHP 5版本,那么将配置脚本2-5中的内容加入配置文件中。
配置脚体2-5 修改PHP配置文件增加扩展功能
LoadModule php5_module c:\php\php5apache2.dll AddType application/x-httpd-php .php DirectoryIndex index.html index.htm index.php
按照不同的Apache版本配置好之后,测试Apache和PHP两个组件之间的连通性。在E:\httpd\Apache2\htdocs目录中手动创建一个测试文件,名称可以是test.php,在这个文件中输入配置脚本2-6中的内容。
配置脚体2-6 修改PHP配置文件增加扩展功能
<php
phpinfo();
>
打开浏览器,在地址栏中输入http://localhost/test.php。看看是否有输出,也许会没有输出,仅仅是一个空白页,这通常情况下是由权限问题、环境变量设置问题、模块加载造成的。首先需要查看Apache的错误日志,这里通过一个比较复杂的例子来说明。
当查看日志记录2-1时,发现Apache启动时已经成功加载了PHP模块,但是输出了错误。
日志记录2-1 Apache的日志记录
PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_mssql.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_oci8.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pdo_mssql.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pdo_oci.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pdo_oci8.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pdo_pgsql.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pdo_sqlite_external.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pgsql.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_pspell.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\PHP\\ext\\php_sybase_ct.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0
这是为什么呢?查询相关手册得知,原来在安装PHP程序时,选择了完全安装,但是这些链接库是有相互依赖关系的,造成了冲突,那么怎么解决呢
很简单,手动修改PHP配置文件,将日志中提到的模块注释掉,如图2-17所示。
重启Apache服务,Bingo!测试成功。
4.MySQL的安装与配置
MySQL是负责整体Cacti系统的元数据存储的部分,下面介绍它在Cacti系统环境中的安装配置参考表2-7的内容。
安装好MySQL之后,不一定只在本地对它进行维护,也有一些场景要通过另外一台设备远程连接,但是MySQL默认的属性不允许远程连接,这就需要对它进行修改,请参考配置脚本2-7中的内容。
配置脚体2-7 开启MySQL数据库实例的远程连接
#mysql -u root –p #输入root密码 #mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码’ WITH GRANT OPTION;
然后重启MySQL服务即可。
5.AppServ的安装与配置(傻瓜安装模式)
有人看到上面描述的安装配置过程,估计是要晕掉的,Cacti的安装环境这么麻烦,算了,算了,不用了!
其实这些配置过程都非常基础,但工作量比较大。有没有什么简便快速的方法可以让Web服务器运行起来呢?有的,那就是AppServ。这是一个能够帮助用户快速搭建Web环境的软件包。
可以从官方网站上下载,然后点击安装程序,进行安装。安装过程请参考表2-8中的内容。
程序安装结束之后还没有完,还记得我们曾经做过的那些配置么?对,如果使用AppServ来快速构建Web环境,一样也逃不了修改配置文件的命运,还是老老实实修改配置吧,正好让我们一起再复习一遍。
1)Apache的配置:添加配置脚本2-8中的语句到httpd.conf文件中。
配置脚体2-8 Apache的配置
LoadModule php5_module c:\php\php5apache2.dll AddType application/x-httpd-php .php DirectoryIndex index.html index.htm index.php
2)PHP的配置:添加配置脚本2-9中的语句到php.ini文件中。
配置脚体2-9 PHP的配置
extension_dir = E:\AppServ\php5\ext extension=php_mysql.dll extension=php_snmp.dll extension=php_sockets.dll cgi.force_redirect = 0
重启AppServ服务,输入http://localhost/phpinfo.php进行测试,如图2-19所示。
安装配置完成。下一步就是配置MySQL数据库。这一点请参考上面的MySQL部分,这里不再赘述了。
6.RRDTool的安装与配置
从官方网站RRDTool:http://www.cacti.net/downloads/rrdtool/win32/下载RRDTool的程序包,这个程序包不用安装,下载完成后解压缩,将解压出来的文件中的所有文件复制到“C:/cacti”路径下即可。
7.Net-SNMP的安装与配置
在Net-SNMP的官方网站http://net-snmp.sourceforge.net/下载最新版本的Win64安装文件,并将它安装到“E:/net-snmp”路径下。这个过程没有什么难点,注意将安装路径修改正确即可。
至此,已经将在Windows平台上构建Cacti系统的环境准备好了。在正式安装Cacti主体程序之前,还需要学习如何在Linux平台上搭建基础环境。