Als je een server hebt met Centos7 gecombineerd met PHP7.x en dus ook Percona Server 5.x geinstalleerd, dan is het installeren van Cacti wel een beetje een domper.
Want, de vereisten van Cacti op hun website zijn als volgt (belangrijkste items):
Dat zou zeggen, de installatie is zo gedaan. Kwestie van yum install en klaar. Maar helaas;
Error: Package: 1:mariadb-5.5.52-1.el7.x86_64 (base)
Requires: mariadb-libs(x86-64) = 1:5.5.52-1.el7
Available: 1:mariadb-libs-5.5.52-1.el7.x86_64 (base)
mariadb-libs(x86-64) = 1:5.5.52-1.el7
Error: Package: php-ldap-5.4.16-42.el7.x86_64 (base)
Requires: php-common(x86-64) = 5.4.16-42.el7
Installed: php-common-7.0.17-1.el7.remi.x86_64 (@remi-php70)
php-common(x86-64) = 7.0.17-1.el7.remi
Available: php-common-5.4.16-42.el7.x86_64 (base)
php-common(x86-64) = 5.4.16-42.el7
Error: Package: php-snmp-5.4.16-42.el7.x86_64 (base)
Requires: php-common(x86-64) = 5.4.16-42.el7
Installed: php-common-7.0.17-1.el7.remi.x86_64 (@remi-php70)
php-common(x86-64) = 7.0.17-1.el7.remi
Available: php-common-5.4.16-42.el7.x86_64 (base)
php-common(x86-64) = 5.4.16-42.el7
Error: php-mysql conflicts with php-mysqlnd-7.0.17-1.el7.remi.x86_64
Error: Package: php-mbstring-5.4.16-42.el7.x86_64 (base)
Requires: php-common(x86-64) = 5.4.16-42.el7
Installed: php-common-7.0.17-1.el7.remi.x86_64 (@remi-php70)
php-common(x86-64) = 7.0.17-1.el7.remi
Available: php-common-5.4.16-42.el7.x86_64 (base)
php-common(x86-64) = 5.4.16-42.el7
Error: Package: cacti-1.0.4-1.el7.noarch (epel)
Requires: php-mysql
Available: php-mysqlnd-5.4.16-42.el7.x86_64 (base)
php-mysql = 5.4.16-42.el7
Installed: php-mysqlnd-7.0.17-1.el7.remi.x86_64 (@remi-php70)
Not found
Error: Package: php-xml-5.4.16-42.el7.x86_64 (base)
Requires: php-common(x86-64) = 5.4.16-42.el7
Installed: php-common-7.0.17-1.el7.remi.x86_64 (@remi-php70)
php-common(x86-64) = 7.0.17-1.el7.remi
Available: php-common-5.4.16-42.el7.x86_64 (base)
php-common(x86-64) = 5.4.16-42.el7
Error: Package: php-mysql-5.4.16-42.el7.x86_64 (base)
Requires: php-pdo(x86-64) = 5.4.16-42.el7
Installed: php-pdo-7.0.17-1.el7.remi.x86_64 (@remi-php70)
php-pdo(x86-64) = 7.0.17-1.el7.remi
Available: php-pdo-5.4.16-42.el7.x86_64 (base)
php-pdo(x86-64) = 5.4.16-42.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
De optie –enablerepo=remi-php70 geeft wel een deel opgelost terug maar niet alles. Jammer genoeg.
Error: Package: cacti-1.0.4-1.el7.noarch (epel)
Requires: php-mysql
Available: php-mysql-5.4.16-42.el7.x86_64 (base)
php-mysql = 5.4.16-42.el7
Available: php-mysqlnd-5.4.16-42.el7.x86_64 (base)
php-mysql = 5.4.16-42.el7
Available: php-pecl-mysql-1.0.0-0.8.20151007git294ce3b.el7.remi.7.0.x86_64 (remi-php70)
php-mysql = 1:1.0.0
Available: php-pecl-mysql-1.0.0-0.9.20151007git294ce3b.el7.remi.7.0.x86_64 (remi-php70)
php-mysql = 1:1.0.0
Installed: php-mysqlnd-7.0.17-1.el7.remi.x86_64 (@remi-php70)
Not found
Available: php-mysqlnd-7.0.16-1.el7.remi.x86_64 (remi-php70)
Not found
Error: Package: 1:mariadb-5.5.52-1.el7.x86_64 (base)
Requires: mariadb-libs(x86-64) = 1:5.5.52-1.el7
Available: 1:mariadb-libs-5.5.52-1.el7.x86_64 (base)
mariadb-libs(x86-64) = 1:5.5.52-1.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
De optie –skip-broken geeft helemaal niet het gewenste resultaat. Oftewel we zijn weer terug bij af.
Er is een weg dat we het wel aan de praat krijgen middels de source RPM.
We maken allereerst een extra user aan “rpmbuild” en installeren de package rpmbuild. Onder de user rpmbuild downloaden we de source RPM voor cacti versie 1.0.4 en pakken deze uit:
useradd rpmbuild
yum install -y rpm-build
su - rpmbuild
wget https://dl.fedoraproject.org/pub/epel/7/SRPMS/c/cacti-1.0.4-1.el7.src.rpm
rpm -i cacti-1.0.4-1.el7.src.rpm
Er zijn dan een tweetal directories aangemaakt in de map “rpmbuild”. We open de directory “SPECS” en stellen de originele even veilig waarna we de “cacti.spec” openen met een text editor zoals VIM:cd
cd rpmbuild/
ls -l
total 0
drwxr-xr-x. 2 rpmbuild rpmbuild 124 Mar 31 13:46 SOURCES
drwxr-xr-x. 2 rpmbuild rpmbuild 24 Mar 31 13:46 SPECS
cd SPECS
cp cacti.spec cacti.orig
vim cacti.spec
Op regel nummer 13 en 14 vind je de vereisten php (en componenten) en mariadb terug. Deze kan je uitzetten door een ‘#’ er voor te zetten:
#Requires: php, php-ldap, php-mbstring, php-mysql, php-pdo, php-snmp, php-xml
#Requires: mariadb
Hierna moeten nog 2 regels uitgezet worden door een comment (‘#’) te plaatsen op regel 46 en 71:
#%{__install} -d -m 0755 %{buildroot}/%{_pkgdocdir}
#%{__cp} -a docs/ %{buildroot}/%{_pkgdocdir}
Daarna, zet in de regel 3 iets extra’s neer om een eigen release naam aan te duiden, zodat duidelijk is dat deze niet origineel is:
Release: 1%{?dist}
word:
Release: 1%{?dist}.bj
Nu is alles in place om de RPM weer terug te bouwen:
rpmbuild -ba cacti.spec
Er is zijn nu diverse files gemaakt waarmee je verder kan. Je kan ook de nieuwe Source RPM kopieren om weer extra aanpassingen elders te maken. Dat doen we nu niet, we gaan de gecompileerde RPM installeren. Deze is gemaakt in de directory rpmbuild/RPMS/. Uiteraard moeten we weer uit het user account ‘rpmbuild’ gaan en root access hebben. De installatie kan door middel van:
yum install /home/rpmbuild/rpmbuild/RPMS/noarch/cacti-1.0.4-1.el7.centos.bj.noarch.rpm
En daarmee is Cacti door Yum geinstalleerd op een CentOS7 machine met PHP7.0 en Percona-Server 5.7.
Het beste is dan te starten vanaf stap 2:
http://docs.cacti.net/manual:088:1_installation.1_install_unix.5_install_and_configure_cacti
In mijn geval n.a.v. de nieuwe server is het volgende eerst inregelen, en dan op stap 2 verder:
mv /etc/httpd/conf.d/cacti.conf /etc/httpd/conf.d/cacti.conf.old
ln -s /usr/share/cacti /var/www/cacti
vim /etc/httpd/conf.d/cacti.pc-mania.nl.conf:
<VirtualHost *:80>
DocumentRoot /var/www/cacti/
ServerName cacti.pc-mania.nl
<Directory /var/www/cacti/>
AllowOverride all
Options MultiViews IncludesNoExec FollowSymLinks
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/cacti
ServerName cacti.pc-mania.nl
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cacti.pc-mania.nl/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cacti.pc-mania.nl/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/cacti.pc-mania.nl/chain.pem
<Directory /var/www/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order allow,deny
Allow from all
</IfModule>
AllowOverride all
Options MultiViews IncludesNoExec FollowSymLinks
</Directory>
<Directory /var/www/cacti/install>
# mod_security overrides.
# Uncomment these if you use mod_security.
# allow POST of application/x-www-form-urlencoded during install
#SecRuleRemoveById 960010
# permit the specification of the rrdtool paths during install
#SecRuleRemoveById 900011
</Directory>
# These sections marked "Require all denied" (or "Deny from all")
# should not be modified.
# These are in place in order to harden Cacti.
<Directory /var/www/cacti/log>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Directory>
<Directory /var/www/cacti/rra>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Directory>
</VirtualHost>