Installation Icinga Web 2 in FreeBSD 10.1-RELEASE-p4
Voraussetzungen
- FreeBSD 10.1-RELEASE-p4
- Apache 2.4-2.4.10_2
- PHP 5.6.4
- PHP 5.6 Extensions
- PHP Module (dom, session, spl, pcre, tokenizer, libxml, mysql, openssl, reflection, xmlrpc, xsl, soap, gd, ldap, json, gettext, sockets, pdo_mysql)
- PEAR
- PEAR-PHING
- MySQL 5.5.41
- Icinga2 2.2.3
- DB IDO MySQL (für MySQL als Backend)
- PHP PDO library
- PHP MySQL libraries (für Datenbank MySQL Unterstützung)
- PHP LDAP library (für Active Directory oder LDAP Unterstützung)
- BASE64
Installation Icinga2 2.2.2 in FreeBSD 10.1-RELEASE-p3
Installation PHP OpenSSL
Icinga Web2 benötigt Openssl Unterstützung in PHP. Wer es vergisst wird im Web basierten Setup darauf hingewiesen.
root@host:/ # pkg install -y php56-openssl
Installation PHP Gettext
Icinga Web2 benötigt PHP Gettext Unterstützung, um die Konfiguration per Konsole ./icingcli durchzuführen.
root@host:/ # pkg install -y php56-gettext
Installation PECL INTL
Icinga Web2 freut sich über Internationalisierung und benötigt dazu das PHP Modul INTL. Leider gibt es das nicht als Packages und wird über die Ports nachinstalliert.
root@host:/ # cd /usr/ports/devel/pecl-intl root@host:/usr/ports/devel/pecl-intl/ # make install
Konfiguration PHP Timezone
Icinga Web2 benötigt eine Zeitzone. Wer es vergisst zu konfigurieren wird im Web Setup darauf hingewiesen. In der php.ini wird es unter date.timezone eingestellt. Dazu in der entsprechenden Zeile das ; Zeichen entfernt und zum Beipeil Europe/Berlin eingetragen.
date.timezone = Europe/Berlin
Einstellen PHP Session Pfad
Icinga Web2 benötigt den Session Pfad, der in der php.ini definiert wird. Es wird unter session.save_path eingestellt. Dazu wird in der Zeile das ; Zeichen am Anfang der Zeile entfernt und /tmp eingetragen.
session.save_path = /tmp
Wird dieser Schritt vergessen erscheint bei Icinga Web 2 folgende Fehlermeldung.
Anschließend Apache neu starten.
root@host:/ # /usr/local/etc/rc.d/apache24 restart
Download der aktuellen Entwicklerversion
Icinga Web 2 ist noch in der Entwicklung und kann nicht als Packages oder Ports installiert werden.
Downloaden und Entpacken der aktuellsten Version von Icinga Web 2. Da github.com SSL verwendet wird der Schalter –no-verify-peer verwendet, so dass keine SSL Abfrage kommt.
root@host:/ # cd /tmp root@host:/ # fetch --no-verify-peer https://github.com/Icinga/icingaweb2/archive/v2.0.0-beta1.tar.gz root@host:/ # tar -xvzf v2.0.0-beta1.tar.gz
Apache Konfiguration
Da Icinga Web 2 auf Linux basiert ist es notwendig in der ./icingacli den Pfad zu PHP an FreeBSD anzupassen.
root@host:/ # ee /tmp/icingaweb2-2.0.0-beta1/bin/icingacli #!/usr/local/bin/php
Anschließend kann der Konfigurationsbefehl ausgeführt werden. Zuvor ist eine Sicherheitskopie der Apache Konfiguration (httpd.conf) sinnvoll.
root@host:/ # cp /usr/local/etc/apache24/httpd.conf /usr/local/etc/apache24/httpd.conf_save root@host:/ # /tmp/icingaweb2-2.0.0-beta1/bin/icingacli setup config webserver apache --document-root \ /usr/local/etc/icinga-web2/public --config /usr/local/etc/icinga-web2 >> /usr/local/etc/apache24/httpd.conf
Mit Ausführen des Befehls werden die <Directory> Daten in die Apache Konfiguration am Ende angehängt. Zu beachten ist, dass die SetEnv Variable korrekt auf das Verzeichnis zeigt, wohin die Icinga Web 2 Dateien und Unterverzeichnisse kopiert wurden.
Alias /icingaweb "/usr/local/etc/icinga-web2/public" <Directory "/usr/local/etc/icinga-web2/public"> Options SymLinksIfOwnerMatch AllowOverride None <IfModule mod_authz_core.c> # Apache 2.4 <RequireAll> Require all granted </RequireAll> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order allow,deny Allow from all </IfModule> SetEnv ICINGAWEB_CONFIGDIR "/usr/local/etc/icinga-web2" EnableSendfile Off <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /icingaweb/ RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] </IfModule> <IfModule !mod_rewrite.c> DirectoryIndex error_norewrite.html ErrorDocument 404 /error_norewrite.html </IfModule> </Directory>
Falls das Konfigurationsverzeichnis nicht stimmt kann man es auch nachträglich in der httpd.conf ändern. Zum Beispiel aus dem Standardpfad zur Icinga Web 2 Konfiguration („/etc/icingaweb“) den individuellen Pfad („/usr/local/etc/icinga-web2“) machen.
SetEnv ICINGAWEB_CONFIGDIR "/usr/local/etc/icinga-web2"
Ohne das Rewrite Modul von Apache wird Icinga Web 2 nicht starten und es erscheint die Meldung „The rewrite module is not enabled“ im Webbrowser. Wer es bis jetzt nicht aktviert hat kann es gleich miterledigen. Dazu einfach das # Zeichen am Anfang der Zeile entfernen.
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
Bereits jetzt könnte man die Webseite von Icinga Web 2 aufrufen (http://localhost/icingaweb/). Gibt man jedoch das Login / Passwort icingaadmin / icingaadmin ein wird eine Fehlermeldung angezeigt. Das liegt daran, dass vorher der Nutzerzugriff erstellt werden muss.
No authentication methods available. Did you create authentication.ini when setting up Icinga Web 2?
Weiter kommt man noch nicht, denn es fehlt das Setup von Icinga Web 2. Dazu ruft man es über http://localhost/icingaweb/setup auf und wird nach einem Token gefragt. Zuvor sind aber noch ein paar Schritte notwendig.
Konfiguration MySQL
Zu beachten ist, dass hier nicht die DB IDO konfiguriert wird, sondern die Datenbank für Icinga Web 2.
root@host:/ # mysql -u root -p mysql> CREATE DATABASE icinga_web; mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON \ icinga_web.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web'; mysql> FLUSH PRIVILEGES; mysql> quit root@host:/ # mysql -u root -p icinga_web < /tmp/icingaweb2-2.0.0-beta1/etc/schema/mysql.schema.sql
Check Session deaktivieren
Falls man in php.ini nicht den Session Pfad auf /tmp gesetzt, wird Icinga Web 2 ohne Anpassung der PhpSession.php im Webbrowser nur Fehlermeldungen ausgeben. Die Klasse PhpSession erwartet das PHP seine Dateien in /tmp speichert. Das kann umgangen werden, indem in der PhpSession.php ab Zeile 81 der Session-Check auskommentiert wird.
root@host:/ # ee /tmp/icingaweb2-2.0.0-beta1/library/Icinga/Web/Session/PhpSession.php # if (!is_writable(session_save_path())) { # throw new ConfigurationError('Can\'t save session'); # }
Kopieren von Icinga Web 2 in das Arbeitsverzeichnis
Vor dem Web basierten Setup muss nur noch das Verzeichnis erstellt werden, wo alle Dateien sowie das Webverzeichnis kopiert werden.
Zuerst das Verzeichnis erstellen und anschließend alle Dateien von /tmp/icingaweb2-2.0.0-beta1 in das neue Icinga Web 2 /usr/local/etc/icinga-web2 kopieren.
root@host:/ # /tmp/icingaweb2-2.0.0-beta1/bin/icingacli setup config createDirectory www \ --path /usr/local/etc/icinga-web2 Successfully created configuration directory at: /usr/local/etc/icinga-web2 root@host:/ # cp -r /tmp/icingaweb2-2.0.0-beta1 /usr/local/etc/icinga-web2/
Im späteren Verlauf von Web Setup werden die Dateien erstellt. Dazu ist es notwendig, dass Icinga Web 2 Lese- und Schreibzugriff auf das Verzeichnis /usr/local/etc/icinga-web2/modules/monitoring bekommt. Mit chmod werden die Zugriffsrechte angepasst.
root@host:/ # chmod 777 /usr/local/etc/icinga-web2/modules/monitoring/
Token erstellen
Wer den Befehl icingacli setup token create aufruft wird eine Fehlermeldung bekommen. Standardmäßig legt der Befehl den Token unter /etc/icingaweb ab.. Den gibt es aber nicht. Das Probleme lösst man einfach per Hand.
Zuvor ist das Package base64 notwendig.
root@host:/ # pkg install -y base64
Dann kann der Token erzeugt werden.
root@host:/ # head -c 12 /dev/urandom | base64 | tee /usr/local/etc/icinga-web2/setup.token The newly generated setup token is: axWx2rJYPEBe0LFv
Ohne die Zugriffsrechte anzupassen wird das Setup von Icinga Web 2 einen Warnhinweis ausgeben.
root@host:/ # chmod 0660 /usr/local/etc/icinga-web2/setup.token
Jetzt ist alles fertig um das Setup per Webbrowser durchzuführen.
Setup per Website
Willkommensseite
Authentifikation Backend
Die Einstellung werden in der Datenbank gespeichert.
Die Anmeldedaten für die Datenbank sind notwendig.
Authentication Backend
Administration: Hier wird der Login-Name und das Passwort festgelegt. Zum Beispiel icingaadmin / icingaadmin
Die Einstellung wohin Icinga Web das Logging machen soll.
Damit die Datenbank angelegt werden kann ist der Root Account für MySQL notwendig.
Damit sind alle Grundangaben fertig.
Das Monitoring Backend soll die IDO Datenbank sein. Dazu sind die Anmeldedaten für das IDO anzugeben.
Damit Icinga Web 2 auch Icinga2 Kommando senden kann muss es den Pfad zum Command kennen.
Um Icinga für fremden Augen zu schützen kann man hier sagen, was verborgen werden soll. Der Standard sollte erst mal reichen.
Damit ist der Assistent fertig. Die Einstellungen nochmal prüfen und auf Fertigstellen klicken. Auf der rechten Seite wird das ein grünes Feld erscheinen.
Klickt man anschließend auf weiter, kommt der letzte Übersicht.
Zum Abschluss zeigt Icinga Web 2 eine Zusammenfassung und ob alles gut ging. Falls nicht wird in rot gezeigt, was alles schief ging. Zum Beispiel:
Ist alles ok kann man unten an stellen von „zurück“ auf „weiter“ klicken.
Fertig
Jetzt kann man sich in Icinga Web 2 einloggen und Spaß haben.