- Create a backup of the database. The following command will back up the Cacti database to a file called cacti_backup.sql. You will be asked for the MySQL root password:
mysqldump -u root -p --lock-tables --add-drop-table cacti > /root/cacti_backup.sql
- Change to the /var/www/html directory. From http://www.cacti.net, download the source for the version you want to upgrade to.
- Create the CACTIVERSION variable and set it to the current Cacti version:
export NEWCACTIVERSION=1.1.28
- Extract the file. This will create a new directory named cacti-1.1.28:
cd /var/www/html
wget https://www.cacti.net/downloads/spine/cacti-
spine-$NEWCACTIVERSION.tar.gz
tar -xzvf cacti-spine-$NEWCACTIVERSION.tar.gz
- Change to the newly-created directory and edit include/config.php. Change the database entries in there to match your installation.
- Before copying any files, you should stop the poller using the web interface. Go to Configuration | Settings and change to the Poller tab. Disable the poller by unchecking it:
- Copy some files from your existing installation to the new one:
cp /var/www/html/cacti/rra/* /var/www/html/cacti-$NEWCACTIVERSION/rra/
cp -u /var/www/html/cacti/scripts/* /var/www/html/cacti-$NEWCACTIVERSION/scripts/
cp -u -R /var/www/html/cacti/resource/* /var/www/html/cacti-$NEWCACTIVERSION /resource/
- Set the permissions on the log and rra folders:
cd /var/www/html/cacti-$NEWCACTIVERSION/
chown -R cactiuser.apache /var/www/html/cacti-$NEWCACTIVERSION/
chmod -R 775 rra/ log/ resource/ scripts/ cache/
setfacl -d -m group:apache:rw /var/www/html/cacti/rra
setfacl -d -m group:apache:rw /var/www/html/cacti/log
- Change the symbolic link to point to the new directory:
cd /var/www/html/
ln -fs cacti-$NEWCACTIVERSION cacti
- As Cacti 1.x requires the timezone data to be present in the MySQL/MariaDB database, you will have to import it here as well when upgrading from the 0.8.8 version of Cacti:
mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/mysql_timezone.sql
mysql -u root -p mysql < /tmp/mysql_timezone.sql
- You will also have to grant access to the timezone tables using the following SQL statement:
GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost IDENTIFIED BY 'MyV3ryStr0ngPassword';
- The final upgrade process is done using the web interface. Point your browser to http://<yourserver>/cacti/install and follow the steps. Make sure you select Upgrade on the second page.
- If you are upgrading from 0.8.8 to 1.x, the upgrade process will take some time to complete depending on your Cacti installation size.
- You can now enable the poller again using the Cacti web interface.
- Once you have checked that everything is working fine, you can remove or archive the original Cacti directory.