Tutoriales

Servidor web con Raspberry Pi

Hoy explicaremos como montar un servidor web casero con soporte para PHP, MySQL y FTP en una Raspberry Pi.

¿Qué es Raspberry Pi?

Raspberry Pi es un diminuto ordenador de bajo coste que cabe en la palma de tu mano. La finalidad de su creación es fundamentalmente formativa, ya que nos permite aprender a manejar un sistema UNIX sin muchas complicaciones.

Se trata de una pequeña placa sin grandes alardes de hardware pero que condensa todo lo necesario para ser considerada un PC en miniatura. Fue lanzada en el año 2012 y desde entonces ha tenido algunas revisiones en las que se ha ido mejorando.

Raspberry Pi dispone de tres modelos (A, B y B+) cuyas principales características son:

  • Modelo A (2013): Procesador ARM de 700Mhz, 256 MB de SDRAM, 1 puerto USB, sin conectividad de red, consumo de 500mA (2.5W), almacenamiento externo SD.
  • Modelo B (2012): Procesador ARM de 700Mhz, 512 MB de SDRAM, 2 puertos USB, conectividad de red Ethernet, consumo de 700mA (3.5W), almacenamiento externo SD.
  • Modelo B+ (2014): Procesador ARM de 700Mhz, 512 MB de SDRAM, 4 puertos USB, conectividad de red Ethernet, consumo de 600mA (3.0W), almacenamiento externo microSD.

Para desarrollar este tutorial hemos utilizado el modelo B.

Requisitos

  • Raspberry Pi (B o B+)
  • Fuente de alimentación microUSB (5V, >700mA)
  • Tarjeta SD 4GB (Modelo B) o microSD (Modelo B+)
  • Cable de red Ethernet
  • PuTTY (si usas Windows, software)
  • Raspbian (sistema operativo, software)
  • Win32DiskImager (si usas Windows, software)

Instalar Raspbian

Lo primero es grabar la imagen de Raspbian en la tarjeta SD que usaremos como almacenamiento para nuestra Raspberry Pi. Tras descargarla de la web que aparece en los requisitos de este tutorial y descomprimirla, veremos un archivo de nombre xxxx-xx-xx-wheezy-raspbian.img. Este fichero contiene todo lo necesario para hacer funcionar la distribución linux y tendremos que volcarlo a la SD usando Win32DiskImager:

rasp_webserver_3.jpg

Insertamos la tarjeta SD en nuestro ordenador y a continuación abrimos el Win32DiskImager. Ahora buscamos la imagen en nuestro disco duro y seleccionamos la unidad de escritura correspondiente a la tarjeta que acabamos de insertar (en nuestro caso [F:]). Iniciamos la escritura pulsando sobre Write y esperamos a que acabe el proceso.

rasp_webserver_4.jpg

Una vez finalizado el volcado, montamos todo el cacharreo:

  • Insertamos la SD en la Raspberry.
  • Conectamos la Raspberry al router con el cable de red.
  • Conectamos la Raspberry a la corriente.

Conexión SSH

Si queremos empezar a gestionar el sistema, tenemos que acceder a él utilizando una conexión SSH. Para hacer esto, es necesario conocer la IP que el router ha asignado a la Raspberry Pi. Como no le hemos conectado ningún teclado ni pantalla, solamente podemos conocerla a través del panel de control del propio router (en la tabla DHCP).

Abrimos PuTTY y ponemos la IP asociada a la Raspberry:

rasp_webserver_6.jpg

Pulsamos sobre Open y se nos pedirá un usuario y una contraseña. Raspbian tiene los siguientes datos de acceso por defecto:

  • Usuario: pi
  • Contraseña: raspberry

Nota: Si nos rechaza la conexión por SSH (connection refused) seguramente sea debido a que el acceso por este medio se encuentra desactivado. Para activarlo, tendremos que conectar (irremediablemente) un teclado USB y un monitor en la salida HDMI de la placa. Una vez hecho esto, en la pantalla veremos un panel de configuración bastante sencillo:

rasp_webserver_5.jpg

Seleccionamos Advanced Options y ahí estará el SSH para que lo activemos. Cuando lo hagamos le damos a Finish y ya podremos desconectar nuestra Raspberry Pi del teclado y del monitor.

Instalar Apache

Ahora que estamos autentificados viene la parte divertida: instalar todos los componentes que pondrán en marcha nuestro servidor casero.

El primero será Apache (con su soporte para PHP y librerías), el servidor web. Para instalarlo escribimos el siguiente comando en la consola:

sudo apt-get install apache2 php5 libapache2-mod-php5 -y

