Instalación Servidor Web de bajo coste Raspberry Pi B Web server

raspberry_logo

 

Hoy vamos a instalar un servidor web con todas las utilidades necesarias para administrarlo y empezar a trabajar con un coste aproximado de 60€, bajo consumo energético y larga durabilidad, sin problemas de calor y de pequeño tamaño. Perfecto para paginas web estáticas que no precisen de mucha carga de procesador.

Tendrá todo lo necesario, apache,mysql,ftp,acceso ssh, acceso por escritorio remoto(rdp), administración de mysql por web (phpmyadmin), administración del servidor  por web(webadmin), e incluso estadísticas. (webanalizer).

Dejaremos todo montado de tal forma, que tenga su reinicio automático diario, copia de seguridad (De la pagina web), que nos mande un correo electrónico si tiene problemas para hacer la copia de seguridad etc…

Requisitos Hardware y Precios.

Por supuesto una Raspberry Pi (model B) : 36€

image image_7

 

Una caja Raspberry Pi (En mi caso transparente, pero las tienes de todos los gustos): 7,43€

image_1

Un Cable de Corriente Con MicroUsb: 7,44€

image_2

 

Una tarjeta SD (HC SC  clase 10) de 16 gb: 9,92€

 

image_3

 

Cable de red Ethernet Rj-45 de 0,50m (yo lo voy a instalar Justo encima de mi router) : 1€

Cable ethernet

 

Total: 61,79€

También puedes comprar un pack en una de las muchas paginas como esta

Necesitaremos algún hardware extra para la primera configuración que seguro que tenemos por casa, o podemos quitárselo un momento a nuestro PC.

-Teclado y ratón usb

-Monitor o televisión con HDMI (o conversor HDMI to DVI).

-Algún equipo con Lector de tarjetas SD

Obviamente para todo el proceso necesitaremos conexión a Internet a través de un cable de red ethernet.

Software necesario

Vamos a usar un sistema operativo basado en debian y preparado específicamente para usarlo con nuestras raspberrys llamado Raspbian.

Para instalarlo vamos a usar un paquete llamado NOOBS (New Out Of the Box) que podemos descargar desde la pagina oficial de Raspberry en este enlace

http://downloads.raspberrypi.org/NOOBS_latest

Lo descomprimimos y pasamos a la tarjeta SD desde cualquier ordenador que tengamos con lector de tarjetas SD,

Con esto tenemos preparada la instalación del SO, todo el software extra lo descargaremos desde la propia raspberry después.

Montando a berry

Vamos a empezar a montar la placa, debemos introducir la placa en la caja fijándonos que los conectores queden en el lado donde tienen sus respectivos agujeros…un juego de niños.

Una vez cerrada la caja, ponemos la tarjeta SD con los pines hacia arriba, enchufamos el cable HDMI y ratón/teclado usb (que mas adelante no necesitaremos ya que accederemos siempre por remoto,usando ssh o navegador web).

Ya tenemos preparada la placa completamente.

Recordemos que la raspberry no tiene botón de apagado ni encendido, según empieza a recibir corriente arrancara de la tarjeta SD.

Como tenemos todo preparado vamos a enchufar ya el cable de corriente.

Una vez encendida nos mostrara el siguiente menú.

la foto 2

 

Seleccionamos Raspbian y le damos a «YES» Cuando nos avise que va a formatear la tarjeta SD.

Comenzara la descarga del sistema, esto puede tarda entre 15 minutos y media hora dependiendo de la velocidad de descarga que tengamos contratada.

Al finalizar la instalación aceptamos y se reiniciara el sistema.

Una vez iniciado, se auto-ejecuta un modulo llamado raspi-config, que nos ayudara con la configuración básica.

La instalación crea un usuario root llamado «pi» al cual vamos a cambiarle la contraseña seleccionando la opción «2-Change User Password».

ahora modificaremos el setting de zona horaria y la configuración del teclado para que funcione con el teclado español.

Para ello usaremos las opciones «4-International options», y «Change time zone», donde buscaremos «Madrid».

usando la opción 1 configuramos nuestro teclado como ES.

Luego nos vamos a opciones avanzadas y cambiamos el Hostname por uno mas acorde con el rol de nuestro servidor, (Rasp-SERV por ejemplo)

otra vez en las opciones avanzadas activamos el servicio SSH.

y por ultimo le damos a update (Para actualizar la herramienta de configuración y escribir los cambios realizados)

