Cómo instalar WordPress en Ubuntu 20.04 con una pila LAMP

Introducción

WordPress es una tecnología de código abierto extremadamente popular para crear sitios web en el Internet actual. Usado por el 63 % de los sitios web que utilizan un sistema de gestión de contenidos (GMS), los sitios de WordPress representan el 36 % de todos los sitios web que están en línea actualmente.

Existen muchos enfoques diferentes para obtener acceso a WordPress y algunos procesos de configuración son más complejos que otros. Este tutorial está destinado para aquellos que desean instalar y administrar una instancia WordPress en un servidor en la nube no gestionado a través de la línea de comandos. Aunque este enfoque requiere más pasos que una instalación WordPress ya hecha, ofrece a los administradores mayor control sobre su entorno de WordPress.

Si lo que desea es acceder a una instalación de WordPress ya lista, DigitalOcean Markeplace ofrece una aplicación con solo un clic para comenzar con WordPress a través de la instalación cuando prepara su servidor.

Dependiendo de sus necesidades y objetivos, puede encontrar otras opciones que son más adecuadas. Como software de código abierto, WordPress puede descargarse e instalarse de forma gratuita, pero para que esté disponible en la web, probablemente necesite una infraestructura en la nube y un nombre de dominio. Siga esta guía si está interesado en trabajar a través de la instalación del lado del servidor y configurar un sitio WordPress.

Este tutorial usará una pila LAMP (Linux, Apache, MySQL y PHP), que es una opción para una arquitectura de servidor compatible con WordPress proporcionando el sistema operativo Linux, el servidor web Apache, la base de datos MySQL y el lenguaje de programación PHP. Instalaremos y configuraremos WordPress a través de LAMP en un servidor Linux Ubuntu 20.04.

Requisitos previos

Para completar este tutorial, necesitará acceso a un servidor Ubuntu 20.04 y necesitará completar estos pasos antes de comenzar esta guía:

  • Configure su servidor siguiendo nuestra Guía de configuración inicial del servidor Ubuntu 20.04, y asegúrese de tener un usuario sudo no root.
  • Instale una pila LAMP siguiendo nuestra Guía sobre LAMP para instalar y configurar este software.
  • Proteja su sitio: WordPress asume la entrada del usuario y almacena datos del usuario, de forma que es importante tener una capa de seguridad. TLS/SSL es la tecnología que le permite cifrar el tráfico de su sitio para que su conexión y la de sus usuarios sea segura. Aquí tiene dos opciones disponibles para cumplir con este requisito:
    • Si tiene nombre de dominio, puede proteger su sitio con Let´s Encrypt, que proporciona certificados de confianza gratuitos. Para la configuración, siga nuestra guía de Let’s Encrypt para Apache.
    • Si no cuenta con un dominio y solo utiliza esta configuración para pruebas o cuestiones personales, puede emplear en su lugar un certificado autofirmado. Le proporciona el mismo tipo de cifrado, pero sin la validación del dominio. Para la configuración, siga nuestra guía de SSL autofirmados para Apache.

Cuando complete los pasos de configuración, inicie sesión en su servidor como usuario sudo y continúe.

Paso 1: Creación de una base de datos de MySQL y un usuario para WordPress

El primer paso que daremos es preparatorio. WordPress utiliza MySQL para administrar y almacenar el sitio y la información del usuario. Ya instalamos MySQL, pero debemos crear una base de datos y un usuario para que use WordPress.

Para comenzar, inicie sesión en la cuenta root de MySQL (administrativa) emitiendo este comando (tenga en cuenta que este no es el usuario root de su servidor):

  • mysql -u root -p

Una vez instalado el software le solicitará la contraseña que configuró para la cuenta root de MySQL.

Nota: Si no puede acceder a su base de datos MySQL a través de root, como usuario sudo puede actualizar la contraseña de su usuario root iniciando sesión en la base de datos de esta forma:

  • sudo mysql -u root

Una vez que reciba la instrucción de MySQL, puede actualizar la contraseña del usuario root. Aquí, sustituya new_password por una contraseña segura de su elección.

  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

Ahora puede escribir EXIT; y puede volver a iniciar sesión en la base de datos a través de la contraseña con el siguiente comando:

  • mysql -u root -p

En la base de datos, puede crear una base de datos exclusiva para que WordPress la controle. Puede ponerle el nombre que quiera, pero usaremos el nombre wordpress en esta guía. Cree la base de datos para WordPress escribiendo lo siguiente:

  • CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Nota: Cada instrucción de MySQL debe terminar en punto y coma (;). Asegúrese de que esto no falte si experimenta problemas.