Instalar MySQL

¿Qué sería de un servidor web sin soporte para bases de datos? Instalaremos MySQL con el siguiente comando:

sudo apt-get install mysql-server mysql-client php5-mysql -y

En medio del proceso, nos pedirá una contraseña para el usuario root de MySQL, podemos poner lo que queramos o dejarla en blanco.

Instalar phpMyAdmin

Vamos a necesitar un gestor de bases de datos que sea amigable. Una buena opción es phpMyAdmin, para instalarlo escribiremos lo siguiente en la consola:

sudo apt-get install phpmyadmin -y

rasp_webserver_7.jpg

Nos preguntará qué servidor queremos reconfigurar para usarlo con phpMyAdmin. Como hemos instalado Apache, seleccionamos la primera opción.

Posteriormente nos preguntará también si deseamos autoconfigurar la base de datos. Le decimos que sí y cuando nos pida un password introduciremos el que habíamos escogido en la instalación de MySQL.

Una vez finalizada la instalación de phpMyAdmin, tenemos que configurar Apache para que nos permita acceder al gestor de bases de datos. Para ello editaremos el siguiente archivo:

sudo nano /etc/apache2/apache2.conf

Añadiendo la línea de abajo al final del fichero:

Include /etc/phpmyadmin/apache.conf

Reiniciamos Apache para que los cambios surtan efecto:

sudo service apache2 restart

¡Y ya hemos acabado con phpMyAdmin!

Instalar servidor FTP

Para poder transferir y recibir los ficheros desde nuestro nuevo servidor web vamos a necesitar un FTP. El habitual en estos casos suele ser vsftpd. Lo instalamos con el siguiente comando:

sudo apt-get install vsftpd -y

Debemos configurar el FTP para que no admita conexiones anónimas y deje que los usuarios locales inicien sesión. Para lograr este propósito debemos modificar el fichero:

sudo nano /etc/vsftpd.conf

Cambiando:

anonymous_enable=YES

por:

anonymous_enable=NO

Descomentando (quitar la almohadilla "#"):

local_enable=YES
write_enable=YES

Y añadiendo al final del archivo:

force_dot_files=YES

Una vez hechos los cambios, para que surtan efecto, debemos resetear el servicio FTP con:

sudo service vsftpd restart

Para acabar con la configuración referente al FTP, sólo nos falta enlazar el usuario por defecto ("pi") a la carpeta "www" (que es donde se alojarán todos los ficheros de nuestra web):

ln -s /var/www/ ~/www

Esto hará que en nuestro /home/pi aparezca la carpeta /var/www (lo que viene a ser un enlace directo a la misma).

Y por último darle permisos al usuario "pi" para que pueda modificar el contenido de la carpeta /var/www enlazada:

sudo chown -R pi /var/www

Fijando la dirección IP

En este momento la dirección IP que tiene la Raspberry (en nuestra red interna), es dinámica. Lo cual significa que la IP puede cambiar en cualquier momento que apaguemos y encendamos el router. Es bastante cómodo y recomendado, darle una IP fija para no tener que comprobar cuál es la IP que asigna el router en cada conexión.

Modificamos el siguiente fichero:

sudo nano /etc/network/interfaces

Buscamos la línea que pone:

iface eth0 inet dhcp

Y la reemplazamos por:

iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask XXX.XXX.XXX.XXX
gateway XXX.XXX.XXX.XXX

Nota: Donde aparecen las "X" debes escribir la IP que quieres asignar, la máscara de subred y la puerta de enlace (IP del router). Para ver la IP que va en netmask puedes usar el comando:

ifconfig eth0

Para ver la IP que va en gateway usa:

ip route show

¡Hemos acabado! ¡Reinicia tu Raspberry Pi y podrás acceder a todos los servicios usando la IP estática que has configurado!

sudo reboot

Si tienes alguna duda... ¡Usa los comentarios!

Comentarios

Hola, soy el webmaster de TIC Las Palmas. ¿Quieres contactar conmigo? ¡Te ayudaré en lo que pueda!

Publicidad las 24 horas:
Si buscas promoción, una web es vital para obtener una mayor visibilidad.

Amplio alcance:
No existen barreras, accede al mercado internacional.

Fidelización:
Sus visitantes obtendrán feedback directo de usted o de su empresa.

Clientes potenciales:
Atraiga clientes que de otra manera no hubiesen encontrado sus servicios.

Valor añadido:
Agregue servicios adicionales a su negocio.

Ahorro:
Acabe con los gastos de promoción externa.

Formulario de consulta