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):
httpd,php,php-mysql,php-snmp php-xml mysql,mysql-server
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>