Para la implantación de este sistema empezaremos por la parte del sistema operativo. Debido a la facilidad y el fácil manejo hemos seleccionado Ubuntu Server. Este sistema operativo basado en GNU Linux tiene un magnífico rendimiento si lo usamos de manera dedicada. Además de disponer de versiones de escritorio, la versión de servidor es muy ligera y muy rápida. Para las pruebas suelo virtualizar dicho sistema operativo usando Virtual Box y una vez que lo tengo listo ya puedo montarlo sobre una máquina física.
Por lo tanto recomiendo instalar Virtual Box, montar una máquina con al menos 8gb de disco y un 1Gb de memoria e instalar Ubuntu Server 12.04 que podéis descargar desde aquí (os podéis descargar la imagen de disco y conectarla a la máquina virtual que os estáis creando para arrancar desde dicha imagen o grabad el disco para instalarlo en un ordenador físico).
durante la instalación del sistema operativo y en el momento en que nos soliciten los complementos a instalar no seleccionaremos ninguno. También es recomendable deshabilitar las actualizaciones automáticas. De esta manera dispondremos de una instalación limpia y ligera.
Una vez instalado el sistema operativo, entramos y ejecutamos los siguientes comandos:
$ sudo apt-get update
$ sudo apt-get upgrade
Con esto tendremos actualizado el sistema operativo. Si estás virtualizando la instalación quizá sería buena idea realizar un snapshot o instantánea nada más acabar de actualizar el sistema operativo para volver atrás si algo saliese mal.
Instalación del servidor web
El servidor web es el sistema que se encarga de atender las peticiones http para servir las páginas web. Debido a que el sistema de monitorización que estamos montando está basado en peticiones http, este sistema es crucial. Tradicionalmente el servidor web más utilizado es Apache pero está pensado cómo un servidor de uso general fácilmente extensible, pero esa ventaja puede convertirse en un inconveniente cuando lo queremos utilizar para un sistema dedicado.
Existe un servidor web llamado Nginx cuya principal característica es el gran rendimiento que ofrece y debido a que nosotros vamos a montar un sistema dedicado a la monitorización esta es una elección muy apropiada.
Para instalarlo simplemente tenemos que ejecutar el siguiente comando:
$ sudo apt-get install nginx
$ service nginx start
una vez instalado es importante saber que el directorio desde donde sirve las páginas web se encuentra en /usr/share/nginx/www. Para comprobar que el servidor web se ha instalado correctamente podemos probar a navegar con el navegador a la dirección del servidor (si no conoces la IP prueba con el comando ifconfig).
Debería salir algo como esto:
Intérprete del lenguaje PHP
El leguaje de programación PHP es un lenguaje utilizado comúnmente para la programación de sitios web. Se puede utilizar como propósito general pero si queremos que sirva para nuestro servidor web debemos instalarlo e integrarlo. Tradicionalmente existen módulos para dotar al Apache de este lenguaje de programación pero para Nginx debemos incorporarlo de otra manera. Existen dos alternativas principalmente: usar FastCGI o usar PHP-fpm. Este último es una alternativa a FastCGI con importantes mejoras por lo que será nuestra opción.
$ sudo apt-get install php5-fpm
El fichero de configuración de php estará en esta ocasión en /etc/php5/fpm/php.ini. Tambien daremos soporte a base de datos tipo Mysql al PHP instalando los siguientes paquetes.
$ sudo apt-get install php5-mysql php-gettext
Ahora iremos al directorio de configuración del Nginx que se encuentra en /etc/nginx/sites-available y editamos el fichero default para habilitar el soporte de PHP para Nginx y modificamos las siguientes líneas para que aparezcan de esta manera:
index index.php index.html index.htm;
location / {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
expires 30d;
root /usr/share/nginx/emoncms;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
y reiniciamos Nginx y PHP
sudo service nginx restart
sudo service php5-fpm restart
Para probar que está correctamente instalado podemos crear un fichero en el directorio web del Nginx ( /usr/share/nginx/www) con el siguiente contenido:
<?php echo phpinfo(); ?>
y veremos desde el navegador cómo Nginx ahora soporta el PHP
Instalando el sistema gestor de base de datos MariaDB
A partir de la compra de Mysql por parte de Oracle y al no saber cuales son las intenciones de esta compañía para Mysql se ha creado un nueva rama de desarrollo denominada MariaDB. Esta nueva rama apoyada por los desarrolladores originales dispone de un gran rendimiento y es mucho más rápida que Mysql. Debido a que el sistema de monitorización utiliza de manera masiva la base de datos para almacenar y recuperar la información que tenemos en nuestros dispositivos, es importante contar con una que dé el mejor rendimiento. Usaremos MariaDB.
Para instalarla realizaremos los siguientes pasos:
Seguiremos los pasos que nos indican en la web oficial para instalarla desde el repositorio eligiendo las caracteristicas de la plataforma en la que estemos desplegando el sistema. En nuestro caso Ubuntu+12.04+5.5.
sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mariadb.mirror.nucleus.be//repo/5.5/ubuntu precise main'
sudo apt-get update
sudo apt-get install mariadb-server
durante la instalación de MariaDB nos preguntará la clave del usuario principal para la base de datos. Debemos recordarla para luego poder configurar el acceso a la base de datos usando ese usuario.
Ahora procederemos a crear la base de datos para nuestro sistema de monitorización. La base de datos la llamaremos emoncmsdb.
sudo mysql -u root -p
el usuario por defecto es root cuando pregunte la contraseña indicaremos la que pusimos cuando instalamos MariaDB.
MariaDB [(none)]> CREATE DATABASE emoncmsdb;
MariaDB [(none)]> exit
Instalando el software de monitorización EmonCMS
El software de monitorización que vamos a utilizar es un software libre y de fuentes abiertas desarrollado por una comunidad de usuarios y amparado por el grupo OpenEnergyMonitor. Con ya algunos años de vida, este software sorprende por su sencillez permitiendo de manera sencilla almacenar información de nuestros dispositivos así como la creación de pantallas de diseño para mostrar los datos. Está desarrollado en PHP y Javascript y lo instalaremos del repositorio oficial ubicado en GitHub permitiendo de esta manera actualizarlo de manera sencilla.
El repositorio donde está alojado está basado en Git por lo que primeramente nos instalaremos las herramientas necesarias para tratar con este repositorio.
sudo apt-get install git-core
una vez instaladas las herramientas para Git vamos a instalar EmonCMS en el directorio web. Para ello vamos a /usr/share/nginx/www y hacemos:
sudo git clone https://github.com/emoncms/emoncms.git
y al finalizar tendremos el directorio /usr/share/nginx/www/emoncms con los fuentes en PHP de EmonCMS. Si deseamos actualizar el software en cualquier momento, con ejecutar el comando
sudo git pull
desde el directorio /usr/share/nginx/emoncms, descargaremos la última versión del sistema de monitorización.
Otro cambio que podemos hacer es que la dirección web del sistema será algo como http://<dirección_IP_servidor>/emoncms pero podemos cambiarla para que la acepte como la principal si modificamos el fichero de configuración de Nginx:
sustituimos en el fichero /etc/nginx/sites-available/default
root /usr/share/nginx/www
por
root /usr/share/nginx/www/emoncms
y reiniciamos Nginx
sudo service nginx restart
ahora la dirección web de nuestro sistema de monitorización será la dirección por defecto. Si vamos a dicha dirección (en mi caso la 192.168.1.186):
veremos cómo nos responde la aplicación de monitorización. El mensaje indica que necesitamos realizar una configuración inicial. Para ello seguimos las indicaciones de copiar el fichero default.settings.php a settings.php
sudo cp default.settings.php settings.php
y lo editamos para establecer los parámetros de configuración y conexión con la base de datos
$username = "root";
$password = "PASSWORD"; (la clave que pusimos en la instalación)
$server = "localhost";
$database = emoncmsdb;
la conexión que estamos realizando la indicamos usando el usuario principal de MariaDB. Existe la posibilidad de crear un usuario específico para esta base de datos. Para ello puedes dirigirte a la documentación de MariaDB o de Mysql ya que esta última es totalmente compatible. Los pasos serían crear un usuario específico, crear la base de datos y luego asignar los permisos pertinentes a ese usuario a dicha base de datos.
Refrescando el navegador veremos como ya aparece nuestro sistema de monitorización recién instalado.
Nuestro siguiente paso será crear un usuario dentro de nuestro software de monitorización. Para ello pulsaremos sobre "register" y daremos de alta un usuario. El primer usuario que se cree será el administrador de la plataforma. En el siguiente post explicaré como utilizar esta plataforma de monitorización aunque debido a su sencillez puedes empezar a probarla por ti mismo.