Confirmamos que tenemos bien configurado tanto el idioma del teclado como la zona horaria, SSH activado, (permitiendo ya la configuración desde remoto).

cuando estemos listos le damos a «Finish».

Configurando la red

Ahora vamos a ver la configuración de red que tiene actualmente con la orden ifconfig

nos devolverá la configuración de la interfaz eth0 (Que es el cable de red) buscamos donde pone inet addr: xxx.xxx.xxx.xxx  (Esta es la dirección que nos ha proporcionado el servicio DHCP de nuestro router) esta ip cambiaría cada cierto tiempo cosa que a nosotros no nos gusta, así que vamos a proporcionarle una dirección ip estática a nuestro gusto.

por ejemplo en mi caso voy a darle la ip 111 de mi red (192.168.1.111).

Durante toda la configuración usaremos el comando

sudo su

para tener los privilegios necesarios y no tener que estar escribiendo la contraseña todo el rato.

ahora debemos modificar el archivo donde guarda esta configuración linux, haciendo una copia de seguridad antes por si las moscas. Introducimos los siguiente comandos:

cp /etc/network/interfaces   /etc/network/interfaces.backup

ahora vamos a usar la herramienta nano (Editor de textos) para modificar el archivo que configura la red de nuestro servidor. Para ello introducimos la orden.

nano /etc/network/interfaces

