Installing Icinga Web 2 with Apache 2.4, Icinga 2 and MySQL on FreeBSD

The last entry was about
Installing Icinga 2 with MySQL on FreeBSD.

This one now shows how to install and configure the new Icinga Web 2
interface on FreeBSD and use it with Icinga 2 and a MySQL database
both as authentication and data source.

I assume that you followed the last blog entry and have now a FreeBSD machine running Icinga 2 which writes
data into the MySQL database running on the same host.

Install Icinga Web 2 and Apache 2.4 with mod_php

Using binary packages, installing is just a matter of

# pkg install apache24 mod_php56 icingaweb2

The mod_php56 package is automatically enabled in /usr/local/etc/apache24/httpd.conf but it still needs
some configuration:

# cat << EOF > /usr/local/etc/apache24/modules.d/001_mod_php.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source

To enable mod_rewrite in Apache, uncomment the #LoadModue rewrite [...] line:

LoadModule rewrite_module

Copy the example Apache configuration file for Icinga Web 2:

# cp /usr/local/share/examples/icingaweb2/apache/icingaweb2.conf /usr/local/etc/apache24/Includes/

Configure PHP and Include the ZendFramework libaries:

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

In /usr/local/etc/php.ini search for include_path and insert the following after:

include_path = ".:/usr/local/share/ZendFramework/library"

Also in /usr/local/etc/php.ini set date.timezone:

date.timezone = Europe/Berlin

Now enable starting Apache at boot time and start it:

# sysrc apache24_enable=yes
# service apache24 start

Configure Icinga Web 2

You can either configure Icinga Web 2 and MySQL from the command line or more comfortable trough its
web interface. I will show you the latter:

Create a new setup token:

# cd /usr/local/www/icingaweb2/
# ./bin/icingacli setup token create --config=/usr/local/etc/icingaweb2
The newly generated setup token is: f4911ef531ef71a4

With the token you created, go to http://$server_ip/icingaweb2/setup and paste the token into the text field.

Then select at least the Monitoring module:

You should not see any red components:

Select Database as authentication method:

In this screen, enter icingaweb2 as the database name, root as username and the root password you set in the previous blog entry.

Set icingaweb2 as authentication backend:

Setup a new user. I use icingaadmin for the example:

Save your user preferences in the database and log to syslog:

Check if the configurations is right:

Now configure the monitoring module:

Select IDO as backend type

As IDO Resource enter localhost as hostname icinga as database name, icinga as username and the according password in the MySQL database.

To send commands to the Icinga 2 process like re-scheduling, etc. point the command file to /var/run/icinga2/cmd/icinga2.cmd.

To protect passwords from the web interface, leave the defaults in this screen:

Have a last look at the settings:

And that's it, enjoy Icinga Web 2!