前言:本文基于我的rpm一键包来部署,目前网上很多都是老版本的教程,而且现在很多网站还不断的爬来爬去,导致很多新发布的教程内容还是老的,看完本文后如果对你有所帮助期待你的赞赏。
本篇教程基于Cacti1.2.2版本验证,其他版本自测!
Cacti坑确实很多,官方也是偶尔突然更新下,老牌的监控软件也就这么没落了,另外Cacti真的很不安全,强烈建议部署在内网里!
文中所用的包组,来自于whsir一键包,强烈建议按照文中配置进行安装,别上来就改来改去,最后各种报错。
如果要进行版本升级,一定要做好数据备份,Cacti升级失败的风险还是比较大的~
原来本文是以php7.2为例,后续再使用中发现cacti偶尔会在php7.2下报错,因为有些函数兼容性问题,所以不建议使用php7.2或php7.3版本来运行cacti。
本文在Centos7.x系统上运行,php使用7.1版本,mysql使用5.7版本,注意内存要大于2G!!!
1、卸载自带的mariadb相关服务
yum remove mariadb-libs
2、添加epel源
yum install epel-release
3、添加whsir一键包源
rpm -ivh http://mirrors.whsir.com/centos/whsir-release-centos.noarch.rpm
4、安装nginx、php、mysql
yum install wnginx wphp71 wmysql57
5、安装php扩展及其他所需依赖
yum install wphp71-ldap wphp71-snmp wrrdtool wnet-snmp wspine-1.2.2 sendmail
6、设置环境变量
echo 'export PATH=$PATH:/usr/local/nginx/sbin/:/usr/local/php/bin/:/usr/local/mysql/bin/' >> /etc/profile
source /etc/profile
7、设置两个软链接
ln -sv /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
ln -sv /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so
8、取消被禁用的php函数
vi /usr/local/php/etc/php.ini
找到disable_functions行,删除shell_exec,exec,popen,保存退出,重启php服务
/etc/init.d/php-fpm71 start
9、启动相关服务
/etc/init.d/nginx start
/etc/init.d/mysql start
/etc/init.d/snmpd start
**10、修改MySQL密码(默认为空)*
修改默认MySQL密码,创建cacti数据库,并添加相应权限
mysql -uroot -p
mysql> set password = password('whsir');
mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'blog.whsir.com';
mysql> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'blog.whsir.com';
mysql> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> flush privileges;
mysql> quit
11、加载时区到mysql数据库
/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -uroot -pwhsir mysql
12、下载cacti
网络不佳的情况下,强烈建议先下载到本地,再上传到服务器
mkdir /data/www
cd /data/www
wget https://www.cacti.net/downloads/cacti-1.2.2.tar.gz
tar xf cacti-1.2.2.tar.gz
mv cacti-1.2.2 cacti
13、修改cacti数据库配置文件
cd /data/www/cacti/include
vi config.php
cd /data/www/cacti/include
vi config.php
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = 'blog.whsir.com';
$database_port = '3306';
$database_ssl = false;
14、导入cacti.sql
mysql -ucacti -pblog.whsir.com cacti < /data/www/cacti/cacti.sql
touch日志文件,后续安装时用的到
touch /data/www/cacti/log/cacti.log
touch /data/www/cacti/log/cacti_stderr.log
15、做一些软链,后续安装用的到
ln -sv /usr/local/rrdtool/bin/rrdtool /usr/local/bin/rrdtool
ln -sv /usr/local/php/bin/php /usr/bin/php
ln -sv /usr/local/snmp/bin/snmpwalk /usr/local/bin/snmpwalk
ln -sv /usr/local/snmp/bin/snmpget /usr/local/bin/snmpget
ln -sv /usr/local/snmp/bin/snmpbulkwalk /usr/local/bin/snmpbulkwalk
ln -sv /usr/local/snmp/bin/snmpgetnext /usr/local/bin/snmpgetnext
ln -sv /usr/local/snmp/bin/snmptrap /usr/local/bin/snmptrap
16、修改cacti目录权限
chown -R www:www /data/www/cacti/
17、修改nginx配置
vi /usr/local/nginx/conf/vhost/demo.conf
修改root路径为root /data/www;,取消php注释include enable-php71.conf;,修改下server_name为本机IP,或者自己填个域名,自行hosts,不做过多说明!
18、重启nginx服务
nginx -t
/etc/init.d/nginx restart
19、spine配置
spine是一个基于C语言的,非常快速的轮询引擎,它是默认的cmd.php的可选替代,如果要使用spine需要单独的设置
cd /usr/local/spine/etc
cp spine.conf.dist spine.conf
vi spine.conf
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass blog.whsir.com
DB_Port 3306
验证一下
/usr/local/spine/bin/spine
返回以下内容表示成功
SPINE: Using spine config file [spine.conf]
SPINE: Version 1.2.2 starting
SPINE: Time: 1.0244 s, Threads: 1, Devices: 1
20、进入web安装
注意:如果访问有问题,修改后建议清空下浏览器缓存,或直接开浏览器隐身模式,以防有缓存
http://IP/cacti
默认账号密码admin,第一次登陆后会提示更改密码
勾选许可协议,开始继续
安装向导检查,根据检查结果,自行更改php.ini和my.cnf文件,更改后记得重启,如相关参数在配置中不存在,手动添加即可
这里需要在my.cnf添加以下参数(注意最后两个参数如果不添加,后续可能会产生warning),然后重启MySQL
vi /etc/my.cnf
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
/etc/init.d/mysql restart
安装完成后,看到以下页面
21、手动配置spine
至此Cacti1.2.2安装完成