做这个环境用了2天时间,终于成功了。自己做下记录。
环境:
RHEL5.4
[root@localhost ~]#  uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux

安装Cacti需要安装的软件包:
apache
mysqlphpnet-snmpcacticacti-cactidrrdtool,以及php需要的gd库:zlib,freetype,libpng,jpegfontconfiglibgdlibxml

注:版本能用最新的就用最新的,兼容性一般是新的好。
rrd-tool貌似只能用1.2.X,1.3.X好像支持cacti。

一:安装mysql
[root@station202 cacti]# useradd mysql
[root@station202 cacti]# tar zxvf mysql-5.0.81-linux-i686-glibc23.tar.gz -C /usr/local/
[root@station202 cacti]# cd /usr/local
[root@station202 local]# ln -s mysql-5.0.81-linux-i686-glibc23 mysql
[root@station202 local]# cd mysql
[root@station202 mysql]# chown -R mysql:mysql .
./configure
make
make install
[root@station202 mysql]# scripts/mysql_install_db --user=mysql  //
初始化授权表
[root@station202 mysql]# bin/mysqld_safe --user=mysql & //启动mysql

[root@station202 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld                              //添加mysqld服务
[root@station202 mysql]# chkconfig --add mysqld
[root@station202 mysql]# chkconfig mysqld on
对mysqld的设置:
[root@station202 mysql]# vim /etc/my.cnf
[mysqld]
set-variable=max_connections=1000            ##
最大连接数
set-variable=max_user_connections=500            ##
每个用户最大连接数
set-variable=wait_timeout=200                ##
多少秒后关闭空闲(IDLE
##
添加以上内容
[root@station202 mysql]# chown root.mysql /etc/my.cnf
[root@station202 mysql]# service mysqld restart

[root@station202 mysql]# bin/mysqladmin -u root -p variables
##
可以看到以下项说明修改成功
|max_connections                | 1000
|max_user_connections           | 500
|wait_timeout                   | 200
[root@station202 ~]# ln -s /usr/local/mysql/bin/* /usr/local/bin/


二:安装apache

[root@station202 ~]# useradd apache
[root@station202 ~]# tar zxvf httpd-2.2.4.tar.gz
[root@station202 ~]# cd httpd-2.2.4
[root@station202 httpd-2.2.4]# ./configure --prefix=/usr/local/apache --enable-so    ## --enable-so
一定要带,不然不能动态加载模块
[root@station202 httpd-2.2.4]# make
[root@station202 httpd-2.2.4]# make install
[root@station202 httpd-2.2.4]# cd /usr/local/apache/
[root@station202 apache]# vim conf/httpd.conf
ServerName 192.168.1.202               ##
修改这行内容(本机IP或者域名)
[root@station202 apache]# vim /etc/rc.local
/usr/local/apache/bin/apachectl -k start      ##
添加这行,开机启apache
[root@station202 apache]# /usr/local/apache/bin/apachectl -k start    ##
启动apache

三:安装PHP
先安装zlib,libpng,freetype,jpegfontconfiglibgdlibxml。以便于让PHP支持GD库(CactiWeatherMap插件必须要较新GD库的支持)
1):
安装zlib
[root@station202 ~]# tar zxvf zlib-1.2.3.tar.gz
[root@station202 ~]# cd zlib-1.2.3
[root@station202 zlib-1.2.3]# ./configure --prefix=/usr/local/zlib
[root@station202 zlib-1.2.3]# make
[root@station202 zlib-1.2.3]# make install

2):
安装libpng                            ## 编译的时候需要zlib--with-zlib指定
[root@station202 ~]# tar zxvf libpng-1.2.18.tar.gz
[root@station202 ~]# cd libpng-1.2.18/
[root@station202 libpng-1.2.18]# ./configure --prefix=/usr/local/libpng --with-zlib=/usr/local/zlib
[root@station202 libpng-1.2.18]# make
[root@station202 libpng-1.2.18]# make install

3):
安装freetype
[root@station202 ~]# tar zxvf freetype-2.3.5.tar.gz
[root@station202 ~]# cd freetype-2.3.5
[root@station202 freetype-2.3.5]# ./configure --prefix=/usr/local/freetype
[root@station202 freetype-2.3.5]# make
[root@station202 freetype-2.3.5]# make install

4):
安装libjpeg
[root@station202 ~]# tar zxvf jpegsrc.v6b.tar.gz
[root@station202 ~]# cd jpeg-6b/
[root@station202 jpeg-6b]# mkdir /usr/local/libjpeg
[root@station202 jpeg-6b]# mkdir /usr/local/libjpeg/include
[root@station202 jpeg-6b]# mkdir /usr/local/libjpeg/bin
[root@station202 jpeg-6b]# mkdir /usr/local/libjpeg/lib
[root@station202 jpeg-6b]# mkdir /usr/local/libjpeg/man
[root@station202 jpeg-6b]# mkdir /usr/local/libjpeg/man/man1
[root@station202 jpeg-6b]# ./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
##
这里configure一定要带--enable-shared参数,不然,不会生成共享库
[root@station202 jpeg-6b]# make
[root@station202 jpeg-6b]# make install