A continuación, crearemos una cuenta de usuario separada de MySQL que usaremos exclusivamente para realizar operaciones en nuestra nueva base de datos. Crear bases de datos y cuentas específicas puede ayudarnos desde el punto de vista de administración y seguridad. Usaremos el nombre wordpressuser en esta guía, pero puede usar el nombre que sea más relevante para usted.

Crearemos esta cuenta, configuraremos una contraseña y concederemos acceso a la base de datos que hemos creado. Podemos hacerlo escribiendo el siguiente comando. Recuerde elegir una contraseña segura aquí para su usuario de base de datos donde tenemos password:

  • CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

A continuación, deje saber a la base de datos que nuestro wordpressuser debería tener acceso completo a la base de datos que configuramos:

  • GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';

Ahora tiene una base de datos y una cuenta de usuario, creadas específicamente para WordPress. Debemos eliminar los privilegios de modo que la instancia actual de MySQL sepa sobre los cambios recientes que hemos realizado:

  • FLUSH PRIVILEGES;

Cierre MySQL escribiendo lo siguiente:

  • EXIT;

En el siguiente paso, crearemos la base para los complementos de WordPress descargando extensiones PHP para nuestro servidor.

Paso 2: Instalación de extensiones de PHP adicionales

Cuando configuramos nuestra pila LAMP, solo necesitamos un conjunto de extensiones muy reducido para que PHP se comunicara con MySQL. WordPress y muchos de sus complementos aprovechan las extensiones de PHP adicionales.

Podemos descargar e instalar algunas de las extensiones de PHP más populares para usarlas con WordPress escribiendo lo siguiente:

  • sudo apt update
  • sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

Esto sentará las bases para instalar complementos adicionales en nuestro sitio WordPress.

Nota: Cada complemento de WordPress tiene su propio conjunto de requisitos. Para algunos, posiblemente sea necesario instalar paquetes de PHP adicionales. Compruebe la documentación de sus complementos para ver sus requisitos de PHP. Si están disponibles, pueden instalarse con apt como ya se ha mostrado.

Necesitaremos reiniciar Apache para cargar estas nuevas extensiones; realizaremos más configuraciones en Apache en la próxima sección, así que puede esperar hasta entonces o reiniciar ahora para completar el proceso de extensión de PHP.

  • sudo systemctl restart apache2

Paso 3: Ajuste de la configuración de Apache para permitir reemplazos y reescrituras .htaccess

A continuación, realizaremos algunos ajustes de menor importancia en nuestra configuración de Apache. Conforme a los tutoriales de los requisitos previos, debe tener un archivo de configuración para su sitio en el directorio /etc/apache2/sites-available/.

En esta guía, utilizaremos /etc/apache2/sites-available/wordpress.conf, pero debe sustituir la ruta a su archivo de configuración cuando proceda. Además, emplearemos /var/www/wordpresscomo el directorio root de nuestra instalación de WordPress. Debería usar el root web especificada en su propia configuración. Si siguió nuestro tutorial LAMP, puede ser su nombre de dominio en vez de wordpress en ambas instancias.

Nota: Es posible que utilice la configuración predeterminada 000-default.conf (con /var/www/html como su root web). Se puede usar si solo va a alojar un sitio web en este servidor. En caso negativo, resulta mejor dividir la configuración necesaria en chunks lógicos, un archivo por sitio.

Con nuestras rutas identificadas, podemos pasar a trabajar con .htaccess de forma que Apache pueda manejar los cambios en la configuración directorio por directorio.

Habilitar reemplazos .htaccess

Actualmente, el uso de archivos .htaccess está desactivado. WordPress y muchos de sus complementos utilizan estos archivos de forma amplia para realizar ajustes de comportamiento del servidor web dentro del directorio.

Abra el archivo de configuración de Apache para su sitio web con un editor de texto como nano.

  • sudo nano /etc/apache2/sites-available/wordpress.conf

Para permitir archivos .htaccess, debemos configurar la directiva AllowOverride dentro de un bloque Directory orientado a nuestro root de documentos. Agregue el siguiente bloque de texto dentro del bloque VirtualHost en su archivo de configuración. Asegúrese de utilizar el directorio root web correcto:

/etc/apache2/sites-available/wordpress.conf

<Directory /var/www/wordpress/>     AllowOverride All </Directory> 

