Servidor Web en Raspberry PI y Ubuntu Mate

Un servidor web Apache 2 corriendo sobre Linux no requiere muchos recursos de hardware. Así que si queremos disponer de un servidor casero dónde poder trastear y realizar pruebas o desarrollar ese pequeño proyecto que siempre nos ronda en la cabeza, una Raspberry Pi es una buena opción.

Servidor web

Esta entrada forma parte de la serie Raspberry Pi como herramienta de apoyo al desarrollo web, y está pensada para un servidor de uso personal. De cualquier manera, el contenido de esta guía es perfectamente aplicable a cualquier distribución de Linux basada en Ubuntu y a Raspbian.

Esta documento también puede utilizarse para la configuración de un servidor de una pequeña organización, en cuyo caso sería necesario tener en cuenta algunas consideraciones:

  1. Una Rasperri Pi no es el hardware más adecuado. Debería instalarse sobre un hardware fiable y acordemente dimensionado a las necesidades del uso que se le dará.
  2. Además del contenido de este artículo, deberían realizarse una serie de configuraciones extra enfocadas en la seguridad que no entran en el ámbito ni el alcance de este documento.
  3. Este artículo esta pensado para la instalación y configuración de un servidor web en una red local, en caso de que el servidor sea accesible directamente desde internet, el punto anterior cobra mayor importancia, además de requerir algunos ajustes más.

Una vez que todos tenemos claro el ámbito y el alcance, vamos al lío.

Instalamos Apache 2

Este paso será muy sencillo, actualizamos los repositorios e instalamos Apache 2:

sudo apt-get update
sudo apt-get install apache2

Si todo ha ido bien ya podremos acceder al al servidor web desde cualquier pc conectado a la red local con tan solo introducir la ip en el navegador.

Para el resto de la entrada asumiremos que nuestra Raspberry está configurada con la IP estática 192.168.1.10.

Así que si introducimos en el navegador la dirección http://192.168.1.10  veremos la página por defecto de Apache 2:

Apache 2 página por defecto

Un aspecto muy importante en la configuración de Apache es asignar los permisos adecuados a la carpeta del servidor. Podemos pasar sin hacerlo pero más pronto que tarde nos encontraremos con problemas relacionados con permisos.

Comenzaremos asegurándonos de que /var/www/html pertenezca al grupo www-data y que tiene los permisos adecuados:

sudo chgrp www-data /var/www/html
sudo chmod 775 /var/www/html
sudo chmod g+s /var/www/html

Agregamos nuestro usuario al grupo www-data:

sudo usermod -a -G www-data usuario

Y por último nos aseguramos de ser los propietarios del directorio

sudo chown usuario /var/www/html

Con esto hemos concluido la instalación de Apache.

Instalamos PHP

Instalamos PHP:

sudo apt-get install php7.0

Es posible que en función de la distribución que utilicemos en lugar del paquete php7.0 encontremos otra versión. Podemos comprobarlo fácilmente con la siguiente orden:

sudo apt-cache search php

Y si por cualquier motivo necesitamos una versión específica de php, deberemos incluir el repositorio ondrej/php como hacemos a continuación:

sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update

En este caso he incluido la opción -y porque al intentar agregar el repositorio me mostraba un warning relacionado con la codificación de caracteres de los repositorios.

Acto seguido instalar la versión de php que necesitemos, en mi caso voy a instalar la versión 7.3:

sudo apt-get install php7.3

Tras reiniciar Apache ya habremos acabado:

sudo service apache2 restart

Para comprobar que php está correctamente instalado crearemos el archivo  /var/www/html/phpinfo.php con el siguiente contenido:

<?php php phpinfo(); ?>

Si todo es correcto al acceder a http://192.168.1.10/phpinfo.php veremos algo así:

phpinfo php 7.3

Instalamos y configuramos MariaDB

Una vez que php está instalado, continuamos con la base de datos:

sudo apt-get install mariadb-server

Durante el proceso de instalación deberemos responder responder a algunas preguntas que sin complicación alguna.

El primer paso tras la instalación será configurar MariaDB para que podamos acceder remotamente, pues por defecto solo acepta conexiones desde el propio host:

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

Esfe archivo puede cambiar en función de tu distribución y de la versión de MariaDB. En ocasiones puedes encontrarlo en /etc/mysql/my.cnf, en /etc/mysql/mysql.conf.d/mysqld.cnf, etc.

Localizamos la siguiente línea:

bind-address  = 127.0.0.1

La sustituimos por:

bind-address  = 0.0.0.0

Y reiniciamos la base de datos:

sudo service mysql restart

Con esto hemos habilitado el acceso remoto a MariaDB. Ahora crearemos un nuevo usuario para evitar trabajar con root. Para ello accedemos a la consola de MariaDB:

sudo mysql -u root -p

Una vez en la consola de MariaDB creamos nuestro usuario:

CREATE USER 'usuario' IDENTIFIED BY 'contraseña';

Y concedemos acceso remoto y a todas las bases de datos al usuario que acabamos de crear:

GRANT USAGE ON *.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña';

En este punto es buena idea comprobar que todo ha salido bien. Podemos hacerlo abriendo una conexión al servidor de bases desde nuestro equipo de trabajo con alguna herramienta como MySQL Workbench.

Instalamos phpMyAdmin

Esta es una herramienta que siempre me gusta instalar a pesar de que en la mayoría de situaciones trabajo con MySql Workbenck. Para instalar basta con:

sudo apt-get install phpmyadmin

Y una vez instalado podremos acceder a ella mediante http://192.168.1.10/phpmyadmin.

Conclusión

Ya tenemos un servidor web completamente funcional corriendo sobre nuestra Rasperri PI, sencillo, económico y funcional. Ahora solo hay que usarlo.

¿Y tú?, ¿Crees que necesitamos aplicar alguna otra configuración? ¿Haces algo distinto? ¿Echas en falta algún paso? o simplemente ¿te ha servido de ayuda? Comparte tu experiencia y aprendamos todos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *