Panel de administracion de Wordpress

Cómo instalar un servidor web y WordPress en una Raspberry Pi

Cuando vamos a montar un sitio web, lo primero que necesitamos es el alojamiento de este. Podemos encontrar cientos de hostings y servidores web por internet con diferentes precios, pero si lo que queremos es aprender a montar nuestra web y no subirla a internet hasta que lista, lo mejor que podemos hacer es instalar un servidor web y WordPress en nuestra Raspberry Pi para cacharrear hasta que la tengamos lista.

La ventaja de tener un servidor web en una Raspberry Pi es el control total del mismo, además del coste que tiene, ya que una vez tenemos todo comprado, montado y funcionando, el coste del servidor es mínimo, ya que el consumo de la Raspberry Pi puede ser de unos 60kWh al año, lo que supone un gasto de menos de 10€ al año. Comparando esto con un hosting, vemos que los mas baratos pueden costarnos 5 veces mas que ese consumo, y para aprender a hacer una web, no necesitamos tantas opciones como nos da un hosting.

Este tutorial lo voy a hacer usando la conexión SSH de mi Raspberry Pi 4, ya que me apaño mejor con el teclado de mi ordenador. También os recomiendo que, una vez tengáis el servidor montado configuréis la Raspberry Pi con una IP fija para que siempre podáis acceder al servidor web sin problemas desde cualquier ordenador o smartphone de vuestra red. Una vez dicho eso, vamos con el tutorial.

Preparando la Raspberry Pi

Vamos a empezar con lo mas básico, que es preparar la Raspberry Pi para que funcione con servidor web. Si solo vamos a dejar esa Raspberry Pi como servidor, podemos descargarnos la versión lite de Raspbian, que no cuenta con interfaz gráfica y va a funcionar mejor, ya que, al no tener escritorio, tendremos mas recursos disponibles para los servidores.

Una vez hemos grabado la imagen de Raspbian en la Raspberry Pi, procedemos con la actualización del sistema operativo para tenerlo todo listo para instalar el servidor web y los demás paquetes necesarios. Si ya tenemos un Raspbian instalado, se recomienda hacer este paso también para tenerlo todo perfecto. Para ello ejecutaremos el siguiente comando en la terminal.

sudo apt update && sudo apt upgrade -y
Actualizando Raspbian desde PuTTY

Como podéis ver en la imagen de arriba, en mi caso solo tenia que actualizar un paquete. Dependiendo del tiempo que llevéis sin actualizar Raspbian, pueden ser varios paquetes, o ninguno.

Instalando el servidor web

Ahora que ya tenemos la Raspberry Pi lista, vamos a instalar el servidor web, esto nos permitirá realizar peticiones http a la Raspberry Pi y poder ver la web o webs que tengamos ahí instaladas. En este tutorial vamos a instalar NGINX. Normalmente y para equipos potentes la gente utiliza también Apache, pero como estamos trabajando en un ordenador con pocos recursos vamos a tratar de que todo vaya lo mejor posible con lo que tenemos. Para instalar el servidor lo único que tenemos que hacer es poner el siguiente comando en la terminal.

sudo apt install nginx
Instalando el servidor web NGINX en Raspberry Pi

Como vemos, se tienen que instalar más paquetes para que todo funcione correctamente. Una vez hemos instalado todo, ya tenemos el servidor funcionando. Para poder comprobarlo, lo único que tenemos que hacer es poner la IP de la Raspberry Pi en un navegador. Si no la sabemos, podemos conocerla ejecutando ifconfig en una terminal. Si tenemos conectada la Raspberry Pi a internet con un cable de red, la IP será la que aparece en la interfaz eth0, y si la tenemos conectada por wifi, la interfaz que tenemos que mirar para saber la IP es wifi0.

Navegador web Chromium cargando la página por defecto del servidor web NGINX en una Raspberry Pi

Instalando PHP y MariaDB

Ahora vamos a instalar los paquetes necesarios para poder programar webs dinámicas. Con estas webs dinámicas podemos acceder a una base de datos y almacenar cosas para que luego todo se pueda generar y editar de forma rápida. Si no tienes ni idea de programación, una web dinámica puede usar un gestor de contenido como WordPress y editar y gestionar todo desde el propio navegador.

Como versión de PHP vamos a usar la versión 7.3, que es la última disponible en los repositorios de Raspbian actualmente, para ello vamos a poner el siguiente comando en la terminal