Cuando termine, guarde y cierre el archivo. En nano, puede hacer esto pulsando CTRL y X juntos, luego Y, y luego ENTER.

Habilitar el módulo de reescritura

A continuación, podemos habilitar mod_rewrite para usar la característica de permalink de WordPress:

  • sudo a2enmod rewrite

Esto le permite tener permalinks a sus publicaciones más legibles por el ser humano, como en los siguientes dos ejemplos:

http://example.com/2012/post-name/ http://example.com/2012/12/30/post-name 

El comando a2enmod invoca una secuencia de comandos que habilita el módulo especificado en la configuración Apache.

Habilitar los cambios

Antes de implementar los cambios realizados, compruebe que no hay errores de sintaxis ejecutando la siguiente prueba.

  • sudo apache2ctl configtest

Puede recibir un resultado como el siguiente:

OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK 

Si desea eliminar la línea superior, simplemente agregue una directiva ServerName a su archivo de configuración principal (global) de Apache en /etc/apache2/apache2.conf. ServerName puede ser el dominio o la dirección IP de su servidor. Este es solo un mensaje, sin embargo, y no afecta a la funcionalidad de su sitio. En tanto el resultado contenga Sintaxis OK, podrá continuar.

Reinicie Apache para implementar los cambios: Asegúrese de reiniciar ahora, incluso si ha reiniciado anteriormente en este tutorial.

  • sudo systemctl restart apache2

A continuación, descargaremos y configuraremos el propio WordPress.

Paso 4: Descargar WordPress

Ahora que el software de nuestro servidor está configurado, podemos descargar y configurar WordPress. Preferentemente por motivos de seguridad, siempre se recomienda obtener la versión más reciente de WordPress del sitio del producto.

Cambie a un directorio que permita la escritura (recomendamos uno temporal como /tmp) y descargue la versión comprimida.

  • cd /tmp
  • curl -O https://wordpress.org/latest.tar.gz

Extraiga el archivo comprimido para crear la estructura de directorios de WordPress:

  • tar xzvf latest.tar.gz

Moveremos estos archivos a nuestro root de documentos por ahora. Antes de hacerlo, podemos añadir un archivo ficticio .htaccess de modo que esté disponible para que WordPress lo use más adelante.

Cree el archivo escribiendo lo siguiente:

  • touch /tmp/wordpress/.htaccess

También copiaremos sobre el archivo de configuración de muestra al nombre de archivo que lee WordPress:

  • cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

También podemos crear el directorio de actualización, de modo que WordPress no tenga problemas de permisos al intentar hacerlo por su cuenta siguiendo una actualización a su software:

  • mkdir /tmp/wordpress/wp-content/upgrade

Ahora podemos copiar todo el contenido del directorio en nuestro root de documentos. Usaremos un punto al final de nuestro directorio de origen para indicar que todo lo que está dentro del directorio debe copiarse, incluyendo archivos ocultos (como el archivo .htaccess que hemos creado):

  • sudo cp -a /tmp/wordpress/. /var/www/wordpress

Asegúrese de sustituir el directorio /var/www/wordpress por el directorio que haya configurado en su servidor.

Paso 5: Configurar el directorio de WordPress

Antes de realizar la configuración basada en web de WordPress, debemos ajustar algunos elementos en nuestro directorio de WordPress.

Realizar ajustes de propiedad y permisos

Un paso importante que debemos lograr es configurar permisos de archivo razonables y la propiedad.

Empezaremos por dar la propiedad de todos los archivos al usuario y al grupo www-data. Este es el usuario como el que se ejecuta el servidor web Apache, y este último deberá poder leer y escribir archivos de WordPress para presentar el sitio web y realizar actualizaciones automáticas.

Actualice la propiedad con el comando chown que le permite modificar la propiedad del archivo. Asegúrese de apuntar al directorio relevante de su servidor.

  • sudo chown -R www-data:www-data /var/www/wordpress

A continuación, ejecutaremos dos comandos find para establecer los permisos correctos de los directorios y archivos de WordPress:

  • sudo find /var/www/wordpress/ -type d -exec chmod 750 {} ;
  • sudo find /var/www/wordpress/ -type f -exec chmod 640 {} ;

Estos permisos deberían hacer que pueda trabajar de forma efectiva con WordPress, pero tenga en cuenta que algunos complementos y procedimientos pueden requerir ajustes adicionales.

Configurar el archivo de configuración de WordPress

Ahora, debemos realizar algunos cambios en el archivo de configuración principal de WordPress.

