《Cacti实战》——2.2 安装与配置相关组件和服务

本节书摘来自华章计算机《Cacti实战》一书中的第2章,第2.2节,作者:刘钊,张跃著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 安装与配置相关组件和服务

“原材料”准备好了,但距离Cacti成功运行还有一步之遥,必须正确、完整地安装配置Cacti所需的环境和服务,本节分为Windows和Linux两个平台来介绍安装和配置Cacti系统需要的基础环境和服务。
2.2.1 Windows Server平台的环境搭建
以Windows Server 2008 R2 Standard版本为例,基于IIS的Windows平台的Cacti环境配置流程如图2-1所示。

《Cacti实战》——2.2 安装与配置相关组件和服务

当然,在Windows平台上,可以使用Apache的Httpd组件来代替Windows自带的IIS组件,那么,基于Apache Httpd的Windows平台的Cacti环境配置流程如图2-2所示。

《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官方网站的声明截图。

《Cacti实战》——2.2 安装与配置相关组件和服务


同时,如果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的表格形式呈现出来。
《Cacti实战》——2.2 安装与配置相关组件和服务

下面配置系统环境变量,依次选择“开始”→“控制面板→系统和安全→系统”,弹出如图2-5所示的界面。
选择“更改设置”,会弹出如图2-6所示的对话框。
点击“环境变量”按钮,弹出如图2-7所示的对话框。

《Cacti实战》——2.2 安装与配置相关组件和服务

《Cacti实战》——2.2 安装与配置相关组件和服务

在“环境变量”对话框中的“系统变量”列表框中选择“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配置文件增加扩展功能

extension_dir = e:\php\extensions
extension=php_snmp.dll
extension=php_sockets.dll
cgi.force_redirect = 0

如果使用的是PHP 5或以前版本,将配置脚本2-2中的内容复制后粘贴到C:phpphp.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所示的内容。
《Cacti实战》——2.2 安装与配置相关组件和服务

PHP在Apache环境下的配置,与在Windows环境下没有什么区别。
首先需要更改系统的环境变量,然后修改PHP的配置文件,这两部分内容在前面已经介绍过,这里就不再赘述了。
2.?IIS的安装与配置(也可以使用Apache,二者选其一)
IIS是Windows操作系统内置原生的Web程序,在使用它之前,需要进行一些配置,使IIS能够和PHP对接,协同工作。
首先确认操作系统已经正确安装了IIS功能,并且启用了CGI功能,如图2-9所示。


《Cacti实战》——2.2 安装与配置相关组件和服务


IIS 7.5为了易于PHP程序的安装,增设了PHP Manager模块。这个模块极大地简化了PHP的配置工作,只要简单安装,IIS就会自动完成相关配置,其下载地址为http://phpmanager.codeplex.com/releases/view/69115
表2-5是PHP Manager模块的安装步骤说明。
《Cacti实战》——2.2 安装与配置相关组件和服务

下面讲解如何将IIS和PHP对接。
重新打开IIS的管理控制台,会发现多了一个叫作PHP Manager的图标,如图2-10所示。

《Cacti实战》——2.2 安装与配置相关组件和服务

双击“PHP Manager”图标,打开如图2-11所示的界面,会发现IIS服务中还没有加载PHP的相关支持程序,选择“Register new PHP version”。

《Cacti实战》——2.2 安装与配置相关组件和服务

在如图2-12所示的对话框中选择“php-cgi.exe”文件的保存路径,点击“确定”按钮,IIS会自动加载PHP的相关程序,如图2-13所示。

《Cacti实战》——2.2 安装与配置相关组件和服务


《Cacti实战》——2.2 安装与配置相关组件和服务

点击“Check phpinfo()”链接,弹出如图2-14所示的对话框,点击“确定”按钮,测试IIS和PHP的连通性。

《Cacti实战》——2.2 安装与配置相关组件和服务


如果弹出如图2-15所示的画面,则说明IIS和PHP已经成功对接了。

《Cacti实战》——2.2 安装与配置相关组件和服务

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所示的步骤说明。
《Cacti实战》——2.2 安装与配置相关组件和服务

下面需要配置Httpd的文件,Httpd的配置文件通常放在安装目录当中,名称为httpd.conf,当然,如果怕弄错配置文件,可以在开始菜单中找到正确的配置文件,如图2-16所示。

《Cacti实战》——2.2 安装与配置相关组件和服务

在介绍配置方法前,需要说明一点,因为版本不同,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:httpdApache2htdocs目录中手动创建一个测试文件,名称可以是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所示。

《Cacti实战》——2.2 安装与配置相关组件和服务

重启Apache服务,Bingo!测试成功。

《Cacti实战》——2.2 安装与配置相关组件和服务

4.?MySQL的安装与配置
MySQL是负责整体Cacti系统的元数据存储的部分,下面介绍它在Cacti系统环境中的安装配置参考表2-7的内容。
《Cacti实战》——2.2 安装与配置相关组件和服务
《Cacti实战》——2.2 安装与配置相关组件和服务

安装好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中的内容。
《Cacti实战》——2.2 安装与配置相关组件和服务

程序安装结束之后还没有完,还记得我们曾经做过的那些配置么?对,如果使用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所示。

《Cacti实战》——2.2 安装与配置相关组件和服务

