Icingaweb2 unter nginx betreiben
Icinga2 ist in Kombination mit Icingaweb2 ein tolles Monitoring Werkzeug, das recht einfach zu installieren ist. Allerdings ist die Konfiguration für den Betrieb unter nginx keineswegs einfach und es gibt keine Anleitung im Netz, die komplett richtig ist und sofort funktioniert. Daher hier meine Anleitung.
Vorbedingungen:
- Icinga2 und Icingaweb2 wurde nach dem obigen Link installiert.
- Icinga2 soll unter einer Subdomain betrieben werden.
- Letsencrypt / Zertifikate stehen zur Verfügung.
- Icingaweb2 wurde unter /usr/share/icingaweb2/ installiert.
- Der PHP Prozess läuft unter dem Socket php5-fpm.sock.
Wenn eine Bedingung nicht erfüllt sein sollte, bitte im Code anpassen.
server { listen 80; listen [::]:80; server_name icinga.xy.de; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/xy.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xy.de/privkey.pem; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; server_name icinga.xy.de; index index.php; root /usr/share/icingaweb2/public; error_log /var/log/nginx/error.log; location = /favicon.ico { log_not_found off; access_log off; expires max; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; access_log off; log_not_found off; } location ~ \..*/.*\.php$ { return 403; } if (!-d $request_filename) { rewrite ^/(.+)/$ /$1 permanent; } location / { try_files $1 $uri $uri/ /index.php$is_args$args; } location ~ ^/index\.php(.*)$ { fastcgi_index index.php; include /etc/nginx/fastcgi_params; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php; fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2; fastcgi_param REMOTE_USER $remote_user; } }
Hallo Benjamin,
wenn ich die URL https://moni..de aufrufe erhalte ich lediglich den Inhalt der Datei /usr/share/icingaweb2/public/index.php als Ausgabe.
Ich nehme an irgendetwas ist fehlerhaft mit meiner Nginx-Konfiguration.
Frage:
Wie soll denn der Aufruf der WebUI gemacht werden?
https://moni..de oder
https://moni..de/icingaweb2
Was meinst du mit Ausgabe? Wenn die Datei runtergeladen wird, dann stimmt was nicht mit deinen PHP Settings in FPM und überprüfe die Rechte auf den Dateien. Der PHP Prozess muss auf die Dateien zugreifen können, also chown -R benutzer:gruppe /usr/share/icingaweb2/
Ich finde es immer sauberer wenn es ohne /icinga ist und meine Konfiguration basiert darauf.
Die URL im vorigen Post soll so aussehen:
https://moni.mydomain.de
und entsprechend in der Frage:
https://moni.mydomain.de
https://moni.mydomain.de/icingaweb2
OK.
Die PHP-Settings überprüfen…
Ich habe in /etc/php5/fpm/php.ini lediglich 1 Parameter angepasst: date.timezone = Europe/Berlin
Alles andere ist so wie vom Paketmanager installiert.
Ne, ich meinte die pool-settings unter /etc/php5/fpm/pool…
Dort legst du ja den PHP Listener fest für den Prozess. Ich vermute, dass es ein Dateirechte oder Ausführungsproblem ist. Einfach etwas rumprobieren und googlen.
Der php-fpm Socket läuft mit dem User www-data.
root@vm-monitor:~# ls -l /var/run/php5*
-rw-r–r– 1 root root 5 Jul 19 14:15 /var/run/php5-fpm.pid
srw-rw—- 1 www-data www-data 0 Jul 19 14:15 /var/run/php5-fpm.sock
Derselbe User ist Owner von /usr/share/icingaweb2/public:
root@vm-monitor:~# ls -l /usr/share/icingaweb2/
insgesamt 24
drwxr-xr-x+ 9 root root 4096 Jul 19 01:47 application
drwxr-xr-x+ 4 root root 4096 Jul 19 11:36 doc
drwxr-xr-x+ 3 root root 4096 Jul 19 01:47 etc
drwxr-xr-x+ 3 root root 4096 Jul 19 01:47 library
drwxr-xr-x+ 6 root root 4096 Jul 19 01:47 modules
drwxr-xr-x+ 6 www-data www-data 4096 Jul 19 15:07 public
root@vm-monitor:~# ls -l /usr/share/icingaweb2/public/
insgesamt 28
drwxr-xr-x+ 6 www-data www-data 4096 Jul 19 11:36 css
-rw-r–r– 1 www-data www-data 43 Jun 9 16:43 error_norewrite.html
drwxr-xr-x+ 2 www-data www-data 4096 Jul 19 11:36 font
drwxr-xr-x+ 5 www-data www-data 4096 Jul 19 11:36 img
-rw-r–r– 1 www-data www-data 135 Jun 9 16:43 index.php
drwxr-xr-x+ 4 www-data www-data 4096 Jul 19 11:36 js
-rw-r–r– 1 www-data www-data 26 Jul 19 15:07 robots.txt
Allerdings ist root der Owner von /usr/share/php/Icinga/Application/webrouter.php:
root@vm105-monitor:~# ls -l /usr/share/php/Icinga/Application/
insgesamt 148
-rw-r–r– 1 root root 15380 Jun 9 16:43 ApplicationBootstrap.php
-rw-r–r– 1 root root 8175 Jun 9 16:43 Benchmark.php
-rw-r–r– 1 root root 8759 Jun 9 16:43 ClassLoader.php
-rw-r–r– 1 root root 4812 Jun 9 16:43 Cli.php
-rw-r–r– 1 root root 13385 Jun 9 16:43 Config.php
-rw-r–r– 1 root root 1807 Jun 9 16:43 EmbeddedWeb.php
-rw-r–r– 1 root root 2755 Jun 9 16:43 functions.php
drwxr-xr-x+ 3 root root 4096 Jul 19 01:47 Hook
-rw-r–r– 1 root root 6727 Jun 9 16:43 Hook.php
-rw-r–r– 1 root root 1057 Jun 9 16:43 Icinga.php
-rw-r–r– 1 root root 645 Jun 9 16:43 LegacyWeb.php
drwxr-xr-x+ 3 root root 4096 Jul 19 01:47 Logger
-rw-r–r– 1 root root 9182 Jun 9 16:43 Logger.php
drwxr-xr-x+ 2 root root 4096 Jul 19 01:47 Modules
-rw-r–r– 1 root root 11039 Jun 9 16:43 Platform.php
-rw-r–r– 1 root root 1476 Jun 9 16:43 Version.php
-rw-r–r– 1 root root 17231 Jun 9 16:43 Web.php
-rw-r–r– 1 root root 2732 Jun 9 16:43 webrouter.php
Unter welchem Benutzer läuft bei dir der Webserver? www-root?
Wer ist der Owner der Dateien unter /usr/share/php/Icinga?
Nach ewigem Config suchen hat deine Konfiguration auf Anhieb funktioniert. Danke Benjamin.
I’m looking for a script, it works perfectly, thanks.
My Hero 🙂
works with some minor changes.
On Debian 9 (stretch) the socket was different: fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
Great thanks!