Ingeniero • Analista • Programador • Informático

Ahorra dinero con tu Raspberry Pi: Servidor Web

Comienzo esta serie de entradas tituladas "Ahorra dinero con tu Raspberry Pi" cuyo fin es el de poder explicar, a través de diversos capítulos, como configurar en tu Raspberry todos esos servicios que posiblemente tengas contratados con proveedores externos (servidor web, email, nube para alojamiento de archivos, etc...) ahorrándote una buena cantidad de dinero al año. Debido a su bajo consumo energético y nulo ruido, es una alternativa muy interesante para convertirla en un servidor casero.

En este primer capítulo vamos a explicar como alojar tus páginas web en tu Raspberry y que se pueda acceder a ellas a través de internet.

Para el seguimiento de estos capítulos se presupone que sabemos acceder al shell de Raspbian, ya sea de forma directa a través de teclado y monitor conectado a la Pi, o bien remotamente por ssh. En este caso si usas linux como sistema operativo bastará con abrir una ventana de consola y escribir ssh pi@192.168.1.2 (donde 192.168.1.2 es la ip de la Raspberry en tu red local). En el caso de que uses Windows recomiendo el uso de putty. Ejecuta el exe e indica en el host la ip destino. Una vez se haya establecido la conexión te solicitará el usuario y contraseña.

Instalar Apache

Apache es un servidor web gratuito de código abierto, para instalarlo bastará con ejecutar lo siguiente:

sudo apt-get install apache2

Una vez termine el proceso ya tendrás tu servidor activo y disponible ¡así de fácil! Para comprobarlo escribe desde el navegador de tu ordenador la url http://192.168.1.2 y pulsa intro. Aparecerá una página parecida a esta:

Aunque es configurable, por defecto las páginas web se almacenan en la ruta /var/www/html, así que en principio, copiando los archivos de nuestra página a dicha ruta es suficiente. Lo que si recomiendo es crear subcarpetas específicas para cada web dentro de /var/www/html, de esta forma podremos configurar el servidor con diferentes dominios simultáneamente.

Si creamos la carpeta "miweb" dentro de /var/www/html y copiamos nuestra página ahí podremos acceder a ella a través de la siguiente url: http://192.168.1.2/miweb

Para que nuestro servidor sea un poco más seguro, es recomendable ejecutar los siguientes comandos desde la ruta donde está alojada nuestra web:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Esto es, permisos 755 a los directorios y 644 a los archivos. 755 significa ejecutar, leer y escribir para el propietario y leer y ejecutar para el resto. 644 significa leer y escribir para el propietario y sólo leer para el resto.

Si queremos que una carpeta determinada tenga permisos de escritura para poder crear archivos dentro (por ejemplo wp-content de wordpress), tecleamos:

sudo chown -R www-data:www-data /ruta/a/la/carpeta

www-data es el usuario y grupo por defecto que utiliza Apache para su ejecución.

Apache sólo "entiende" páginas html, esto es, páginas sin lógica ninguna. Para poder instalar herramientas como wordpress, joomla, drupal o similares necesitamos activar el motor PHP.

Instalar PHP

Tan complicado como escribir:

sudo apt-get install php5

Posteriormente reiniciaremos el servidor apache para que cargue los módulos necesarios:

sudo /etc/init.d/apache2 restart

Con esto ya tenemos PHP instalado y listo para funcionar junto con Apache.

Instalar MySQL

Normalmente las herramientas web necesitan de una base de datos para funcionar, así que instalaremos MySQL, el motor de bases de datos más popular de uso libre.

sudo apt-get install mysql-server

Durante la instalación se nos solicitará la clave del usuario root (administrador). Elegid una contraseña segura y recordadla pues será necesaria más adelante.

Por motivos de seguridad el usuario root sólo puede conectarse al servidor de base de datos desde la propia máquina (localhost), pero con el fin de poder acceder fácilmente y operar creando nuevas bases de datos o gestionar información, configuraremos el usuario root para que pueda logarse desde cualquier máquina dentro de nuestra red.

Para ello accederemos a MySQL:

mysql -u root -pclave

Donde clave es la contraseña elegida para root durante la instalación. Que no haya espacio entre la p y la clave es intencionado, ya que sino mysql entiende el espacio como parte de la clave. Una vez dentro escribiremos:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Cambiar password por la clave de root.

Posteriormente saldremos de mysql tecleando:

exit

Una vez hecho esto, desde nuestro equipo de sobremesa podemos instalar MySQL Workbench que es una herramienta para gestionar instancias de MySQL. Está disponible en los repositorios de ubuntu y para windows en la siguiente dirección:

https://dev.mysql.com/downloads/workbench/

Una vez instalado lo ejecutamos y creamos una nueva conexión:

Una vez conectados podemos crear una nueva base de datos escribiendo:

create database prueba;

Cómo gestionar MySQL esta fuera del alcance de este artículo, pero con los conceptos anteriormente explicados es suficiente para crear nuevas bases de datos dentro de nuestra instancia e iniciar los instaladores de las herramientas que queramos incorporar en nuestro servidor web, los cuales solicitarán un usuario y contraseña para el acceso a la base de datos y poder crear las tablas y registros pertinentes. Por simplicidad proporcionaremos los mismos datos que utilizamos para la conexión desde nuestro workbench, aunque lo ideal sería crear usuarios independientes para cada base de datos por motivos de seguridad.

Abrir nuestra web al mundo

Todo eso esta muy bien, pero por ahora nuestro servidor solo es accesible desde nuestra red local, no desde internet. Para ello deberemos decirle a nuestro router que todo el tráfico proveniente del puerto 80 (el puerto por defecto del protocolo http) lo redirija a nuestra raspberry. Cada router es diferente y la configuración puede variar de uno a otro, pero lo importante es buscar la opción Port Forwarding o similar.

Le diremos que el puerto 80 TCP lo redirija a 192.168.1.2 (o la ip de tu raspberry)

Una vez hecho esto, con nuestra ip pública, que podemos conocer a través de What Is My Ip accederemos a nuestro servidor web desde internet, por ejemplo http://91.126.92.191/miweb. Esta url es pública y la podremos pasar a nuestros contactos.

Si, la verdad es que es bastante fea la dirección, lo suyo sería poder acceder igual que accedemos a www.google.es o www.facebook.com, es decir, con un nombre de dominio, pero para ello deberás esperar al siguiente capítulo 😉

No hay comentarios

Agregar comentario