安装配置完成。下一步就是配置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平台上搭建基础环境。
2.2.2 Linux平台环境的搭建
在Linux环境下,Cacti的操作系统环境比较容易安装,不论Linux是何版本,都要确认以下的软件是否在Linux操作系统中。
Httpd
PHP
PHP-MySQL
PHP-SNMP
MySQL
Net-SNMP
本书的操作系统版本是RedHat Enterprise 5.6,在安装操作系统时,为了后续的软件调试方便,选择完全安装,也就是说,Cacti所需的软件环境,大部分都已经在原生的操作系统中了,不需要额外安装。
1.?PHP的安装配置

《Cacti实战》——2.2 安装与配置相关组件和服务


通过php –m命令确认PHP都加载了哪些模块,如图2-20所示。
无论怎样,都要确保PHP环境中已经加载了如下模块。
MySQL
SNMP
XML
Session
Sockets
LDAP (如果后续需要LDAP认证,则需要用到该模块)
GD (有些插件可能会用到)
从图2-20中,大家可能会感到奇怪,为什么GD模块没有被加载上呢?其实主要原因是采用了系统自带的PHP程序,默认配置下,不会自动加载GD模块,需要手动独立添加模块来加载该模块。
目前大部分的操作系统已经将这个工作做得极为简化,以我们手中的操作系统为例,只要安装光盘中的php-gd-5.1.6-27.el5_5.3.x86_64.rpm安装包即可,系统会自动加载文件,如果所用的环境不支持这种方式,也不要着急,下面介绍一种纯粹手动添加模块的方法。
以安装tidy模块为例,需要先通过网络下载tidy的安装包,通常就是源码包,对这个源码包进行解压、编译、安装,请参考配置脚本2-10的内容。
配置脚体2-10 编译安装tidy程序包

#tar zxvf tidy-cvs_20070326.tar.bz2
#cd tidy-cvs_20070326
#./configure --prefix=/usr/local/tidy
#make
#make install

进入PHP源程序目录中的ext目录,这里存放着各个扩展模块的源代码,选择需要的模块,如tidy模块。执行phpsize程序来生成安装所需的编译文件,注意,phpsize在PHP安装目录的bin目录下,如“/usr/local/php5/bin/phpsize”。运行时,可能会报错,phpsize执行的错误输出如日志记录2-2所示。
日志记录2-2 phpsize执行的错误输出

#Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script

这时候,需要安装autoconf,此软件放在操作系统的安装光盘中,通常以RPM包方式保存,安装光盘中的autoconf程序即可。完成上述操作后,需要生成配置文件,并编译生成模块,参考配置脚本2-11。
配置脚体2-11 phpsize的编译命令

/usr/local/php5/bin/phpsize
./configure--with-tidy=/usr/local/tidy--with-php-config=/usr/local/php5/bin/php-config
make
make install

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的配置文件

# Load config files from the config directory "/etc/httpd/conf.d".
Include conf.d/*.conf
#在文件中添加以下的行:
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php

2)重新启动Apache Httpd服务即可。
按照Windows部分的介绍,手动创建一个测试文件,名为test.php,在该文件中输入配置脚本2-13的内容。
配置脚体2-13 修改test.php的配置文件

<?php
phpinfo();
?>

3)打开浏览器,在地址栏中输入http://localhost/test.php,弹出如图2-21所示的页面,说明Apache+PHP的环境已经配置成功了。
3.?MySQL的安装配置
在Linux操作系统下配置MySQL比较简单,系统已经安装好了MySQL程序,只需要设置如配置脚本2-14所示的超级用户root的密码,之后重启MySQL服务即可。

《Cacti实战》——2.2 安装与配置相关组件和服务

配置脚体2-14 设置root用户的密码

#mysqladmin --user=root password somepassword
#mysqladmin --user=root --password reload

4.?RRDTool的安装配置
在Linux环境下安装RRDTool软件很简单,从官方网站下载RRDTool的RPM安装包,安装即可。
这里需要注意一下,作者在安装RRDTool软件的过程中发现该软件在安装过程中不断报错,我们在尝试了很多次之后,发现一个比较可行的解决方案,请参考配置脚本2-15。
配置脚体2-15 安装RRDTool软件

#首先确保操作系统中已经安装了libart模块
#tar zxvf libart_lgpl-2.3.17.tar.gz
#cd libart_lgp-2.3.17
#./configure
#make
#make install
#cp -r /usr/local/include/libart-2.0 /usr/include
#如果在安装这个软件时报错,则
#安装cgilib-0.5.tar.gz
#tar zxvf cgilib-0.5.tar.gz
#cd cgilib-0.5
#make
#cp libcgi.a /usr/local/lib
#cp cgi.h /usr/include
#如果仍然报错,则
#安装libart_lgpl-devel这个包
#yum install libart_lgpl-devel
#如果还报错configure: error: Please fix the library issues listed above and try again,则
#安装pango-devel和cairo-devel这两个开发包
#yum install pango-devel* cairo-devel*

以上问题都解决之后。记住!需要把rrdtool、rrdtool-devel、perl-rrdtool这3个包在同一时间使用rpm命令安装,来排除它的依赖性问题。
5.?建立Cacti用户
如配置脚本2-16所示,需要在Linux操作系统中建立Cacti用户以保证整体系统的安全性,毕竟没有哪个实际的生产环境会让你用root用户“胡作非为”的。
配置脚体2-16 建立Cacti用户

[root@cacti ~]# useradd -g root -G adm cacti
[root@cacti ~]# passwd cacti
Changing password for user cacti.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

至此,基于Linux操作系统的Cacti基础环境已经配置成功了,下面开始安装Cacti主体程序。

上一篇:在线应用云调试系统--Zdebugger


下一篇:Python3 与 C# 面向对象之~异常相关