How to Install Cacti on CentOS 6

Cacti is a NMS (Network Management Software) that uses RRDTool‘s for data storage and graphing functionality. Cacti is webbased and released un the GNU General Public License which means that’s it 100% free. It runs on Windows, Linux and Solaris. Running it on Linux allows you to have a good and free NMS solution. In this lesson I’ll show you how to install cacti on a CentOS 6 server.


First we need to install apache to serve HTTP requests:

# yum install httpd httpd-devel

We also require Mysql for the database:

# yum install mysql mysql-server

Don’t forget PHP:

# yum install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-mysql

And SNMP support:

# yum install php-snmp
# yum install net-snmp-utils p net-snmp-libs php-pear-Net-SMTP

Install RRDtool for good looking graphs:

# yum install rrdtool

Once you have installed everything we can start the services:

# service httpd start
# service mysqld start
# service snmpd start

After reboot you will have to start them again so it’s better to change this so these services always start at boot:

# chkconfig httpd on
# chkconfig mysqld on
# chkconfig snmpd on

You can install Cacti from a repository or compile it yourself. To save time we’ll use the EPEL repository:

# wget
# rpm -ivh epel-release-6-8.noarch.rpm

Now we can install Cacti:

# yum install cacti

Apache, Mysql and SNMP are now running and Cacti has been installed. The next step will be configuring MySQL to prepare for Cacti:

MySQL configuration

Because we just installed MySQL we still have to set a password for MySQL server. We also have to create a new database for Cacti and create a new user account:

# mysqladmin -u root password MYPASSWORD

MySQL server now has a password, let’s login and create a database and user account:

# mysql -u root -p
Enter password: MYPASSWORD
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.1.69 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

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

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

mysql> grant all on cacti.* to cacti@localhost identified by 'MYPASSWORD';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit

We have a new database called ‘cacti’ and a username called ‘cacti’. The database is there but it’s still empty. We’ll import a file from the Cacti installation into the database. First we need to find out where it is located:

# rpm -ql cacti | grep cacti.sql

In my case it’s in the folder above. We’ll import this SQL file into the database:

# mysql -u cacti -p cacti < /usr/share/doc/cacti-0.8.8a/cacti.sql 

This will fill the database…now we need to edit the database configuration file of cacti so that it uses the correct database name and username:

# vi /etc/cacti/db.php

I’ll use vi as the text editor. Below you will find the part that we are looking for:

/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
$database_ssl = false;

Make sure it reflects your database name and username/password. When you are done save the file and exit vi. We still have to configure Apache…

Apache Configuration

We can change the Apache configuration to choose what IP addresses / subnets are allowed to connect. You can do this by editing the following file:

# vi /etc/httpd/conf.d/cacti.conf

This is the part we are looking for:

<Directory /usr/share/cacti/>
        <IfModule mod_authz_core.c>
                # httpd 2.4
                Require host localhost
        <IfModule !mod_authz_core.c>
                # httpd 2.2
                Order deny,allow
                Deny from all
                Allow from localhost

I will change “Allow from localhost” to “Allow from all” so that I can access Cacti from any IP address:

Allow from all

If you are installing Cacti for a production environment then it’s better to make things a little bit more secure by only selecting a certain range of IP addresses like this:

Allow from

Once you are done, save your configuration and exit vi. Don’t forget to restart Apache:

# service httpd restart

MySQL and Apache are now up and running. The last thing to do is enable a Cronjob. This allows Cacti to collect information from devices.

Configuring Cron

By default Cron will collect data from devices every 5 minutes but the cronjob is disabled by default. We’ll enable it ourselves:

# vi /etc/cron.d/cacti

You will find the line below:

#*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

Remove the # so that it looks like this:

*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

Save your changes and exit vi. We can now access the web installer!

Configuring Cacti

You can access the GUI from your webbrowser using http://YOUR-IP/cacti. It will look like this:

cacti web installer

Click on Next and choose for a new installation:

cacti new install

Cacti will show you an installation guide checklist, everything should look good by now:

cacti install checklist

Just click on Finish and you are presented with the login screen:

cacti login screen

The default username and password is admin/admin. Hit the login button and you will be prompted to change your password:

cacti password change

After changing the password and saving it you will be rewarded with the main screen:

cacti main screen

Cacti is now installed and ready to monitor! Go add some devices and explore Cacti. I hope this lesson has been helpful to you to install Cacti on your CentOS server.

Tags: ,

Forum Replies

  1. This is great! Can you also create a guide how to setup weathermap. thanks a lot

Ask a question or join the discussion by visiting our Community Forum