WordPress es un popular creador de sitios web y permite a los usuarios crear fácilmente sitios web, blogs, tiendas de comercio electrónico y mucho más.
En esta guía, aprenderemos a instalar WordPress en un servidor Ubuntu y a hacerle unas configuraciones básicas para mejorar la seguridad.
Requisitos
Para realizar este tutorial, necesitarás lo siguiente:
- Un entorno LAMP configurado en un servidor Ubuntu.
Paso 1 – Crear una base de datos MySQL
Nos conectamos como root a MySQL:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor...
mysql>
Ejecutamos la siguiente instrucción para crear una nueva base de datos (puedes sustituir wordpress
por el nombre que quieras darle a la base de datos):
mysql> CREATE DATABASE wordpress;
Por seguridad, es recomendable tener un usuario no-root con los privilegios suficientes para poder operar con la base de datos. Si no dispones de un usuario no-root, podemos crear uno ejecutando la siguiente instrucción (sustituye tu_usuario y tu_contraseña
por el nombre de usuario y contraseña que quieras):
mysql> CREATE USER 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña';
Una vez tengamos un usuario no-root, procedemos a otorgarle permisos para operar con la base de datos (sustituye wordpress
y tu_usuario
con tus datos):
mysql> GRANT ALL ON wordpress.* TO 'tu_usuario'@'%';
Ahora ya tenemos preparada la base de datos para nuestro sitio WordPress.
Paso 2 – Descargar WordPress
Estando conectados a nuestro servidor Ubuntu, descargamos la última versión de WordPress en castellano, con el siguiente comando:
$ wget https://es.wordpress.org/latest-es_ES.zip -P /tmp
Instalamos la herramienta unzip
para poder descomprimir archivos .zip
:
$ sudo apt install unzip
Descomprimimos el archivo latest-es_ES.zip
que descargamos anteriormente:
$ unzip /tmp/latest-es_ES.zip -d /tmp/
Al descomprimir el archivo .zip
obtendremos la carpeta wordpress
que contendrá todos los archivos de este CMS. Con el siguiente comando movemos estos archivos al directorio /var/www/html
:
$ sudo mv /tmp/wordpress/* /var/www/html/
Para mantener nuestra aplicación WordPress segura, la carpeta raíz /var/www/html
en la cual estamos alojando los archivos WordPress debe ser propiedad del usuario www-data. www-data
es el usuario que los servidores web como Apache en Ubuntu utilizan por defecto para su funcionamiento normal. Si el propietario de dicha carpeta es root o cualquier otro usuario que no sea www-data, es posible que no podamos instalar plugins, añadir temas o incluso subir archivos a nuestro sitio web desde el panel de control.
Para definir a www-data como propietario y grupo de este directorio y de todo su contenido, ejecutamos el siguiente comando:
$ sudo chown www-data:www-data -R /var/www/html
Finalmente, ejecutamos los siguientes dos comandos para aseguramos de que todos los directorios y ficheros dentro de este directorio tienen los permisos correctos:
$ sudo find /var/www/html -type d -exec chmod 755 {} \;
$ sudo find /var/www/html -type f -exec chmod 644 {} \;
Ya tenemos todo listo para proceder con la instalación de WordPress.
Paso 3 – Instalar WordPress
Para arrancar el instalador de WordPress, debemos cargar en un navegador web la página http://localhost. Si tu servidor web está en un host remoto coloca la IP de dicho host en lugar de localhost. Al hacerlo, deberíamos ver algo así:
Al pulsar el botón ¡Vamos a ello!
aparecerá un formulario que deberás completar con los datos que elegiste en el Paso 1:
Los campos Servidor de la base de datos
y Prefijo de tabla
, puedes dejarlos como vienen por defecto, excepto si la base de datos la tienes en un servidor diferente, en ese caso deberías indicar su IP en lugar de localhost.
A continuación pulsamos el botón Enviar
y posteriormente pulsamos Realizar la instalación
. Nos aparecerá un nuevo formulario en el cual deberemos introducir un título para nuestro sitio, crear una cuenta para iniciar sesión en nuestra web y un email de contacto:
Finalmente, pulsamos el botón Instalar WordPress
. Si todo ha ido bien, deberíamos ver una pantalla como esta:
Ahora ya podemos pulsar en el enlace Acceder
para iniciar sesión con las credenciales que acabamos de crear y construir nuestro sitio.
Paso 4 – Personalizar la estructura de las URL
La estructura actual de la URL de nuestras entradas es parecida a esto index.php/2024/03/07/hola-mundo/
y no es la más óptima de cara al SEO. WordPress nos ofrece la posibilidad de personalizar esta estructura de una manera sencilla entrando en Ajustes > Enlaces permanentes:
Podemos personalizar la estructura combinando las diferentes etiquetas que hay disponibles según nuestras necesidades, pero una de las estructuras más simples y limpias es la opción Nombre de la entrada
. También puedes elegir la base de la URL para las categorías y las etiquetas. Una vez realizados los cambios, pulsamos el botón Guardar cambios
.
Ahora si recargamos nuestro sitio, podemos comprobar que la URL de la entrada Hola Mundo ha cambiado a /hola-mundo
, pero el servidor nos arroja un error 404:
Esto es debido a que nuestro servidor web no está configurado para reescribir URLs. Para solucionarlo, en primer lugar debemos activar el módulo rewrite
de Apache:
$ sudo a2enmod rewrite
Luego, hay que editar el archivo de configuración del sitio:
$ sudo nano /etc/apache2/sites-available/000-default.conf
En este archivo hay que añadir el siguiente bloque de código:
<Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
De manera que nuestro archivo quede así:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
No debemos olvidarnos de hacer lo mismo con el archivo de configuración para la versión HTTPS del sitio, ya que en un futuro puede que queramos instalar certificados SSL:
$ sudo nano /etc/apache2/sites-available/default-ssl.conf
Quedando el archivo de esta manera:
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> </IfModule>
Para que los cambios surtan efecto debemos reiniciar Apache:
$ sudo systemctl restart apache2
Ahora, si volvemos a recargar la página podemos ver que el servidor web ya nos muestra su contenido correctamente:
Paso 5 – Cambiar la página de inicio de sesión
Por defecto, podemos iniciar sesión en nuestra aplicación WordPress a través de cualquiera de estas rutas:
- /wp-login.php
- /login
- /admin
Aunque no representa un problema de seguridad, es recomendable cambiar esta ruta por una personalizada. Esto se puede conseguir de distintas maneras, pero una de las más sencillas es a través de un plugin como WPS Hide Login.
Para instalar este plugin, hay que ir a Plugins > Añadir nuevo plugin. En esta página buscamos WPS Hide Login y le damos al botón Instalar ahora
:
Una vez instalado el plugin pulsamos el botón Activar
. Ahora en Ajustes
nos aparecerá la nueva opción WPS Hide Login
desde donde podemos configurar una ruta personalizada para la página de inicio de sesión:
Tras configurar la ruta y guardar los cambios, podemos ver que se puede acceder a la página de inicio de sesión a través de la ruta personalizada:
Y las rutas antiguas ya no existen:
Paso 6 – Ocultar el contenido de la carpeta uploads
En la carpeta uploads
es donde se guardan los archivos que subimos a la Biblioteca de medios
(imágenes, videos, archivos PDF, etc.) y seguramente no queramos hacerlos públicos, pero actualmente cualquier usuario que entre en http://localhost/wp-content/uploads/
podrá ver todo su contenido:
Para evitar esto, una de las soluciones es crear un archivo .htaccess
en la carpeta wp-content
:
$ sudo nano /var/www/html/wp-content/.htaccess
Dentro de este archivo escribimos la siguiente instrucción:
Options -Indexes
Tras guardar y cerrar el archivo, podemos ver que ya no se puede indexar la carpeta uploads
:
Conclusión
Hemos visto cómo preparar el entorno para poder realizar una instalación de WordPress y las primeras configuraciones básicas recomendables a realizar para crear un sitio más seguro y optimizado para SEO.