Como crear un servidor casero en 10 minutos con Raspberry Pi
Crea un servidor web con Raspberry Pi casero en 10 minutos
Como el título indica, vamos a gastar 10 minutos de nuestro tiempo en montar nuestra propio servidor casero. El ordenador perfecto para hacer de servidor local en casa es un ordenador pequeño de consumo reducido. ¿Y cual es el ordenador más pequeño y que menos consume? Exacto: la Raspberry pi. Para ello solo vamos a necesitar una y un poco de paciencia. Al finalizar el tutorial tendrás tu propio servidor web, que te servirá por ejemplo para hacer pruebas. Incluso, este servidor local, te servirá para preparar tus propios sitios en wordpress en local antes de subirlos a producción. Y ya si quieres rizar el rizo, redirigiendo el puerto 80 de tu router hacía la ip de la raspberry podrás lograr que tu servidor casero esté disponible para todo el mundo.
Aviso: tienes la solución más optimizada para tu servidor web local a fecha Enero de 2019 al final de la entrada. Puedes llegar antes pulsando aquí
Contenido [show]
Razones para montar un servidor web casero con tu Raspberry
Seguro que estarás cansado de buscar y probar opciones de web hosting gratis. Créeme, no hay una que te dé todo lo que necesitas para montar tu sitio web. Lo mejor es crear tu propio servidor web en casa. Todas las opciones de alojamiento web gratis tienen alguna tara. ¿Sabes por qué? porque gratis y regalado hace tiempo que murieron.
Así que desconfía si alguien te ofrece hosting gratis. Ese alojamiento web gratuito o te inserta publicidad, o es más lento que el caballo del malo. Es posible que tu servidor lo compartas con cientos o miles de webs que se dedican a extraños procesos que consumen los recursos del ordenador en el que se aloja tu web. Así que cuando consigas conectar parecerá que has vuelto a los tiempos del módem de 56K.
Huye de servidores web gratuitos
Por todo lo anterior la consigna es clara: huye de servidores web gratuitos. Todos prometen el cielo y realmente te dan un billete derecho al infierno. Ya te lo he dicho, regalado se murió. El 99,99% de los alojamientos web gratuitos son lentos, incluyen publicidad y pasan mas tiempo caídos que online.
Por no hablar de nuevo que vas a compartir servidor web con la creme de la creme del spam. Esa es la principal funcionalidad de los servidores web gratis: alojar toneladas de spam.
Ventajas de usar una Raspberry como servidor casero
¿Porqué hemos elegido la Raspberry Pi como base para armar nuestro servidor casero? Son muchos los motivos para utilizar una Raspberry como servidor casero Pues vamos a enumerar las ventajas
Vamos a lograr un servidor casero barato
Ahora seguro que estás pensando que crear un servidor web es muy complicado y costoso. Pues no. Costoso ni de coña. La opción más asequible y decente sería contratar un vps. El mejor en relación calidad / precio para mí es el básico de ovh. Esto vienen a ser unos 60 € al año. La Raspberry Pi está en 35 €. Así que en 6 meses has amortizado la inversión. ¿Complicado montar un servidor web en casa? Pues tampoco. Con poco más de 4 comandos lo tendrás listo y funcionando y, aprenderás un montón.
La versatilidad de la Raspberry Pi como servidor casero
Y además de convertirla en servidor casero local, puedes usar la Raspberry para un montón de cosas mas: montar tu propio NAS, hacer tu propia VPN para acceder a tu red desde cualquier lugar del mundo. Puedes convertirla en un centro multimedia que reproduce vídeo en 1080 sin problema. Incluso la puedes usar como sistema de videovigilancia casero o como contador de personas.
Servidor casero de bajo consumo y silencioso
Otra ventaja es que tendrás un servidor casero de bajo consumo eléctrico. La Raspberry Pi gasta tanta electricidad como la carga de un móvil. Por un lado vamos a ahorrar al no tener que contratar un hosting y, por otro, apenas nos va a afectar en la factura de la luz.
Y, además, al carecer de partes móviles, no escucharás ningún ruido molesto y reinará el silencio en la habitación en la que hayas instalado tu servidor casero.
Así que si no tienes intención de montar tu propio Amazon o una alternativa a Facebook, sino que tan solo quieres una simple página web en wordpress, tu mejor opción es seguir leyendo el tutorial. Si tienes cualquier duda intentaré resolverla en los comentarios. Vamos con nuestro alojamiento gratis a lo Juan Palomo. Vamos a crear un servidor web casero paso a paso
Preparando todo para el servidor casero web en la Raspberry Pi
Pues empecemos yendo directos al grano. Al final del tutorial deberíamos ser capaces de montar un servidor web casero. Vamos a ser nuestros propios proveedores de hosting gratuito. De esta manera ahorramos un poco de dinero, aprovechando nuestra flamante fibra óptica y, a pesar de nuestra ip dinámica.. Así que como dijo mi amigo Jack, vamos por partes.
- Necesitas una Raspberry Pi 3, un mini-ordenador equipado con un 1gb de RAM,un flamante QUAD-CORE y una GPU capaz de reproducir video a 1080p por HDMI sin despeinarse. Una tarjeta Micro-sd de clase 10, un cargador de móvil microusb (recomendable al menos 2 Amperios), un cable hdmi (seguro que tienes uno en casa que te va a hacer de donante temporal para el primer arranque) y mucha paciencia. También puedes aprovechar para montar tu servidor web algún equipo que tengas sin uso en casa. Pero seguro que hace más ruido, ocupa mas sitio y consume mas que la Raspberry
- Descárgate una imagen actualizada de Raspbian, te recomiendo la LITE, sin entorno gráfico ni escritorio, es ideal para montar un servidor casero local en la Raspberry. Raspbian es un derivado de Debian, una distribución de Linux optimizada para sacar todo el jugo a esta placa todo en uno. Llegados a este punto, no te asustes. Vas a tener que usar la consola de Linux. Al principio puede parece complicado, pero lo coges rápido e incluso, la echarás de menos en Windows.
- Una vez descargada, la descomprimes. Te instalas el Win32DiskImager. Esta es una herramienta que se encarga de grabar la imagen de Raspbian en la Tarjeta Micro-SD de la Raspberry. Eso sí, borrando todos los datos que puedas tener en ella. Es muy sencilla de utilizar, seleccionas la unidad que se corresponde con tu tarjeta micro-sd y la imagen que previamente has descargado y descomprimido de Raspbian y le das al botón Write.
- Cuando finalice la escritura de la imagen en la microsd, la expulsas del pc , la colocas en la ranura de la Raspberry Pi 3 y prendes la placa (fuego no, al menos todavía) conectando el cable HDMI , un teclado usb y el microusb. Si todo ha salido bien, una pila de letras blancas y verdes aparecerán sobre el fondo negro de la pantalla a la que hayas conectado la placa. No es el fin del mundo, es tu pequeño servidor casero arrancando. Cuando finalice el arranque verás el cursor parpadeando y pidiéndote tu login…
- Que no cunda el pánico. En Debian, para manipular nuestro servidor casero necesitamos un usuario. Eso es lo que te está preguntando ahora la Raspberry Pi ¿Quién eres?, así que como somos muy educados le contestamos: “pi” (sin las comillas) y pulsamos enter. Ahora nuestra pequeña placa, que no es tonta, quiere asegurarse de que realmente somos pi y no po, asi que nos pide nuestra password, que en este caso es “raspberry”, sin las comillas también, claro está. Pulsa enter y ya estarás logueado y dispuesto a empezar a funcionar.
sudo raspi-config
- Si no has hecho alguna incursión en Linux te aclaro que “sudo” no tiene nada que ver con la transpiración humana, sino que sirve para ejecutar los comandos con privilegios de administrador del sistema. Con este comando accederemos a la utilidad de configuración de la Raspberry Pi. Después, navegaremos por las opciones, comenzando por “Expand Filesystem”. De esta manera le indicamos a la Raspberry Pi que debe usar todo el espacio disponible en la tarjeta microsd. Debian se expandirá para crear un servidor web casero.
Posteriormente, selecciona Internationalisation Options, para poner en cristiano la Raspberry. Así podrás usar el teclado en español. Por último “Advanced Options” para activar la opción SSH y la opción “Overscan” por si en tu monitor aparecen unas bandas negras que hacen mas pequeña la superficie de la pantalla. Tras todo ello sal de la utilidad de configuración y reinicia tu servidor web casero con el siguiente comando:sudo reboot
- Para terminar de crear un servidor web casero vamos a asegurarnos de que tenemos todo actualizado. Para ello teclearemos un par de comandos mas:
sudo apt-get update sudo apt-get upgrade
apt-get es el gestor de paquetes de Debian, que es la distribución linux “padre” de Raspbian. Este gestor de paquetes se encarga de instalar todo aquello que te puede hacer falta en tu servidor web casero. En este caso lo primero que le estamos pidiendo es que actualice sus listas de paquetes con las últimas versiones disponibles en los repositorios de Raspbian. Con el segundo comando le pedimos que actualice todos los paquetes que tenemos instalados a las últimas versiones estables disponible. Familiarizate con su uso y acostumbra a ejecutar este par de comandos con frecuencia. De esa manera mantendrás actualizado tu pequeño servidor web casero.
Servidor web raspberry Pi casero con Apache, PHP 5 y Mysql
Instalar PHP 5 y Apache
Vamos a instalar los paquetes necesarios para seguir con la tarea de crear un servidor web en casa. En la primera parte instalamos el sistema operativo raspbian y lo actualizamos.
Así que continuamos con el lío. Primeramente vamos a instalar son los paquetes necesarios para tener Apache en nuestro servidor web casero. Después PHP para que nuestro hosting gratuito pueda servir páginas dinámicas.
Comenzamos por actualizar las cabeceras con el comando que aprendimos en la primera parte del tutorial sudo apt-get update.
Una vez actualizadas las cabeceras instalamos los paquetes con el comando
sudo apt-get install apache2 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
Nos lo tomamos con calma mientras se instalan los paquetes necesarios.
Una vez finalizada la instalación ya deberíamos tener instalada en nuestro servidor casero apache2 y el intérprete de PHP. Para comprobar que todo funciona correctamente vamos a crear nuestro primer fichero en PHP.
Para ello en la terminal de la Raspberry Pi tecleamos lo siguiente:
Para ello en la terminal de la Raspberry Pi tecleamos lo siguiente:
sudo nano /var/www/html/miprimerphp.php
Y dentro de este archivo escribiremos el siguiente contenido:
<?php echo "Hola Mundo"; ?>
Después pulsamos las teclas Control + X para cerrar el archivo y guardarlo. El último paso para poder comprobar que nuestro primer programa en PHP se ejecuta correctamente en nuestro servidor web casero es averiguar la dirección IP de nuestra Raspberry Pi. La forma más sencilla de averiguar dicha IP es tecleando en la consola el siguiente comando:
sudo ifconfig
La salida de este comando nos informará, entre otras cosas, de cuál es la dirección IP actual de nuestra Raspberry Pi. Ahora desde otro ordenador abrimos un navegador de Internet cualquiera y en la barra de direcciones introducimos la dirección que hemos obtenido de nuestro servidor casero con el comando ifconfig + la ruta de acceso al archivo.
http://192.168.X.X/miprimerphp.php
Sí todo ha salido como esperábamos en el navegador de nuestro ordenador podremos ver la frase “Hola Mundo”. Ya casi tenemos montado nuestro servidor web en casa.
Instalar Mysql y phpmyadmin en nuestro servidor casero
Ahora para aprovechar toda la potencia que nos ofrece PHP es necesario instalar un motor de bases de datos. Aunque existen numerosas alternativas en cuanto a base de datos se refiere, la que mejor se lleva con PHP es MySQL. Otro día hablaremos de otros motores de bases de datos como el de Microsoft SQL Server o como el sqlite.
Así que vamos manos a la obra y seguimos con el cometido de crear un servidor casero propio. Os aconsejo tener la memoria preparada o disponer cerca de un bolígrafo y un papel, ya que durante la instalación de MySQL se os pedirá introducir una contraseña para el usuario root de MySQL.
Tecleamos el siguiente comando en la consola:
Tecleamos el siguiente comando en la consola:
sudo apt-get install mysql-server mysql-client
Y esperamos a que se ejecute y se instalen los paquetes. Como ya os he dicho, durante la instalación os pedirá la contraseña del usuario root. Con esto queda instalado MySQL en nuestro servidor web y podemos empezar a crear bases de datos desde la línea de comandos. Ahora bien, para facilitarnos la gestión de nuestras bases de datos y poder manejarlas fácilmente vamos a instalar phpmyadmin. Para ello usaremos el siguiente comando:
sudo apt-get install libapache2-mod-auth-mysql phpmyadmin
Durante la instalación nos preguntará el tipo de servidor que tenemos instalado, tan solo tenemos que indicarle que nuestro servidor es Apache. Cuando nos pregunte si queremos configurar una base de datos le responderemos que sí. En ese momento nos solicitará la contraseña que utilizamos para instalar MySQL. A continuación nos pedirá una nueva para el propio phpmyadmin.
Sí todo es correcto bastará con teclear en el navegador de Internet la dirección IP de nuestra Raspberry Pi seguido de phpmyadmin:
Sí todo es correcto bastará con teclear en el navegador de Internet la dirección IP de nuestra Raspberry Pi seguido de phpmyadmin:
http://192.168.X.X/phpmyadmin
Y accederemos a la gestión de nuestras bases de datos MySQL. Y hasta aquí la segunda parte del tutorial de cómo montar un servidor web casero en una Raspberry Pi.
Hasta el momento hemos instalado apache2, PHP, MySQL y phpmyadmin. Con todos estos componentes ya podemos empezar a hacer nuestros pinitos en la programación web.
Acceso remoto por SSH y FTP al servidor web casero
Vamos a entrar en materia para continuar nuestro servidor web casero en la Raspberry Pi. Ya tenemos todo lo necesario instalado en nuestra Raspberry Pi. Vamos a aprovecharnos de que en los primeros pasos del tutorial indicamos que queríamos habilitar el acceso por SSH a nuestra Raspberry para seguir implementando nuestro servidor web casero. Para ello necesitamos instalar, ya en nuestro PC, un par de herramientas:
- La primera de ellas para acceder por consola a nuestra Raspberry es Putty. Conociendo la IP de nuestra Raspberry nos permite controlarla de manera remota. La descargamos en un lugar fácil de recordar de nuestro pc y la ejecutamos. Nos pedirá una dirección IP a la que conectarnos, la de nuestra Raspberry Pi, la introducimos y pulsamos Open. Se nos abrirá una ventana similar a la del MS-DOS de toda la vida en el que nuestra Raspberry nos pedirá login (pi/raspberry) si nos han cambiado las que vienen por defecto. En este punto os aconsejaría que, dado que la Raspberry va a estar conectada a Internet, cambiarais el password por defecto. Para cambiar el password lo podéis hacer desde la herramienta de configuración raspi-config o tecleando un simple comando “passwd”.
- La siguiente herramienta a instalar en nuestro pc es un cliente FTP. Podéis elegir el que queráis, pero yo os recomiendo FileZilla por su sencillez de uso. Una vez descargado e instalado lo ejecutamos. Podemos crear una nueva conexión, accediendo desde el menú Archivo al Gestor de Sitios o bien desde la barra de conexión rápida. Os preguntareis como vamos a acceder por ftp si no hemos instalado un servidor FTP en nuestra Raspberry. Vamos a aprovechar que activamos el acceso SSH en la Raspberry para hacer uso del protocolo SSH FTP (SFTP). Para ello en el Filezilla introducimos los siguientes datos: la ip de nuestra Raspberry, el usuario (pi) el password y el puerto 22. Si todo va bien conectaremos a nuestra Raspberry y podremos navegar por su sistema de archivos.
Navegad hasta el directorio /var/www/html y tratad de subir algún fichero. Probablemente os encontréis con un error de operación no permitida. No perdáis la calma. Recordad que habéis accedido a la Raspberry Pi con el usuario pi, así que vuestras acciones sobre directorios están limitadas a vuestro usuario y a los permisos de escritura de los directorios. Volvemos al Putty para comprobar algunas cosillas antes de continuar.
Corrigiendo propietarios y permisos del servidor web Raspberry casero
Para empezar vamos a ver quien es el propietario de ese directorio, para ello tecleamos el siguiente comando:
ls -l /var/www
Esto nos dirá los permisos de escritura del directorio, el propietario y el grupo al que pertenece el archivo. Si todo fuera correcto la salida debería ser la siguiente:
drwxrwx— 2 www-data www-data ….
Probablemente, donde aparece www-data os ponga root. En ese caso vamos a cambiarlo para que se vaya pareciendo a lo anterior. Para ello ejecutamos el siguiente comando:
chown -R www-data:www-data /var/www/html
Con esto el directorio ya pertenece a www-data y al grupo de usuarios www-data. Este es el usuario que ejecuta Apache. Ya solo nos queda añadir nuestro usuario pi al grupo de usuarios www-data. Después ajustaremos los permisos del directorio, lo que logramos con los siguientes comandos:
usermod -g www-data pi chmod -R 770 /var/www
El primer comando añade al usuario pi al grupo www-data, propietario de la carpeta. El segundo comando proporciona permisos de ejecución(1), escritura(2) y lectura(4), que si los sumamos dan 7 al propietario (primer dígito: 7) y a los integrantes del grupo (segundo dígito: 7). Al resto de usuarios no les otorga ningún permiso (tercer dígito:0)
Si quieres tener el control total de tu servidor web instalado en la raspberry, te animo a que instales webmin.
Y hasta aquí, de momento, el tutorial para crear un servidor web casero en la Raspberry Pi. Nos queda trastear un poco con los VirtualHosts de Apache. Estos nos permiten tener varias webs distintas en el mismo servidor web. También tenemos pendiente descubrir como acceder desde el exterior a nuestro servidor web. Espero que haya sido de vuestro interés este tema y que si tenéis alguna duda me la hagáis llegar a través de los comentarios.
Servidor web Raspberry Pi casero con nginx, php 7 y Maria DB
Por fin llegó el momento de mostraros como montar un servidor en la Raspberry haciendo uso de recursos más actualizados y eficientes. Todo esto que vamos a ver no es exclusivo de la raspberry. Es de aplicación para cualquier distribución basada en Debian
¿Qué vamos a instalar y porque?
Seguro que sabes que en esto de los servidores web para hacer pruebas en casa hay múltiples combinaciones de entornos:
- LAMP: Linux, Apache, Mysql y Php. Es lo que hemos instalado en la primera parte del tutorial
- WAMP: Windows, Apache, Mysql y PHP. Similar al anterior pero corriendo en máquinas Windows
- XAMPP: Windows, Apache, Mysql, PHP y Perl
- MAMP: El mismo entorno que los anteriores pero para máquinas Apple
Todos tienen en común que se apoyan en el mismo servidor web: Apache. Yo, en mis inicios, siempre usaba soluciones basadas en Apache y Mysql. Pero cuando avanzas un poco y montas tu propio VPS, te das cuenta de que esta combinación come muchos recursos del servidor web. Apache y Mysql son voraces devoradores de memoria RAM. Cuando no hay límite de recursos, pues están muy bien. Pero cuando pretendes usar una Raspberry como entorno de desarrollo de sitios webs pues ya no funcionan tan bien. Y cuando tienes que tomar la decisión de contratar un VPS, en el que sus características son las que fijan el precio, tampoco.
Así que, de momento, me decanto por usar una solución LEMP:
- Linux. En mi caso Debian siempre, por su gran comunidad, su robustez y su eficacia.
- (Engine-X) NGINX: Ese gran desconocido. Su consumo de RAM es muy inferior a Apache. Es capaz de gestionar más páginas por segundo que Apache y su tiempo de respuesta es siempre menor.
- MariaDB: como fork open source de Mysql. Similar en cuanto a rendimiento, pero software libre mantenido por la comunidad
- PHP: como lenguaje de scripting. Vamos a tratar de que nuestra raspberry se trague la versión 7.2, no disponible en los repositorios oficiales. Nada de PHP 5.6, en términos de rendimiento, siempre la última versión estable de PHP por favor.
Instalando paquetes
Pues como siempre comenzamos actualizando la distribución:
sudo apt-get update sudo apt-get upgrade
Nginx
Comenzamos la instalación del servidor web Nginx
sudo apt-get install nginx
Verás que se instalan un montón de dependencias. Tranquilo en menos de un minuto estará listo.
Puedes comprobar que Nginx está levantado y funcionando si accedes desde un navegador web a la ip de tu Raspberry:
PHP 7.0
Como os decía vamos a tratar de instalar la última versión disponible de PHP. Debian, por su política de actualizaciones y su filosofía de robustez de sus distribuciones, no siempre tienen las últimas versiones en sus repositorios. Es lo que ocurre en este caso, el PHP por defecto es la versión 7.0. Que conste que he intentado instalar PHP 7.2 pero la distribución se rompe, así que, de momento, nos conformamos con PHP 7.0
sudo apt-get update
sudo apt install php7.0-fpm php7.0-common php7.0-mbstring php7.0-xmlrpc php7.0-soap php7.0-gd php7.0-xml php7.0-intl php7.0-mysql php7.0-cli php7.0-mcrypt php7.0-zip php7.0-curl
Una vez instalado todo el repertorio, vamos a editar la configuración de php para optimizarlo y de nginx para decirle que se encargue también de servir archivos php. Para optimizar php editamos el archivo php.ini
sudo nano /etc/php/7.0/fpm/php.ini
y nos aseguramos que estos valores sean correctos. Pulsando CTRL+W buscamos dentro del editor nano
file_uploads = On allow_url_fopen = On memory_limit = 256M upload_max_filesize = 100M cgi.fix_pathinfo=0 max_execution_time = 360
Ahora editamos la configuración de nginx para decirle que se encargue de procesar archivos php:
sudo nano /etc/nginx/sites-available/default
Y descomentamos lo necesario para que nginx se encargue de servir archivos php (lo marcado en negrita)
# pass PHP scripts to FastCGI server # location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; } # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html;
Reiniciamos php y nginx
sudo service php7.0-fpm restart sudo service nginx restart
¿Habrá funcionado? Vamos a comprobarlo. Creamos un archivo php con el siguiente comando
sudo nano /var/www/html/pruebaphp.php
Y le añadimos el siguiente contenido:
<?php phpinfo(); ?>
Si todo ha ido bien, este debería ser el resultado:
Vamos bien, así que seguimos con el tutorial.
MariaDB
Es el turno de instalar un motor de bases de datos en nuestro servidor casero. Por eficiencia y, sobre todo, por ser software libre, mi opción es MariaDB
Así que vamos a ver como instalar y configurar en nuestro Raspbian:
sudo apt-get update sudo apt-get install mariadb-server mariadb-client
Después de que se complete la instalación, procedemos a hacerla un poco mas segura:
sudo mysql_secure_installation
Es bueno dejar las opciones por defecto. yo normalmente, en entornos de pruebas y en local no le pongo contraseña al usuario root. Pero ne producción aseguraros de que le ponéis contraseña y deshabilitais el login remoto del usuario root.
Ahora podríamos instalar phpmyadmin, pero si no váis a darle mas uso que la creación de bases de datos, lo podéis hacer desde la propia línea de comandos. La otra alternativa, muy recomendable, es instalar webmin, que entre sus muchas funcionalidades tiene la de crear bases de datos desde su interfaz web. Eso sí, cada vez que creeis una base de datos, acordaros de cambiar los privilegios para vuestro usuario root, ya sea a través de webmin o de la línea de comandos.:
grant all privileges on wpbasico.* to root@localhost identified by 'tupassword';
Y eso es todo. ¿alguna duda? Házmela llegar a través de los comentarios.
0 comentarios:
Publicar un comentario