Ahora buscamos la linea donde pone «iface eth0 inet dhcp» y lo modificamos por «iface eth0 inet static» e introducimos todos los datos de nuestra red y la dirección que queremos para nuestra raspberry  (Que mas adelante usaremos para acceder por remoto, y para configurar nuestro router para que podemos acceder a través de Internet. Debería quedar algo parecido a lo siguiente pero con nuestras direcciones.

iface eth0 inet static
address 192.168.1.111                #(Dirección que queremos que tenga nuestra raspberry dentro de nuestra red)

network 192.168.1.0                     #(primera dirección de nuestra red)
netmask 255.255.255.0                 #(Mascara de nuestra red, usualmente en nuestras casas tenemos la 255.255.255.0)

broadcast 192.168.1.255            # ( aqui ponemos la ultima dirección de nuestra red, usada para broadcast)

gateway 192.168.1.1                    #(Dirección IP de nuestro router)
dns-nameservers 62.81.16.213   # (aquí ponemos la dirección dns de nuestro ISP)

Pulsamos ctrl+o para guardar y ctrl+X para salir de nano.

ahora vamos a reiniciar el servidor y logear otra vez. Recordar meter el comando sudo su para poder ejecutar ordenes sin tener que meter la contraseña mas veces.

reboot

una vez logeados introducimos el comando

ifconfig eth0

nos devolverá la configuración actual, que debe ser con los datos que introducimos anteriormente. Si todo esta ok podemos seguir adelante.

Vamos a probar que podemos acceder al servidor de forma remota por ssh, para ello nos bajamos un cliente ssh, el mas usado y fácil de usar es el conocido PuTTy que podemos descargar de la siguiente dirección. Descarga putty

Una vez descargado lo ejecutamos, e introducimos la dirección de nuestro servidor donde pone Host name (or ip address) escribimos un nombre donde pone «saved Sessions» y le damos a save, Por ultimo pulsamos donde pone open, esto nos abrirá una consola la cual nos pedirá las credenciales de nuestra raspberry (Usuario pi y la contraseña que introducimos en los pasos anteriores.

Si logramos hacer login con éxito, nuestro siguiente paso sera apagar la raspberry para quitarle el ratón y teclado y cable del monitor, y ya podemos colocarla donde queramos (a partir de ahora siempre accederemos por remoto)

sudo poweroff

Configurando por ssh

Una vez colocada en su lugar final, conectamos el cable de red y el de corriente. Abrimos putty en cualquier equipo de nuestra red, y accedemos a nuestro servidor.(Podemos abrir tantos terminales ssh como necesitemos, por ejemplo podemos dejar uno abierto con la orden «top» para ver los recursos que estamos usando en todo momento.

putty

 

ssha

Ahora vamos a instalar todo el software para poder empezar a publicar nuestra web.

Lo primero que vamos a instalar es un servidor ftp que mas adelante configuraremos para poder subir los archivos de la pagina web al servidor cuando lo necesitemos.

apt-get install proftpd

ahora actualizaremos el sistema y comenzaremos a instalar apache y mysql.

apt-get update && apt-get upgrade

apt-get install apache2

Al finalizar la instalación nos da un error «Could not reliably determine the servers’s fully qualified domain name, using 127.0.1.1 for ServerName»

Indicándonos que nos falta una configuración en nuestro archivo hosts para resolverlo vamos a modificarlo.

nano /etc/hosts

y añadimos las siguientes lineas donde NombreServer sera el nombre de nuestro servidor. (podemos saber cual pusimos con la orden hostname) y la dirección del mismo.

127.0.1.1   NombreServer

192.168.1.254  NombreServer

pulsamos ctrl+o y ctrl+x para grabar y salir

ahora vamos a crear un archivo y escribir el nombre de nuestro server dentro para configurar apache.

sudo nano /etc/apache2/conf.d/fqdn

añadimos la linea

ServerName NombreServer

ahora vamos a reiniciar el servicio apache para confirmar que ya no tenemos el error.

service apache2 stop && service apache2 start

Ahora podemos confirmar que ya tenemos el servidor web levantado accediendo a la dirección ip del mismo desde cualquier navegador de nuestra red. (Se nos mostrara una pagina como la siguiente.)

Web OK APache

Instalando php y Mysql

Vamos a crear un archivo escrito en php.

 

nano /var/www/phpTest.php

y escribimos lo siguiente

<?php

phpinfo();

?>

ctrl+o para guardar ctrl+x para salir,

Si accedemos a su url(http;//192.168.1.254/phptest.php en mi caso), veremos que no se procesa el codigo php

phptest2

ya que todavía no tenemos un motor de php instalado. Vamos a solucionarlo.

apt-get install php5 libapache2-mod-php5 php5-intl php5-mcrypt php5-curl php5-gd php5-sqlite           (TODO EN LA MISMA LINEA)

Cuando termine la instalación volvemos a acceder al archivo, y veremos lo siguiente.

php5

 

Ahora que ya tenemos php instalado y funcionando vamos con la base de datos mysql

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

Durante la instalación nos pedirá que introduzcamos un password para el usuario Root de la base de datos. Como esta base de datos estará accesible desde internet, es bueno que el password tenga la consistencia necesaria. Yo tengo algo parecido (no el mismo ^^) a esto.

-60feb70da7a2120262851f0a233c73cd (Clave 128 bits autogenerada)

Para comprobar que tenemos el servicio levantado y corriendo sin problemas vamos a acceder a la base de datos con la siguiente orden.

mysql -u root -p

el parámetro -u le dice con que usuario vamos a acceder y -p que espere que nuestra siguiente palabra introducida sea la contraseña.

Si todo sale bien nos mostrara la consola de mysql, escribimos exit para salir.

Para administrar la base de datos de una forma sencilla incluyendo la creación de bases de datos tablas y datos se suele usar la herramienta PhpMyadmin. Pero antes vamos a instalar un par de herramientas mas. La primera de ellas es APC para apache, que nos mejorara el rendimiento presentando paginas con php.

apt-get install php-pear php5-dev apache2-prefork-dev build-essential make && pecl install apc                                       (TODO EN LA MISMA LINEA)

ahora debemos configurar un archivo para añadir la nueva configuración

nano /etc/php5/apache2/php.ini

y añadir la siguiente linea en la sección «Dynamic extension» para buscarla pulsamos ctrl+W y escribimos el nombre de la sección. añadimos la linea

extension=apc.so

Reiniciamos apache e instalamos las herramientas de análisis de redes nmap y su versión gráfica zenmap (Que podremos abrir luego por escritorio remoto)

service apache2 stop && service apache2 start

apt-get install nmap zenmap

y comenzamos con phpmyadmin

apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

nos preguntara que webserver usara, le indicamos que apache2, después  cuando nos pregunte si configurar la base de datos con dbconfig-commmon le decimos que «yes»

y nos pedirá el password de la base de datos (del usuario root). Lo introducimos y pulsamos «ok».

mssqla

 

después introducimos un password que usaremos para hacer login desde un navegador al phpmyadmin.

cuando termine la instalación vamos a hacer un pequeño ajuste en el archivo de configuración

nano /etc/php5/apache2/php.ini

como antes buscamos la sección «Dynamic extensions» y añadimos la linea

Shellextension=mysql.so

dynamic extension

y creamos un link simbólico para poder ver la web de phpmyadmin.

cd /var/www

ln -s /usr/share/phpmyadmin

ahora ya podemos acceder a la url http;//192.168.1.254/phpmyadmin (modificando la dirección por la que estéis usando. Y logear usando el usuario phpymyadmin y la contraseña que pusimos en el paso anterior (También podemos acceder usando el usuario root y la contraseña de administración de mysql).

phpmyadmin

 

Instalando Webmin

Ahora que ya tenemos configurado y corriendo todo el servicio web, vamos a instalar un software que nos permitirá administrar la raspberry en si desde cualquier navegador web.

para ello debemos retocar el archivo sources.list

nano /etc/apt/sources.list

y añadir la siguientes dos lineas

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

y después ejecutamos los comandos:

cd /root

wget http://www.webmin.com/jcameron-key.asc

apt-key add jcameron-key.asc

apt-get update

apt-get install webmin

Esta instalación tardara algo mas que las anteriores.

Una vez instalado podremos acceder a nuestra herramienta de administración desde cualquier navegador de nuestra red (Mas tarde si reenviamos puertos desde el router, tambien desde internet) desde la url https://192.168.1.254/10000

webmin

 

Desde esta herramienta se puede administrar el servidor a gusto, desde creación de tareas automáticas (rebooteo diario, copia de seguridad del servidor, apagado, creación de usuarios, configuración de servicios. Incluso esta en castellano si lo modificas en las opciones.

mira todas las opciones disponibles de tu nuevo servidor :D

Estadisticas Web

Uno de los últimos pasos sera instalar un servicio de estadísticas para ver las visitas de nuestra pagina.

apt-get install webalizer

Nos vamos a configurar el archivo para que apunte a los directorios que necesitamos

nano /etc/webalizer/webalizer.conf

Apache por defecto crea una linea en un archivo por cada petición web que recibe incluyendo aspectos básicos como la dirección ip, hora y paginas visitadas, sistema operativo, navegador usado y mas información que webalizer nos ayudara a  presentar de una forma mas legible.

En este archivo debemos  modificar la linea logfile para que apunte a donde tenemos los archivos creados por apache.

logfile    /var/log/apache2/access.log

Ahora vamos a modificar unos parámetros para poder geolocalizar las visitas

Buscamos la linea con ctrl+w «Geoip» Y la modificamos para que quede así.

GeoIP           yes

GeoIPDatabase     /usr/share/GeoIP/GeoIP.dat

Grabamos y salimos de nano.

vamos a securizar nuestro directorio de estadísticas, para ello crearemos un archivo con el usuario y contraseña de acceso, y en el otro especificaremos los parámetros para todo el que intente acceder a ese parte de la web.

cd /var/www/webalizer

htpasswd -c .htpasswd NombreUsuario

En «NombreUsuario» ponemos el usuario que queremos para las estadísticas, e introducimos el password cuando nos lo solicite. Seguimos configurando

nano .htaccess

Escribimos lo siguiente adaptándolo a nuestros directorios.

AuthUserFile          /var/www/webalizer/.htpasswd

AuthType              Basic

AuthName              /var/www/webalizer

Require                 valid-user

Cuando Accedamos a las estadísticas nos pedirá logear con los datos anteriores.

login1

statc2 statc

 Acceso FTP

Por ultimo vamos a configurar el acceso por ftp, para poder subir los archivos de nuestra pagina web.

Para ello debemos configurar un usuario en el archivo de configuración de proFTPd.

nano /etc/proftpd/proftpd.conf

y modificar lo primero el nombre de nuestro servidor en la clausula ServerName.

después localizamos «RootLogin» y lo modificamos a ON.

Ahora reiniciamos el servicio

service proftpd stop

service proftpd start

Con esto tenemos el servidor listo, Configurar a través de webmin un reinicio automático una vez por semana o cada 15 días y listo. También podemos configurar copias de seguridad y un montón de utilidades, recomiendo mirarse bien esa herramienta.

Recordemos los servicios que tenemos instalados.

Servidor Web Apache2 con Php y mysql instalado y configurado, servidor de estadísticas webalizer, configurado y securizado, servidor Ftp, Phpmyadmin para ayudar a administrar nuestra base de datos, Webmin para administración de nuestro servidor desde un navegador, SSH para administrar nuestro servidor por consola.

Todo montado por menos de 61€ en un cacharro del tamaño de un paquete de tabaco, que consume muy poco, y no genera calor, usando software libre (y gratuito).

 

El próximo tutorial explicare como  configurar nuestro router y raspberry para que podamos acceder desde internet, y como publicar nuestra web.

Un saludo!