Luego de haber configurado dos hosts virtuales en el post anterior, en esta ocasión instalaremos el monitor de Hiawatha. Podemos hacerlo en el mismo servidor en donde residen los hosts virtuales o en uno separado. En esta oportunidad utilizaremos la primer alternativa, y resetearemos la variable Port a su valor por defecto (80).
Monitor de Hiawatha
Para empezar, descarguemos el monitor y descomprimamos el tarball dentro de /var/www/monitor.ejemplo.com.ar:
wget https://www.hiawatha-webserver.org/files/monitor-1.5.tar.gz tar xzf monitor-1.5.tar.gz --strip 1 -C /var/www/monitor.ejemplo.com.ar
El próximo paso consiste en instalar los siguientes paquetes adicionales. Tengamos en cuenta que el monitor de Hiawatha consiste en una aplicación que utiliza PHP y MySQL o MariaDB:
aptitude install php php-mysql php-xml php-xsl php-cgi php-fpm mariadb-server
Recordemos que es importante ejecutar mysql_secure_installation luego de haber instalado el servidor de bases de datos.
A continuación, crearemos un host virtual adicional llamado monitor.ejemplo.com.ar con la siguiente configuración (en /etc/hiawatha/hiawatha.conf). Esta será la URL a la que tendremos que navegar luego para acceder a la interfaz web del monitor. También indicaremos la dirección IP del monitor mediante la variable MonitorServer:
VirtualHost { Hostname = monitor.ejemplo.com.ar WebsiteRoot = /var/www/monitor.ejemplo.com.ar/public StartFile = index.php AccessLogfile = /var/www/monitor.ejemplo.com.ar/access.log ErrorLogfile = /var/www/monitor.ejemplo.com.ar/error.log UseFastCGI = PHP7 ExecuteCGI = yes TimeForCGI = 15 UseToolkit = monitor } UrlToolkit { ToolkitID = monitor RequestURI isfile Return Match ^/(css|files|fonts|images|js)(/|$) Return Match ^/(favicon.ico|robots.txt)$ Return Match [^?]*(\?.*)? Rewrite /index.php$1 } MonitorServer = 192.168.0.35
En el mismo archivo, descomentemos la siguiente sección:
FastCGIserver { FastCGIid = PHP7 ConnectTo = /run/php/php7.0-fpm.sock Extension = php }
y la línea
CGIhandler = /usr/bin/php-cgi:php
e iniciemos el servicio php7.0-fpm:
systemctl start php7.0-fpm systemctl enable php7.0-fpm
Configuración de PHP
En /etc/php/7.0/fpm/php.ini, localicemos la siguiente línea. Luego de descomentarla, cambiaremos el valor 1 (por defecto) por 0:
cgi.fix_pathinfo=0
De la misma forma, en /etc/php/7.0/fpm/pool.d/www.conf habilitemos la siguiente línea:
listen.mode = 0660
Configuración de MySQL / MariaDB
Antes de seguir, necesitamos tener creada una base de datos y un usuario dedicado para la misma. El monitor utilizará esta información para registrar los datos que recolecte de los hosts virtuales.
En primer lugar, importemos ingresemos a la consola de MySQL / MariaDB:
mysql -u root -p
con la contraseña que hayamos elegido para root cuando ejecutamos mysql_secure_installation
. A continuación, crearemos una base de datos llamada HiawathaMonitorDB y un usuario llamado monitor con todos los permisos necesarios en la misma:
CREATE DATABASE HiawathaMonitorDB; CREATE USER 'monitor'@'localhost' IDENTIFIED BY 'TuPassAca';
En segundo lugar, salgamos de la consola de MySQL / MariaDB para importar la configuración de la base de datos:
mysql HiawathaMonitor DB -u root -p < /var/www/monitor.ejemplo.com.ar/database/mysql.sql
y luego volvamos a ingresar para dar los permisos necesarios a monitor:
mysql -u root -p GRANT ALL PRIVILEGES ON HiawathaMonitorDB.* TO 'monitor'@'localhost';
Finalmente, editemos el archivo /var/www/monitor.ejemplo.com.ar/settings/website.conf. En la sección Database settings ingresemos los datos de conexión a la base de datos:
DB_HOSTNAME = localhost DB_DATABASE = HiawathaMonitorDB DB_USERNAME = monitor DB_PASSWORD = TuPassAca
Por seguridad, hagamos que el propietario del archivo sea www-data y que solamente el mismo pueda leerlo:
chown www-data:www-data /var/www/monitor.ejemplo.com.ar/settings/website.conf chmod 600 /var/www/monitor.ejemplo.com.ar/settings/website.conf
Luego de reiniciar los servicios pertinentes
systemctl restart {hiawatha|mariadb}
podemos proseguir.
Configurar el monitor
A partir de este punto, solamente tenemos que apuntar nuestro browser a monitor.ejemplo.com.ar/setup y seguir los pasos indicados. Las credenciales de acceso por defecto son admin / monitor. A continuación, debemos dirigirnos a monitor.ejemplo.com.ar/cms y desde la sección Website administration / Webservers agregar los sitios a monitorear como vemos en la Fig. 1:
Ahora agreguemos las siguientes líneas al cron de root. Los mismos se encargarán del mantenimiento de los logs:
*/5 * * * * /var/www/monitor.ejemplo.com.ar/database/fetch_webserver_logs 0 0 * * * /var/www/monitor.ejemplo.com.ar/database/delete_old_logs 59 23 * * * /var/www/monitor.ejemplo.com.ar/database/send_reports
Luego de algunos minutos, deberíamos poder ver las estadísticas de los sitios que configuramos. En la Fig. 2 vemos la cantidad de conexiones a todos los sitios por hora:
Consideraciones finales
Por último, destaquemos los siguientes puntos sobre los que el monitor nos alertará luego de la instalación:
- Cambiar la contraseña de la cuenta de administrador (a través de la interfaz web).
- Cambiar el valor de la variable secret_website_code setting (a través de la interfaz web).
- Cambiar el valor de la variable DEBUG_MODE a no (en /var/www/monitor.ejemplo.com.ar/settings/website.conf).
El monitor de Hiawatha es una herramienta sumamente útil, en particular si alojamos varios sitios web en un mismo servidor. En el sitio web del autor y al inspeccionar la interfaz del monitor podemos encontrar más información sobre las opciones disponibles.