sudo apt install php7.3-fpm php7.3-common php7.3-mbstring php7.3-xmlrpc php7.3-gd php7.3-xml php7.3-mysql php7.3-cli php7.3-zip php7.3-curl
Instalando PHP 7.3 en Raspberry Pi

Como podemos ver aquí también, necesitamos algunos paquetes mas además de los que vamos a instalar. Dejamos que el proceso de instalación termine y nos ponemos con la instalación de los paquetes de MariaDB.

En este caso he elegido MariaDB como servidor de bases de datos SQL porque MySQL, aun estando disponible, es software propietario en algunos casos y no tiene tanta documentación como MariaDB. Como lo que queremos es un servidor web que luego podamos configurar fácilmente, lo mejor que podemos hacer es usar este servidor de bases de datos para poder encontrar cualquier cosa en su documentación llegado el caso.

Para proceder con la instalación de MariaDB tenemos que lanzar el siguiente comando en la terminal de Raspbian.

sudo apt-get install mariadb-server mariadb-client
Instalando MariaDB en Raspberry Pi

Como podemos ver, también necesitamos instalar un montón de paquetes. Una vez que esta todo instalado, ahora vamos a configurarlo todo para que nuestro servidor web tenga todo lo necesario para instalar WordPress y poder usarlo sin problemas.

Configurando el servidor web para que use PHP

WordPress esta programado con PHP para su funcionamiento. Este lenguaje de programación interpreta los scripts que están en el servidor devolviéndonos una página web. Una vez configurado el servidor web y PHP para que funcionen, podemos probarlo para ver que todo está correcto.

Lo primero que vamos a configurar es PHP, para ello tenemos que abrir el archivo de configuración de PHP. Como este archivo solo tiene permisos de administrador, recomiendo abrirlo con sudo para poder editarlo sin problemas. Para ello uso el siguiente comando en la terminal.

sudo nano /etc/php/7.3/fpm/php.ini
Editando la configuración de PHP con nano

Una vez tenemos abierto el archivo, podemos buscar con la tecla Ctrl + W los parámetros que tenemos que configurar, modificando los que os pongo abajo con los valores que salen ahí. Con esto conseguiremos tener un poco más de memoria para WordPress y que no se cuelgue. Una vez lo tenemos todo listo, podemos guardar el archivo con Ctrl + X.

file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
cgi.fix_pathinfo = 0
date.timezone = Europe/Madrid

Configurando el servidor de bases de datos

Ahora tenemos que configurar el servidor de bases de datos para que WordPress o el gestor de contenido que vayamos a usar en nuestro servidor web pueda guardar ahí información. Tenemos que hacerlo seguro para que nadie pueda acceder excepto quien nosotros queramos. Para ello, ejecutaremos el siguiente comando en la terminal.

sudo mysql_secure_installation
Configurando MariaDB en Raspberry Pi

Este comando empezará un asistente que nos permitirá configurar cosas básicas para aumentar la seguridad de nuestras bases de datos. Apareceran varias preguntas y tendremos que contestarlas de la siguiente manera para que todo funcione correctamente y sea más seguro.

  • Enter current password for root (enter for none): Pulsa la tecla Intro
  • Set root password? [Y/n]: Y (Aquí se pregunta si queremos definir una contraseña para el administrador)
  • New password: Introducimos la contraseña para el administrador
  • Re-enter new password: Repetimos la contraseña para el administrador
  • Remove anonymous users? [Y/n]: Y (Aquí se pregunta si queremos borrar los usuarios anónimos)
  • Disallow root login remotely? [Y/n]: Y (Aquí se pregunta si queremos bloquear el acceso remoto a las bases de datos)
  • Remove test database and access to it? [Y/n]: Y (Aquí se pregunta si queremos borrar la base de datos de pruebas)
  • Reload privilege tables now? [Y/n]: Y (Aquí se pregunta si queremos volver a cargar las tablas de privilegios)

Ahora que lo tenemos todo configurado, vamos a crear la base de datos donde vamos a poner todos los datos de WordPress, para ello vamos a usar el siguiente comando en la terminar para abrir el administrador de MariaDB.

sudo mysql -u root -p

Una vez hemos entrado en el administrador del servidor de MariaDB, haremos la siguiente consulta para crear una base de datos llamada wordpress.

create database wordpress;

Para asegurarnos de que todo esta correcto, podemos ejecutar la siguiente consulta en el administrador de SQL.

show databases;
Administrador de MariaDB después de crear la base de datos para WordPress

