Saltar al contenido

instalar WordPress en Raspberry Pi

22 noviembre, 2019
instalar wordpress en raspberry pi

Instalar el Servidor Web Nginx

Lo primero que vamos a hacer es preparar la Raspberry pi como servidor de páginas webs, para ello vamos a instalar el servidor Open Source Nginx, he elegido nginx porque las comparativas con su competidor Apache, nginx es superior en rendimiento para envío de texto a los navegadores clientes.

# sudo apt install ngnix

Instalar MySQL en Raspbian

WordPress trabaja con bases de datos internamente, necesitamos un servidor de base de datos, instalaremos MySQL para realizar este trabajo.

# sudo apt-get install mysql-server

Segurizar MySQL en

Raspbian

# sudo mysql_secure_installation

show databases mysql
show databases mysql

Instalar php para Nginx y MySQL

Procedemos a la instalación de PHP que es un lenguaje de programación  con el que está diseñado WordPress para que funcione.

# sudo apt-get install php-fpm php-mysql

Realizamos una modificación en el fichero php.ini para salvar un posible problema de seguridad en nuestro servidor web.

# sudo nano /etc/php/7.0/fpm/php.ini

Recomiendo aumentar el tiempo máximo de ejecución para que no se produzca un time-out durante la instalación de WordPress. Incrementamos el tiempo de 30 a 300 y evitamos el mensaje de error.

# max_execution_time = 300 cgi.fix_pathinfo=0

Reiniciamos servicios de servidor web y interprete de comandos php

# sudo service php7.0-fpm restart sudo service nginx restart

Editar fichero de configuración VirtualHosts para NginX

Este fichero se encuentra en /etc/nginx/sites-available/ y se llama default y debemos proceder modificar el fichero para que se ajuste a las necesidades de Worpress.

upstream php {
server unix:/tmp/php-cgi.socket;
server 127.0.0.1:9000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php;
server_name _;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_intercept_errors on;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}

Esta información ha sido extraída de la página oficial de nginx https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Crear base de datos MySQL

Debemos crear una base de datos para que sea usada por WordPress y para ello conectaremos mediante mysql-client a nuestro servidor local mysql-server que ha sido instalado previamente.

sudo mysql -u root -p

Mostramos las bases de datos que tenemos instaladas en el sistema para no usar un nombre que ya ha sido ocupado por otra base de datos con el comando: show databases;

show databases mysql

Insertamos la sentencia SQL para crear una nueva bases de datos en MySQL para usar en wordpress donde wordpress1 sería el nombre de la base de datos. No olvides poner el (;) al final de la sentencia.

CREATE DATABASE wordpress1;

 

crear un nuevo usuario en mysql y otorgarle permisos

Conectamos a la base de datos con el nombre que hayamos elegido mediante el comando use <nombre_base_datos>

use wordpress1;

Ejecutamos la siguiente sentencia para crear un usuario de MySQL y establecer una contraseña para el mismo.

CREATE USER ‘usuarioWorpress’@’localhost’ IDENTIFIED BY ‘contraseña838’;

Establecemos los permisos de dicho usuario a las bases de datos. En este caso damos todos los permisos a todas las bases de datos para el usuario arriba indicado.

GRANT ALL PRIVILEGES ON * . * TO ‘usuarioWorpress’@’localhost’;

Hacemos efectivos los privilegios para dicho usuario

FLUSH PRIVILEGES;

Instalar Servidor FTP en Raspberry

Lo primero que necesitaremos una vez instalado el entorno Web es disponer de una gestión remota de los ficheros para cargar el WordPress en nuestro servidor. Lo podemos hacer de manera local pero lo mejor es instalar un servidor FTP. Procederemos a instalar el servidor proFTP con el siguiente comando.

sudo apt install proftpd

Creación de usuarios para FTP

El comando useradd permite añadir un usuario al sistema, en este caso para ser usado como usuario FTP, por lo que tendremos que indicarle que su directorio raiz será el del alojamiento de archivos web. La sintaxis es:

useradd [opciones] nombre-usuario

Entre las opciones a destacar tenemos:

-g: Grupo principal que queremos tenga el usuario (en este caso para el ftp usaremos www-data)
-d: Carpeta home del usuario. Suele ser /var/www/html
-m: Crear carpeta home si es que no existe.
-s: Intérprete de comandos (shell) del usuario. Suele ser /bin/bash

Quedando algo como este ejemplo:

sudo useradd -g www-data -d /var/www/palmallorca.es/public_html/ -m -s /bin/false palmallorca

Ahora debemos establecer una contraseña al usuario, para ello usaremos el comando:

sudo passwd palmallorca

No ha sido necesario reiniciar el servidor ftp para que el usuario haga su entrada.

Añadir un usuario a un grupo

Este paso no es necesario puesto que lo hemos realizado previamente con el parametro -g en el comando adduser, aún asi de manera didáctica pasamos a explicar como añadir un usuario a un grupo.
Para que el nuevo usuario creado pueda subir archivos y ser vistos por el servidor web debemos añadir el usuario al grupo www-data, que es el grupo por defecto del servidor web. para ello usaremos el siguiente comando:
// Añadir a ‘palmallorca’ al grupo ‘www-data’
sudo adduser palmallorca www-data
De esta manera con unos permisos 755, donde el x5x son los permisos del grupo, podremos leer y ejecutar

Enjaular usuario ftp desde proftpd

Para enjaular un usuario creado en su directorio home creado previamente debemos activar las dos directivas siguientes quitando el comentario # desde el archivo de configuración de proftpd que se encuentra en:

sudo nano /etc/proftpd/proftpd.conf

y editando el archivo descomentando las linteas «DefaultRoot ~» y «RequireValidShell off»

# Use this to jail all users in their homes
DefaultRoot ~
# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
RequireValidShell off