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,mysql,php,net-snmp,cacti,cacti-cactid,rrdtool,以及php需要的gd库:zlib,freetype,libpng,jpeg,fontconfig,libgd,libxml。
注:版本能用最新的就用最新的,兼容性一般是新的好。
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
先安装zlib,libpng,freetype,jpeg,fontconfig,libgd,libxml。以便于让PHP支持GD库(Cacti的WeatherMap插件必须要较新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 ## 需要libxml2和freetype的支持
[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
## 注意,如果你开了selinux,httpd在读取/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保存退出。
在浏览器中输入: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主机要监测
[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
# 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
//这时你将在此目录下看到多出了cactid、cactid.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/
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.php的hostname改为 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进行设置,根据自己的情况,前面安装没有错的话,应该都是next,next就OK
## 输入用户/密码:admin/admin
## 然后会让你修改cacti的密码。
## 现在可以看到cacti的仙人掌了。
cacti的具体配置下次再写
参考