Instalar WordPress en una Raspberry Pi.

Sigo liado con el servidor web en mi Raspberry Pi, y ya que es lo que he estado haciendo estos días, hoy te explico cómo instalar WordPress en una Raspberry Pi. Antes de seguir, sería conveniente que siguieras este otro tutorial, en el que te explico cómo montar un servidor web en tu Raspberry Pi. Además, quizá te interese también éste otro tutorial, en el que te explico cómo controlar tu Raspberry Pi desde cualquier otro ordenador por medio de SSH.

1. Configurar base de datos MySQL para WordPress.

Creando la base de datos.

Una vez tenemos nuestro servidor web configurado en la Raspberry Pi, lo primero que debemos hacer es configurar una base de datos para WordPress. Para ello, debemos ejecutar el siguiente comando en un terminal de Raspbian:

mysql -u root -p

Nos pedirá la contraseña que indicamos para el usuario root cuando configuramos MySQL al montar el servidor web. Tras introducirla, veremos algo similar a esto:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.5.54-0+deb8u1 (Raspbian)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Hemos ejecutado mysql en nuestra Raspberry, y ahora estamos en la consola de comandos de MySQL. Es hora de crear la base de datos que alojará todo lo relativo a nuestro WordPress. Para ello, en la consola de MySQL, ejecutamos la siguiente instrucción:

CREATE DATABASE IF NOT EXISTS [nombre de la base de datos];

Donde “[nombre de la base de datos]” será el nombre que quieras darle a la base de datos. En mi caso ha sido “wordpress”, quedando mi instrucción de la siguiente forma:

CREATE DATABASE IF NOT EXISTS wordpress;

Al ejecutarla, la consola nos devolverá el siguiente mensaje:

Query OK, 1 row affected (0.00 sec)

mysql>

La base de datos se ha creado con éxito. Ahora es momento de crear un usuario para dicha base de datos. Eso lo haremos ejecutando la siguiente instrucción:

CREATE USER '[nombre de usuario]'@'localhost' IDENTIFIED BY '[contraseña de la base de datos]';

Donde “[nombre de usuario]” será el nombre de usuario que quieras darle y “[contraseña de la base de datos]” la contraseña para ese usuario. En mi caso he escogido “root_raspberry” y “pi” para la contraseña, por lo que mi instrucción ha quedado así:

CREATE USER 'root_raspberry'@'localhost' IDENTIFIED BY 'pi';

Al ejecutar la instrucción, la consola nos devolverá un mensaje similar al de antes.

Query OK, 0 rows affected (0.00 sec)

mysql>

Ahora vamos a otorgarle los privilegios necesarios al usuario para poder operar en la base de datos. Esto lo haremos con la siguiente instrucción:

GRANT ALL PRIVILEGES ON [nombre de la base de datos].* TO '[nombre de usuario]'@'localhost';

Donde “[nombre de la base de datos]” es el nombre que le dimos a la base de datos al principio, “[nombre de usuario]” es el nombre de usuario que indicamos hace un par de instrucciones, y “[alias]” es un alias que queramos darle al usuario. En mi caso, la instrucción queda de la siguiente forma:

GRANT ALL PRIVILEGES ON wordpress.* TO 'root_raspberry'@'localhost';

Volveremos a ver el mismo mensaje de que todo ha ido bien.

Query OK, 0 rows affected (0.00 sec)

Y ejecutamos la siguiente instrucción para salir de la consola de MySQL:

exit

Veremos cómo la consola se despide de nosotros con un “Bye”, y volveremos a ver el prompt de la consola como siempre:

pi@raspberry:~ $
Dotando a nuestra base de datos de algo más de seguridad.

Ya hemos creado la base de datos para nuestro WordPress, pero ahora es necesario asegurarla un poco. Para ello, vamos hacer lo siguiente:

Ejecutamos la siguiente instrucción en un terminal de la Raspberry:

sudo /usr/bin/mysql_secure_installation

Al hacerlo, veremos el siguiente mensaje solicitándonos la contraseña de MySQL:

Enter current password for root (enter for none):

Al introducirla, la consola nos hará una serie de preguntas. La primera será la siguiente:

