viernes, 28 de julio de 2017

Servidor web con raspberry pi

En esta ocasión vamos a montar un servidor web en nuestra raspberry. Es muy fácil construirse un pequeño server para alojar páginas web que tengan una demanda de usuarios media. Para ello sólo nos haría falta ,aparte de la placa raspberry, la fuente de alimentación, un disco duro externo y un usb wifi ( estos dos últimos opcionales)


Tener un servidor personal en comparación con subir nuestra web a un hosting de pago tiene las siguientes características:

Ventajas:
  • es gratuito 
  • no tenemos límite de transferencia y almacenamiento (podríamos subir tantos artículos, presentaciones y vídeos como queramos, sólo estando limitados al espacio de nuestro disco duro en el servidor) 
  • hoy en día la velocidad media de conexión a internet en cualquier casa u oficina  es aceptable para poder responder de manera fluida a un número de peticiones de carga que no se exageradamente alto
Desventajas:
  • en nuestro caso ya que tenemos un redireccionamiento de dirección web gratuito (no-ip) nuestra dirección es un poco más compleja de lo que estamos acostumbrados: "direccionweb.sytes.net" o "direccionweb.opt" ya que no estamos utilizando un dominio sino un subdominio, pero podríamos comprar un domino propio 
  • dependemos del estado de nuestra conexión a internet por lo que debería de ser lo suficientemente estable como para garantizarnos que quien quiera obtener acceso al servidor pueda hacerlo 
  • el servidor debe de estar encendido para que la página web funcione ( por suerte el consumo energético de un raspberry-pi es mínimo, es más, el consumo del router es 10 veces más)

Pasos previos:
Modificamos la IP interna del servidor para que sea fija en (raspian) jessie:
 
Hacemos una copia de seguridad por lo que pudiera pasar...
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.backup
sudo nano /etc/dhcpcd.conf

añadimos encima de todo lo comentado lo siguiente:
interface eth0 
static ip_address=192.168.1.220/24 
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
 

Si queremos configurar también la dirección wifi, copiamos esto debajo de lo anterior: 
interface wlan0 
static ip_address=192.168.1.220/24 
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
Explicación:

static ip address: ip nueva del equipo

static routers: es la ip del router
static domain_name_servers: servidor de DNS, podemos utilizar el 8.8.8.8 que es el que nos proporciona google

Evidentemente los valores de las ip pueden ser modificados y deberían de ser adaptados en cada situación a las necesidades del sistema

Configurar Wifi:
Hacemos una copia de seguridad del archivo a modificar para evitar suicidios innecesarios :)

sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.backup
editamos el archivo:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf


network={ ssid="testing"
psk="testingPassword" } 


Modificamos en donde pone "testing" ponemos el nombre de nuesta red wifi, mientas que en donde está "testingPassword" escribimos la contraseña de acceso a la red

Lo ideal sería instalar un sistema de redireccionamiento para que no necesitamos escribir nuesta IP externa (en mi caso 87.210.150.44) para acceder a la web.

Además de ser difícil de aprender la IP externa, esta varía con el tiempo por lo que no tiene sentido ninguno utilizarla como dirección de cara al exterior.

En lugar de eso, vamos a instalar un programa que lo que hace es vincular nuesta IP exterior cambiante a una dirección fija,en concreto a un subdomio, para ello, manda periódicamente la IP externa para actualizar hacia donde apunta en el caso de que haya cambiado.

La instalación de No-ip puede verse en esta entrada:
http://fernandogonzalezbenitez.blogspot.com.es/2014/07/owncloud-en-raspberry-pi.html

Bueno, ahora vamos a instalar el servidor web en sí y sus accesorios:
Servidor apache
sudo ap-get install apache2
 

Instalamos los elementos necesarios para crear una web vistosa
sudo apt-get install php5
también los haría falta los siguientes elementos auxiliares:

sudo apt-get install libapache2-mod-php5 libapache2-mod-perl2 php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-ldap php5-mhash php5-mysql php5-odbc 
 
Para comprobar si php esta funcionando adecuadamente creamos un fichero php y lo intentamos abrir desde el navegador

sudo nano /var/www/html/phpinfo.php
y editamos el fichero:

<?php
phpinfo();
?>


guardamos e intentamos acceder via web:
192.168.X.X/phpinfo.php

donde las X dependen de la dirección IP del servidor que le hemos dado
Si todo va bien debería de cargar la página

Si necesitásemos una base de datos en el servidor web instalaríamos MySQL y phpMyAdmin

sudo apt-get install php5-mysql mysql-server mysql-client
sudo /etc/init.d/mysql restart
sudo apt-get install phpmyadmin


Vinculamos PhpMyAdmin con Apache2
sudo nano /etc/apache2/apache2.conf

y añadimos al final la línea: 
Include /etc/phpmyadmin/apache.conf 

guardamos los cambios y reiniciamos apache
sudo /etc/init.d/apache2 restart

Para editar las bases de datos de nuestra página web sólo tendremos que poner la direccion:
192.168.X.X/phpmyadmin


En donde tendremos que elegir como usuario: root y de contraseña pondremos a elegida en la instalación de MySQL





Ya tenemos nuestro servidor instalado y funcionando, sólo nos quedaría copiar la página a alojar en la carpeta: /var/www/html