Cada vez aparecen más microdispositivos que ofrecen un buen rendimiento a bajo coste, uno de estos es raspberry pi (con papel estelar en la serie Mr. Robot), tiene múltiples posibilidades por ejemplo servir como VPN, servidor DHCP, DNS,… o servidor multimedia (con Torrent).
En este caso vamos a instalar un servidor LAMP de desarrollo usando la distribución Raspbian, Raspbian es muy fácil de instalar usando el sistema NOOBS tal y como se comenta en la propia página web, de hecho si solo queremos un servidor es muy recomendable instalar la versión lite que nos quitará el apartado gráfico.
Después de instalar tendremos un menú donde podremos modificar algunos valores, si queremos volver a invocarlo siempre podremos hacerlo a través de raspi-config (si hemos usado usado la versión lite tendremos que instalar este paquete vía sudo apt-get install rpi-update).
Una vez arrancado el sistema es recomendable actualizarlo, tanto el firmware del mismo a través de rpi-update (requiere reiniciar) como los paquetes a través de apt-get update && apt-get-upgrade.
Ya que vamos a instalar un servidor suele ser recomendable tener una dirección IP estática, para eso editaremos el archivo /etc/network/interfaces y en lugar de usar una dirección dinámica (DHCP) indicaremos los datos de nuestra interfaz, existe un artículo describiendo el proceso y nos quedará para la interfaz eth0 algo como:
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
Otra opción sería dejarlo en dinámico (con DHCP) y establecer en los servidores DHCP y DNS el nombre de manera estática, esto simplifica la gestión de red de las raspberry pero obliga a tener un servidor DHCP y DNS instalado.
Tras esto hay que tirar y levantar la interfaz vía ifdown eth0 && service networking restart && ifup eth0, tambien es recomendable hacerlo por consola por si la interfaz no se levanta, si sale un error como ifdown: interface eth0 not configured, una opción es lanzar este comando y reiniciar la raspberry.
sudo ip addr flush dev eth0
Opcionalmente podemos querer cambiar el nombre de la raspberry esto lo haremos modificando el fichero /etc/hostname, si se cambia el nombre por defecto para el correcto descubrimiento de la propia raspberry hay que modificar también el fichero /etc/hosts.
Tras esto instalamos el entorno con: apt-get install apache2 php5 mysql-server en el caso de mysqlserver nos solicitará una contraseña de root para poder acceder al servidor, no es obligatorio pero si muy recomendable.
Suele ser útil crear un host virtual en apache en el cual indicaremos que las páginas PHP que ejecuta están almacenados en una unidad de red externa, de esta forma podremos editarlos desde otra máquina a la vez que se pueden acceder desde Apache, para esto podremos usar el host virtual por defecto que viene en la instalación, es más útil trabajar con virtuales porque así podemos aislar proyectos entre sí con sus propios nombres.
Solo hay que tener en cuenta que dentro del host virtual hay que añadir ServerName servidor donde servidor será el nombre que le hayamos dado al servidor virtual, aquí hay un trabajo con el DNS ya que por un lado en el propio archivo hosts del servidor tenemos que darlo de alta y de cara al exterior también tendremos que darlo de alta en el archivo hosts de cada máquina que quiera acceder a no ser que dispongamos de un servidor DNS a tal efecto.
Para mapear las carpetas de apache a una unidad de red solo tenemos que montar la unidad (mount -a) de red externa añadiéndolo a /etc/fstab tal que (en una línea):
//unidad/carpeta/cliente/proyecto /var/www/proyecto/ cifsuid=1000,gid=1000,username=user,password=pass,iocharset=utf8,auto 0 0
donde username y password son credenciales válidas de red, también se puede especificar un fichero externo de credenciales, para más información consultar man.
Una vez hecho esto ya podemos desarrollar, también podemos clonar un repositorio Git en la carpeta, por ejemplo Bitbucket que permite repositorios privados y también es compatible con Azure, aunque GitHub también es otra posibilidad.