Change the root password? [Y/n]

A la que responderemos que no tecleando una “n” y pulsando Enter. Luego veremos estas otras a las que responderemos que sí tecleando una “y” y pulsando Enter:

Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

Al terminar, la consola nos dará las gracias y volveremos a ver el prompt de Raspbian.

pi@raspberry:~ $

2. Instalar y configurar WordPress.

Instalando WordPress.

Ya tenemos la base de datos creada y configurada para alojar WordPress. Ahora es hora de instalar WordPress. Para ello, en el terminal de Raspbian, ejecutamos la siguiente instrucción:

sudo apt-get install wordpress

Al ejecutarla veremos que la consola empieza a imprimir una serie de mensajes y de repente para con la siguiente pregunta:

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
  libao-common libao4 libjs-cropper libjs-mediaelement libjs-prototype libjs-scriptaculous libphp-phpmailer php-getid3 vorbis-tools wordpress-l10n wordpress-theme-twentyfifteen
Se instalarán los siguientes paquetes NUEVOS:
  libao-common libao4 libjs-cropper libjs-mediaelement libjs-prototype libjs-scriptaculous libphp-phpmailer php-getid3 vorbis-tools wordpress wordpress-l10n
  wordpress-theme-twentyfifteen
0 actualizados, 12 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 9.052 kB de archivos.
Se utilizarán 52,4 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]

A la que responderemos que sí tecleando una “s” y pulsando Enter. A continuación, la consola seguirá mostrando mensajes, hasta que vuelva a salir el prompt de raspbian.

Configurando WordPress.

Ya tenemos instalado WordPress en nuestra Raspberry. Ahora, vamos a terminar de configurarlo. Lo siguiente que debemos hacer es crear un enlace a la carpeta WordPress. Para ello, ejecutamos el siguiente comando:

sudo ln -s /usr/share/wordpress /var/www/html/[nombre del wordpress]

Donde “[nombre del wordpress]” es el nombre que quieras darle a tu WordPress.

Ahora hacemos una copia del fichero de configuración de WordPress al directorio de WordPress con el siguiente comando:

sudo cp /usr/share/wordpress/wp-config-sample.php /etc/wordpress/config-default.php

Y modificamos la configuración de WordPress para la conexión con la base de datos. Para ello modificamos el fichero “config-default.php” con el siguiente comando:

sudo nano /etc/wordpress/config-default.php

Al ejecutar el comando, veremos algo similar a esto:

<?php
/**
 * The base configurations of the WordPress.
 *
 * This file has the following configurations: MySQL settings, Table Prefix,
 * Secret Keys, and ABSPATH. You can find more information by visiting
 * {@link http://codex.wordpress.org/Editing_wp-config.php Editing wp-config.php}
 * Codex page. You can get the MySQL settings from your web host.
 *
 * This file is used by the wp-config.php creation script during the
 * installation. You don't have to use the web site, you can just copy this file
 * to "wp-config.php" and fill in the values.
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', '[nombre de la base de datos]');

/** MySQL database username */
define('DB_USER', '[nombre de usuario de la base de datos]');

/** MySQL database password */
define('DB_PASSWORD', '[contraseña de la base de datos]');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

/**#@-*/

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each a unique
 * prefix. Only numbers, letters, and underscores please!
 */
$table_prefix  = 'wp_';

/**

Donde tenemos que modificar “[nombre de la base de datos]”, “[nombre de usuario de la base de datos]” y “[contraseña de la base de datos]” por los datos correspondientes que indicaste en el primer paso del tutorial.

Probando nuestro WordPress.

¡Y ya está! Si todo ha ido bien, ya puedes acceder a tu WordPress poniendo en la barra de direcciones de tu explorador algo como esto:

http://[dirección IP de tu Raspberry]/[nombre de tu WordPress]

Donde “[dirección IP de tu Raspberry]” es (¡sorpresa!) la dirección IP privada de tu Raspberry y “[nombre de tu WordPress]” (¡sorpresa otra vez!) es el nombre que le dieras a tu WordPress en el momento en que hiciste el enlace.

Al hacerlo verás algo similar a esto:

Instalar WordPress en una Raspberry Pi

Se trata del menú de configuración de tu WordPress. ¡Sigue los pasos y tendrás tu WordPress listo en 5min!

[ACTUALIZACIÓN]

Al configurar el WordPress y querer actualizar los plugins, themes e idiomas, me di cuenta de que había que configurar un servidor FTP en la Raspberry Pi. Me di cuenta al ver una pantalla como la de la siguiente imagen.

Instalar WordPress en una Raspberry Pi

 

Tras poner en “Servidor” la dirección IP de mi Raspberry, en “Usuario FTP” e nombre de usuario de mi Raspberry, y en “Contraseña FTP” la contraseña de mi Raspberry, me decía que no lograba iniciar la conexión FTP. Así que me puse a googlear un poco, y encontré la solución en este enlace, aunque tuve que hacer alguna variación, así que aquí va el tercer paso:

3. Configurando servidor FTP para WordPress.

Ya tenemos nuestro WordPress instalado y configurado en nuestra Raspberry Pi. Sin embargo, para que podamos sacar todo el partido necesario a nuestro WordPress, será necesario configurar un servidor FTP en nuestra Raspberry Pi para que WordPress pueda descargar los diferentes plugins y themes, y sus actualizaciones. Esto no nos llevará mucho tiempo. Según el enlace de Máquinas Virtuales, lo primero que debemos hacer es darnos permisos en el directorio de la web. Eso lo haremos con el siguiente comando:

sudo chown -R pi /var/www/[nombre de tu wordpress]

A continuación debemos ejecutar el siguiente comando para instalar el servidor FTP en nuestra Raspberry:

sudo apt-get install vsftpd

Cuando el terminal termina de mostrar mensajes de la instalación, configuramos el servidor FTP. Para ello, lo primero que haremos será limitar el acceso a cualquier usuario creando el siguiente directorio:

sudo mkdir -p /etc/vsftpd/users

Dentro de ese directorio generamos un fichero para un usuario del sistema. Lo haremos con este comando:

sudo nano /etc/vsftpd/users/[nombre de tu wordpress]

Dentro escribimos lo siguiente:

dirlist_enable=YES
download_enable=YES
local_root=/var/www
anon_upload_enable=YES
anon_world_readable_only=NO
write_enable=YES

Hacemos lo mismo para el resto de usuarios. Creamos un fichero para los demás con el comando siguiente:

sudo nano /etc/vsftpd/users/invitado

Dentro escribimos lo siguiente:

dirlist_enable=YES
download_enable=YES
write_enable=NO

Para que esto sea efectivo, editamos el archivo .conf de vsftpd. Pero antes le hacemos una copia de seguridad con este comando:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old

Y lo editamos con el comando de siempre:

sudo nano /etc/vsftpd.conf

Añadimos la siguiente línea al final del fichero:

user_config_dir=/etc/vsftpd/users

Y reiniciamos el servicio FTP con el siguiente comando:

sudo service csftpd restart

Con todo esto no se solucionó el problema, pero sí que logré que al menos WordPress me hiciera la conexión con el servidor FTP. Ahora el error que me devolvía era que no podía crear los directorios necesarios para las actualizaciones por no tener los permisos necesarios. Así que me desplacé hasta la raíz de mi WordPress con el siguiente comando:

sudo cd /var/www/html/[nombre de mi WordPress]

Y ejecuté el siguiente comando:

sudo chmod 777 wp-content

Luego me desplacé dentro del directorio “wp-content” con este comando:

sudo cd wp-content

Y cambié los permisos de todos los directorios que hay dentro, ejecutando el siguiente comando:

sudo chmod 777 languages && sudo chmod 777 plugins && sudo chmod 777 themes && sudo chmod 777 upgrade

¡Y nada más! Ya con esto me dejó actualizar todo desde el Dashboard de WordPress. Como siempre, cualquier sugerencia o consulta podéis hacérmela llegar enviando un correo electrónico a sugerencias@manusoft.es o dejando un comentario en la entrada. ¡Muchas gracias por visitar ManuSoft.es!