Cuando abramos el archivo, nuestra primera tarea será ajustar algunas claves secretas para proporcionar un nivel de seguridad a nuestra instalación. WordPress proporciona un generador seguro para estos valores, para que no tenga que crear valores correctos por su cuenta. Solo se utilizan internamente, de modo que no dañará la usabilidad el tener valores complejos y seguros aquí.

Para obtener valores seguros del generador de claves secretas de WordPress, escriba lo siguiente:

  • curl -s https://api.wordpress.org/secret-key/1.1/salt/

Obtendrá valores únicos que se parecen al resultado del bloque siguiente.

Advertencia: Debe solicitar valores únicos cada vez. NO copie los siguientes valores.

Outputdefine('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<[email protected]'); define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%'); 

Son líneas de configuración que podemos pegar directamente en nuestro archivo de configuración para establecer claves seguras. Copie el resultado que obtuvo ahora.

A continuación, abra el archivo de configuración de WordPress:

  • sudo nano /var/www/wordpress/wp-config.php

Busque la sección que contiene los valores de ejemplo para esos ajustes.

/var/www/wordpress/wp-config.php

. . .  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');  . . . 

Elimine esas líneas y pegue los valores que copió de la línea de comandos:

/var/www/wordpress/wp-config.php

. . .  define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE'); define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');  . . . 

A continuación, vamos a modificar algunos de los ajustes de conexión de la base de datos al principio del archivo. Debe ajustar el nombre de la base de datos, su usuario y la contraseña asociada que configuramos dentro de MySQL.

El otro cambio que debemos realizar es configurar el método que debe emplear WordPress para escribir el sistema de archivos. Debido a que hemos dado permiso al servidor web para escribir donde debe hacerlo, podemos fijar de forma explícita el método del sistema de archivos a “direct”. Si no lo configuramos con nuestros ajustes actuales, WordPress solicitaría las credenciales de FTP cuando realicemos algunas acciones.

Este ajuste se puede agregar debajo de los ajustes de conexión de la base de datos o en cualquier otra parte del archivo:

/var/www/wordpress/wp-config.php

. . .  // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress' );  /** MySQL database username */ define( 'DB_USER', 'wordpressuser' );  /** MySQL database password */ define( 'DB_PASSWORD', 'password' );  /** 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', '' );   . . .  define('FS_METHOD', 'direct'); 

Guarde y cierre el archivo cuando termine.

Paso 6: Completar la instalación a través de la interfaz web

Ahora que la configuración del servidor está completa, podemos finalizar la instalación a través de la interfaz web.

En su navegador web, vaya al nombre de dominio o a la dirección IP pública de su servidor:

https://server_domain_or_IP 

Seleccione el idioma que desee usar:

Selección de idioma de WordPress

A continuación, accederá a la página principal de configuración.

Seleccione un nombre para su sitio WordPress y seleccione un nombre de usuario. Se recomienda elegir algo único y evitar nombres de usuario comunes como “admin” por motivos de seguridad. De forma automática, se generará una contraseña segura. Guárdela o seleccione una contraseña segura alternativa.

Introduzca su dirección de correo electrónico y defina si quiere que los motores de búsqueda no indexen su sitio:

Instalación de la configuración de WordPress

Cuando haga clic para seguir, irá a una página que le pide que inicie sesión:

Solicitud de inicio de sesión de WordPress

Tras iniciar sesión, accederá al panel de administración de WordPress:

Solicitud de inicio de sesión de WordPress

En este momento, puede comenzar a diseñar su sitio web WordPress. Si es la primera vez que utiliza WordPress, explore la interfaz un poco para conocer su nuevo CMS.

Conclusión

Enhorabuena, WordPress está ahora instalado y listo para usarse.

En este momento, quizá quiera hacer lo siguiente:

  • Seleccionar los ajustes de sus permalinks para las publicaciones de WordPress, que encontrará en Ajustes > Permalinks.
  • Seleccionar un nuevo tema en Apariencia > Temas.
  • Instalar nuevos complementos para aumentar la funcionalidad de su sitio bajo Complementos > Añadir nuevo.
  • Si va a colaborar con otros, puede también desear agregar usuarios adicionales en este momento bajo Usuarios > Añadir Nuevo.

Puede encontrar recursos adicionales para formas alternativas de instalar WordPress, aprender a instalar WordPress en diferentes distribuciones de servidores, automatizar sus instalaciones de WordPress y escalar sus sitios de WordPress consultando nuestra etiqueta WordPress Community.