Y ahora vamos a crear el usuario wordpressuser para la base de datos de WordPress y a darle todos los permisos de acceso. Si no hacemos esto es posible que tengamos algún problema a la hora de conectarnos a la base de datos desde WordPress. Para ello vamos a ejecutar las siguientes consultas. Recuerda que donde pone tu_contraseña puedes poner la contraseña que quieras. Este usuario que estamos creando con la contraseña que le vamos a poner nos hará falta cuando iniciemos la instalación de WordPress.

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'tu_contraseña';
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'tu_contraseña' WITH GRANT OPTION;

Para volver a la línea de comandos, escribiremos exit; y pulsaremos la tecla Intro.

Configurando el servidor web

Nos quedan un par de cosas por hacer para tener nuestro propio servidor web funcionando con WordPress. La primera de ellas es configurar NGINX para que use PHP. Para ello tenemos que modificar los archivos de configuración del servidor web y luego aplicar los cambios.

Para ello hay que decirle que puede usar el archivo index.php como archivo principal si no se indica que archivo buscar en la carpeta. También hay que decirle que tiene que hacer para entender los permalinks y como gestionar los archivos .php. Todo esto lo vamos a hacer en el archivo de configuración por defecto de NGINX. Aquí os dejo el comando que he usado para abrir nano y editar el archivo de configuración.

sudo nano /etc/nginx/sites-enabled/default

 Una vez hemos abierto el archivo de configuración, lo primero que vamos a hacer es ir a la línea 44 del archivo y añadir index.php al final de esa línea, justo antes del ; (punto y coma). Esto hará que se pueda usar también ese archivo por defecto si no indicamos ninguno en la barra de direcciones del navegador. Para saber en que línea estamos podemos pulsar Ctrl + C para verlo.

Y ahora, iremos a la línea siguiente de la llave que cierra la línea location / y haremos un salto de línea. Ahí copiaremos lo siguiente. Para copiarlo desde PuTTY solo tenemos que pulsar el botón derecho del ratón en la ventana. Desde el escritorio de Raspbian puedes hacerlo pulsando con el botón derecho y dándole a Pegar.

        location /wordpress/ {
                try_files $uri $uri/ /wordpress/index.php?q=$uri&$args;
        }


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

Antes de reiniciar el servidor web, hay que comprobar que todo funciona correctamente. Para ello, ejecutamos el siguiente comando en la terminal. Si todo aparece como en la siguiente captura, es que lo hemos hecho bien y podemos reiniciar el servidor web.

Archivo de configuracion de NGINX modificado para WordPress y PHP
sudo nginx -t
Comprobación del archivo de configuración de NGINX

Para reiniciar el servidor web, ejecutaremos lo siguiente en la terminal.

sudo service nginx restart

Instalando WordPress en nuestro servidor web

Para terminar de preparar nuestro servidor web en la Raspberry Pi, vamos a instalar WordPress. Con este gestor de contenido podemos crear blogs como este y muchas cosas más, es cuestión de ir buscando lo que nos hace falta y ponerlo en él. Para instalarlo tenemos que descargarnos la última versión y descomprimirla. En el caso de este tutorial la vamos a descomprimir en la carpeta wordpress, para que las reglas que hemos añadido a la configuración del servidor web funcionen correctamente. Para ello vamos a usar el siguiente comando en la terminal. Si todo está correcto, la pantalla se tiene que quedar como la captura que os dejo a continuación.

cd /tmp && wget https://es.wordpress.org/latest-es_ES.tar.gz
tar -zxvf latest-es_ES.tar.gz
sudo mv wordpress /var/www/html/wordpress
Descomprimiendo WordPress en la carpeta del servidor web

Ahora solo nos queda darle permisos a los archivos de WordPress para que funcionen, para ello ejecutaremos lo siguiente en la terminal.

sudo chown -R www-data:www-data /var/www/html/wordpress/
sudo chmod -R 755 /var/www/html/wordpress/

Si todo ha salido bien, ya podemos poner en nuestro navegador la dirección donde hemos instalado WordPress en nuestro servidor web y seguir el asistente. Una vez lo hemos terminado, ya podemos trastear con WordPress lo que queramos en nuestra Raspberry Pi, hasta que nos lancemos a poner nuestra web en internet.

Asistente de instalación de WordPress en nuestro servidor web montado en una Raspberry Pi

Más información:

Artículos Relacionados

2 comentarios sobre “Cómo instalar un servidor web y WordPress en una Raspberry Pi”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *