Apuntes mientras aprendo sobre software y computadoras.

diseño web

Cómo instalar un entorno local de WordPress usando LAMP en Linux


En este breve apunte vamos a revisar cómo instalar un entorno de desarrollo de WordPress en Linux.

Ocurre lo siguiente: estoy intentando actualizar el tema de mi sitio utilizando WordPress. Si bien analicé otras opciones, como por ejemplo pasarme a un sitio estático, creo que todavía me quedan algunas cosas por aprender en WordPress. Por ejemplo desarrollar mi propio tema.

El problema con todo esto es que para empezar necesito poder probar lo que estoy haciendo directamente en mi máquina. Probar cada ligero cambio directamente en el hosting real de la página parece una cantidad innecesaria de esfuerzo.

Para continuar necesito alguna forma de poder utilizar WordPress localmente en mi máquina con el sistema operativo Linux.

Con el objetivo de realizar esto hay varias opciones.

Algunas de estas opciones implican una solución que demanda instalar programa especialmente dedicado. Otras opciones implican utilizar un ecosistema de programas, como por ejemplo Xampp: Apache + MariaDB + PHP + Perl.

En esta oportunidad vamos a utilizar un ecosistema llamado LAMP, la combinación de: Linux, Apache, MySQL y PHP.

Cómo instalar WordPress usando LAMP en Linux

Estoy utilizando Linux Mint, que es un sistema operativo basado en Debian. De todas formas estos pasos pueden seguirse más o menos sin cambios en otros sistemas operativos.

Debian tiene una guía en su Wiki para instalar LAMP y también tiene una guía para instalar WordPress de forma local.

Por supuesto este material no reemplaza las guías oficiales, mi intención es transmitir mi experiencia de instalación y agregar la mayor cantidad de atajos para configurar todo lo más rápido posible.

Paso 1: instalar Apache

El servidor Apache va a servir de host para nuestro sitio WordPress. Voy a instalarlo con:

apt install apache2 apache2-doc

Es bueno saber que en caso de necesitarlo, el servidor Apache puede inciarse con el comando:

sudo systemctl start apache2

Y puedo utilizar este otro comando para ver si el servidor funciona correctamente:

sudo systemctl status apache2

Pero olvidemos esto último. Lo que puedo hacer es escribir el siguiente comando, que va a hacer que Apache se active al iniciarse el equipo y nos va a evitar usar el comando “start” cada vez que iniciamos la máquina:

sudo systemctl enable apache2

Lo que puede ser desactivado utilizando:

sudo systemctl disable apache2

En cualquier caso, si ya instalé Apache puedo abrir esta dirección en mi navegador (http:/127.0.0.1):

http://localhost/

Y si todo funciona bien, voy a encontrarme la página default de Apache siendo servida.

Hay que tener en cuenta que Apache sirve el contenido desde este directorio raíz:

/var/www/html

Por lo que en este momento estamos viendo el archivo “index.html” de ese directorio.

Paso 2: instalar y confugyrar Mysql (MariaDB)

MariaDB va a guardar todos los datos de la instalación de WordPress.

sudo apt install mariadb-server mariadb-client

Asegurar la instalación de MariaDB

Lo siguiente que necesito hacer es asegurar la instalación de MariaDB. Esto merece algunas consideraciones extras.

Primero tengo que utilizar el siguiente comando:

sudo mysql_secure_installation

Esto me va a presentar una serie de opciones.

Enter current password for root (enter for none):

Básicamente me pide la contraseña par la cuenta root. Siendo que no hay ninguna de momento, presiono directamente enter.

Lo que entiendo que ocurre es que MariaDB confía directamente en la cuenta root del sistema, por lo que no necesito crear una super cuenta específica para este caso. Pero luego puedo crear cuentas y contraseñas dedicadas para cada base de datos.

Switch to unix_socket authentication [Y/n]

Otra vez presiono “n”, al parecer desde la versión “10.5”” esto viene autorizado por defecto. Supongo que entonces al presionar “n” quiero decir en realidad “y”. Pero la frase parece escrita de forma extraña, no voy a mentir.

Luego sigue:

Change the root password? [Y/n]

Presiono “n”, porque no quiero crear una cuenta root para MariaDB.

Luego sigue:

Remove anonymous users? [Y/n]

Al parecer al instalar MariaDB por primera vez, el sistema tiene una cuenta anónima paraque podamos hacer algunas pruebas. Siendo que en nuestro caso estamos pensando en utilizar el programa directamente, podemos presionar “y” para seguir adelante.

Lo que sigue es:

Disallow root login remotely? [Y/n]

Y otra vez vamos a presionar “Y”, porque no nos interesa que alguien pueda conectarse a nuestra base de datos de forma remota utilizando la cuenta root del sistema, si es que consiguen adivinarla.

Remove test database and access to it? [Y/n]

A esta pregunta la respondemos de nuevo “y”. MariaDB crea una tabla de prueba para que usemos de test, pero no nos interesa conservarla.

Reload privilege tables now? [Y/n]

Y de nuevo presionamos “y” para que los cambios tomen efectos.

En resumen la totalidad del cuestionario queda de la siguiente forma:

Enter current password for root (enter for none): enter 
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Comandos para usar MariaDB

De la misma forma que hice con Apache, puedo iniciar MariaDB directamente al iniciar el equipo usando este comando por única vez. Escribo:

sudo systemctl enable mariadb

De otra forma puedo iniciar el programa en cualquier momento con el comando:

sudo systemctl enable mariadb

Y puedo revisar si esta funcionando correctamente con el comando:

sudo systemctl status mariadb

Instalar PHP

PHP es el lenguaje que va a procesar el contenido de la página web en el navegador.

Para instalarlo utilizo el comando:

sudo apt install php libapache2-mod-php php-mysql

Revisar que todo funciona hasta el momento

Para que los complementos instalados se recarguen en Apache, utilizo este comando:

sudo systemctl restart apache2

Luego creamos un arcivo PHP, y lo abrimos con Nano (utilizo Nano para hacer rápido, es posible usar Neovim o cualquier otra herramienta)

sudo nano /var/www/html/info.php

Y agrego esto en el nuevo archivo:

<?php 
phpinfo();
?>

Ahora puedo revisar en el navegador la dirección:

http://127.0.0.1/info.php

Si todo funciona correctamente voy a encontrarme una tabla con información de PHP.

En este momento si todo salió bien voy a borrar este archivo “info.php” y el archivo “index.html” original.

Crear una base de datos MariaDB para WordPress

Entro a Maria DB desde la terminal con el comando:

sudo mariadb -u root

Creo la base de datos para WordPress, según el nombre de mi proyecto:

CREATE DATABASE miproyecto;

Y ahora genero una cuenta y contraseña para esa base de datos (reemplazando “wpuser” con el nombre de la cuenta y “password” con mi contraseña):

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON miproyecto.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;

Y salgo con el comando:

quit

Conseguir los archivos de WordPress

Ya sabemos que Apache sirve los archivos desde el directorio:

/var/www/html

Por lo que vamos a crear una nueva carpeta ahí dentro (en este ejemplo “proyecto.com”) para instalar WordPress y usarlo en nuestro entorno de producción:

sudo mkdir -p /var/www/html/proyecto.com/src

Y vamos a entrar a ese directorio:

cd /var/www/html/proyecto.com/src

El directorio es “src” porque ahí vamos a guardar los archivos de “source” o “fuente” de la descarga original.

Consigo los archivos necesarios de WordPress con este comando:

sudo wget http://wordpress.org/latest.tar.gz

Extraigo los archivos:

sudo tar -xvf latest.tar.gz

Ahora voy a crear el directorio “public_html”:

sudo mkdir -p /var/www/html/proyecto.com/public_html

Y vamos a mover ahí la carpeta que recientemente descargamos de WordPress (nos va a quedar una copia original en “src”)

sudo mv wordpress/* /var/www/html/proyecto.com/public_html

Si ahora entramos a “public_html” vamos a encontrar que tenemos todos los archivos de nuestra instalación de WordPress.

Puedo entrar a visitar el sitio siguiendo la dirección de localhost en el navegador, para este caso de mi ejemplo:

http://127.0.0.1/proyecto.com/public_html

Configurar WordPress

Ahora me dirijo al directorio “public_html”.

Acto seguido cambio el nombre del archivo:

wp-config-sample.php

Por el nombre:

wp-config.php

Ahora voy a abrir este archivo utilizando Neovim (puede ser otro programa como Nano, pero ahora estoy tratando de acostumbrarme a Neovim)

nvim wp-config.php

Dónde tengo que cambiar estos datos:

/** The name of the database for WordPress */ define( 'DB_NAME', 'database_name_here' );
/** Database username */ define( 'DB_USER', 'username_here' );
/** Database password */ define( 'DB_PASSWORD', 'password_here' );

Por la misma información de la base de datos que utilicé antes, cuando establecí la base de datos para el proyecto en MariaDB (por ejemplo, en “username_here” va el nombre de la cuenta que hice para esa base de dato).

Para terminar reinicio Apache y Maria DB con estos comandos:

sudo systemctl restart apache2.service 
sudo systemctl restart mysql.service

Instalar WordPress en cinco minutos

Ya tengo que estar en una pestaña de mi navegador, siguiendo:

http://127.0.0.1/proyecto.com/public_html

Al actualizar el navegador, WordPress me va a pedir nuevos datos. Nuevo nombre de cuenta y contraseña para este sitio en particular. Cualquier correo de fantasía puede servir, no tiene porque ser real. Tenemos la posibilidad de corregir esta información desde nuestra base de datos.

Y listo, si le doy continuar la instalación va a seguir su curso.

Ahora puedo ingresar mis credenciales y ya tengo una versión de desarrollo de WordPress funcionando en mi propia máquina.

Siempre puedo visitar el sitio y revisar las modificaciones que le hago a los temas visitando la misma dirección que dirige a mi localhost.

Facilitar la instalación de plugins y temas (importante)

Desde un principio WordPress utiliza las credenciales FTP (File Transfer Protocol) para realizar la acción de por ejemplo instalar plugins.

Para evitar que esta ventana nos aparezca pidiendo estos datos, puedo entrar a wp-config.php y agregar:

/** Bypass FTP 
*/ define('FS_METHOD', 'direct');

El documento “config.php” tiene una parte para ingresar “custom values” (código extra) antes del llegar al final.

Luego de guardar el archivo utilizo el comando en la terminal:

sudo chown -R www-data:www-data /var/www/html/proyecto.com

Y listo, con esto voy a poder instalar plugins sin inconvenientes.

Extra: instalar módulos PHP

Como un extra no es mala idea instalar los siguientes módulos PHP para ampliar algunas funcionalidades:

sudo apt install php-curl
sudo apt install php-xml
sudo apt install php-imagick
sudo apt install php-mbstring
sudo apt install php-zip
sudo apt install php-intl

Esta instalación la hago desde la terminal de Linux.

Luego reinicio el servidor:

sudo service apache2 restart

Y puedo conocer los módulos PHP instalados con el comando:

php -m

Conclusión

Con esto termino este breve apunte sobre cómo instalar una versión de desarrollo de WordPress en mi equipo.

Para hacer esto tuvimos que conseguir el stack de programas LAMP. Al haber hecho esto vamos a tener también a nuestra disposición un servidor local para crear otro tipo de proyectos.

Podemos ademas cera nuevos directorios, para probar proyectos en distintas instalaciones de WordPress.

¿Te sirvió la información? Podes escribirme un correo para contarme tu opinión o para darme tus críticas.

La seguimos en el próximo apunte.

Leave a Reply