5):
安装libxml2
[root@station202 Server]# rpm -qa | grep libxml
libxml2-2.6.26-2.1.2
libxml2-python-2.6.26-2.1.2
[root@station202 Server]# rpm -ivh libxml2-devel2.6.26-2.1.2.i386.rpm

6):
安装fontconfig                    ## 需要libxml2freetype的支持
[root@station202 ~]# tar zxvf fontconfig-2.4.2.tar.gz
[root@station202 ~]# cd fontconfig-2.4.2
[root@station202 fontconfig-2.4.2]# ./configure --with-freetype-config=/usr/local/freetype/bin/freetype-config --prefix=/us/local/fontconfig
[root@station202 fontconfig-2.4.2]# make
[root@station202 fontconfig-2.4.2]# make install

7):
安装gd
[root@station202 ~]# tar zxvf gd-2.0.33.tar.gz
[root@station202 ~]# cd gd-2.0.33
[root@station202 gd-2.0.33]# ./configure --prefix=/usr/local/libgd --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg --with-fontconfig=/usr/local/fontconfig
##
可以看到下面的信息,一定要看到才正确。
** Configuration summary for gd 2.0.33:

   Support for PNG library:          yes
   Support for JPEG library:         yes
   Support for Freetype 2.x library: yes
   Support for Fontconfig library:   yes
   Support for Xpm library:          yes
   Support for pthreads:             yes

[root@station202 gd-2.0.33]# make
[root@station202 gd-2.0.33]# make install

8):
编辑/etc/ld.so.conf,添加以下几行到此文件中。
    /usr/local/zlib/lib
    /usr/local/freetype/lib
    /usr/local/libjpeg/lib
    /usr/local/libgd/lib
[root@station202 gd-2.0.33]# ldconfig                 ##
使用动态装入器装载找到共享库
注:上面安装GD的时候,我make第一次error,make第二次好了。神奇。freetype有1个error,不过ignore了。
9):
安装PHP

[root@station202 ~]# tar zxvf php-5.2.9.tar.gz
[root@station202 ~]# cd php-5.2.9
[root@station202 php-5.2.9]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-
mysql=/usr/local/mysql --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-
freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-zlib-
dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets  --with-libxml-dir=/usr/lib
[root@station202 php-5.2.9]# make              

[root@station202 php-5.2.9]# make install          


###########################################
php编译选项的解释:
--prefix=/usr/local/php  //
指定PHP的安装目录
--with-apxs2=/usr/local/apache2/bin/apxs     //
支持Apache模块
--with-mysql=/usr/local/mysql   //
支持MySQl
--with-gd=/usr/local/libgd    //
支持GD
--enable-gd-native-ttf    //
激活对本地 TrueType 字符串函数的支持
--with-ttf    //
激活对 FreeType 1.x 的支持
--with-freetype-dir=/usr/local/freetype   //
激活对 FreeType 2.x 的支持
--with-jpeg-dir=/usr/local/libjpeg //
激活对 jpeg-6b 的支持
--with-png-dir=/usr/local/lib   //
激活对png 的支持
--with-zlib-dir=/usr/local/zlib //
激活对zlib 的支持
--enable-mbstring   //
激活mbstring模块
--enable-gd-jis-conv //
使JIS-mapped可用,支持日文字体
--with-mail  //
支持Mail函数
--enable-xml    //
支持XML
--enable-sockets     //
支持套接字   
###########################################

[root@station202 php-5.2.9]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@station202 php-5.2.9]# cp php.ini-recommended /usr/local/php/lib/php.ini

##
使apache支持php
[root@station202 php-5.2.9]# vi /usr/local/apache/conf/httpd.conf
AddType application/x-tar .tgz
AddType application/x-httpd-php .php
AddType p_w_picpath/x-icon .ico
##
添加上面几行
<IfModule dir_module>
    DirectoryIndex index.html index.php                ##
添加个index.php
</IfModule>

[root@station202 php-5.2.9]# /usr/local/apache/bin/apachectl -k restart

##
注意,如果你开了selinuxhttpd在读取/usr/local/apache/modules/libphp5.so的时候,会出错误提示
##
有两种方法:
[root@station202 php-5.2.9]# setenforce 0            ##
selinux设置成默许模式 (不推荐)
或者:
[root@station202 php-5.2.9]# chcon -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
推荐
# vi /usr/local/apache/htdocs/test.php
##
添加以下行 
<?php            
Phpinfo();
?>

## wq
保存退出。
  (vim /usr/local/php/lib/php.ini,short_open_tag = Off改成On)
在浏览器中输入:http://www.yourdomain.com/test.php进行测试。会出现php的网站。

四:安装rrdtool
我用的是
rrdtool-1.2.30.tar 直接安装就可以了。没特别要求。


五:安装net-snmp
[root@station202 ~]# tar zxvf net-snmp-5.2.4.tar.gz
[root@station202 ~]# cd net-snmp-5.2.4
[root@station202 net-snmp-5.2.4]# ./configure --prefix=/usr/local/net-snmp --enable-developer
##
这里会要填一些问题,我都是默认,一路回车。
##
如果是Linux主机要监测100M以上的流量,需要带“--enable-mfd-rewrites”参数重新编译最新的net-snmp
[root@station202 net-snmp-5.2.4]# make
[root@station202 net-snmp-5.2.4]# make install
[root@station202 net-snmp-5.2.4]# ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
[root@station202 net-snmp-5.2.4]# cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
[root@localhost snmp]# vim /etc/snmp/snmpd.conf
 #       sec.name  source          community
com2sec notConfigUser  127.0.0.1      public
com2sec mynetwork 192.168.192.0/24 cacti
上面的IP是可以监控本机的IP。127.0.0.1不能用localhost代替。吃过亏。
##           incl/excl subtree                          mask
view all    included  .1                               80

把这句话取消注释。

[root@station202 net-snmp-5.2.4]# echo "/usr/local/net-snmp/sbin/snmpd" >> /etc/rc.local //开机启动脚本


六:安装cacti
[root@station202 ~]# tar zxvf cacti-0.8.6j.tar.gz -C /usr/local/apache/htdocs/
[root@station202 ~]# cd /usr/local/apache/htdocs/
[root@station202 htdocs]# mv cacti-0.8.6j/ cacti
[root@station202 htdocs]# vi /usr/local/apache/htdocs/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
[root@station202 htdocs]# chown -R cacti /usr/local/apache/htdocs/cacti/rra
[root@station202 htdocs]# chgrp -R cacti /usr/local/apache/htdocs/cacti
[root@station202 htdocs]# crontab -e -u cacti
##
添加下面的内容
*/5 * * * * /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
##
注意:首次执行poller.php时请使用cacti用户,否则生成的rrd文件cacti将没有写入权限。
[root@station202 cacti]# su - cacti         
[cacti@station202 ~]$ /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php
没成功,可能与之前的配置错误有关。后来成功了。

[root@station202 cacti]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 108
Server version: 5.0.81 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant select,insert,update,delete,create on *.* to cacti@"localhost" Identified by "cacti";
Query OK, 0 rows affected (0.00 sec)

mysql> create database cacti;
Query OK, 1 row affected (0.08 sec)

[root@station202 cacti]# mysql -u cacti -p cacti < cacti/cacti.sql
Enter password:
##
导入数据库


.安装Cactid

## CACTID
的安装需要以下支持:
net-snmp-devel
(需要编译安装net-snmp时添加--enable-developer选项)
mysql              
mysql-devel   
mysql源文件编译安装后默认支持)要自己安装
openssl-devel 
Redhat默认安装)

[root@station202 ~]# tar zxvf cacti-cactid-0.8.6j.tar.gz
[root@station202 ~]# cd cacti-cactid-0.8.6j
[root@station202 cacti-cactid-0.8.6j]# ./configure --with-mysql=/usr/local/mysql --with-snmp=/usr/local/net-snmp/
# make
//
这时你将在此目录下看到多出了cactidcactid.conf两个文件
[root@station202 cacti-cactid-0.8.6j]# mkdir /usr/local/cactid
[root@station202 cacti-cactid-0.8.6j]# cp cactid cactid.conf /usr/local/cactid/
[root@station202 cacti-cactid-0.8.6j]# vim /usr/local/cactid/cactid.conf
DB_Host         localhost
DB_Database     cacti
DB_User         cacti
DB_Pass         cacti
DB_Port         3306

##
用浏览器打开:http://localhost/cacti/install/
访问http://ip/cacti 报错如下:
FATAL: Cannot connect to MySQL server on 'localhost'. Please make sure you have specified a valid MySQL database name in 'include/config.php'
解决办法:
查看日志
/usr/local/apache2/htdocs/cacti/log/cacti.log
,没有日志信息
本机访问远端的mysql,是可以访问的。
但是本机访问mysql
mysql -u cacti -pcacti
确发现无法访问,返回信息如下:
ERROR 1045 (28000): Access denied for user 'cacti'@'localhost' (using password: YES)
NND
,看来这个mysql的控制越来越严格了,重新设置一遍localhost的访问看
mysql -u root -p
use mysql;
grant all privileges on cacti.* to cacti@"localhost" identified by 'cacti';
flush privileges;
可以使用mysql -u cacti -pcacti登陆了。
config.phphostname改为 127.0.0.1,重试,数据库连接上了,报错如下:
The following PHP extensions are missing:
sockets
Please install those PHP extensions and retry
解决办法,编译安装php的时候,没有加上参数,需要重新再做一次。。。。。
In the ./configure step building PHP, append --enable-sockets

步骤按照前面php安装哪里,只是在./configure的时候加上上面所说的参数:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-oci8=share,instantclient,/opt/oracle/instantclient --enable-sockets

重新安装好php,重启apache2后,终于打开了安装界面
http://10.206.19.59/cacti/install/
 
 

##
cacti进行设置,根据自己的情况,前面安装没有错的话,应该都是nextnextOK
##
输入用户/密码:admin/admin
##
然后会让你修改cacti的密码。

##
现在可以看到cacti的仙人掌了。
cacti的具体配置下次再写


参考