Imagen en fondo negro con el logo y la palabra Wordpress

Instalar WordPress en una instancia EC2 de Amazon Web Services

Hace algunos años vengo utilizando las instancias EC2 de Amazon Web Services para crear diferentes proyectos web y en ese sentido, en este artículo deseo compartir contigo cómo puedes instalar WordPress en ese servicio.

Entonces aprenderás a:

  • Preparar la instancia para su adecuada administración
  • Instalar Nginx, PHP y MySQL (LEMP server) y su configuración orientada a WordPress
  • Instalar WordPress
  • Configurar nombre de dominio para que apunte al servidor
  • Instalar un certificado SSL gratuito

Cosas que necesitas

  • Algunos conocimientos de linux, aunque en este artículo se te informa todas las instrucciones
  • Un nombre de dominio
  • Una instancia en Amazon Web Services con sistema operativo Ubuntu Linux. Puedes aprender a crearla aquí
  • Un servidor de nombres de dominio. Sugiero Cloudflare

Preparación de la instancia para su adecuada administración

Básicamente, se trata de crear un nuevo usuario diferente de root que nos permita administrar el Virtual Private Server (VPS)

Creamos un nuevo usuario con permisos sudo para administrar el VPS

sudo adduser nombre_de_usuario

Agregamos al nuevo usuario al grupo de súper usuarios para que tenga privilegios de administración.

sudo usermod -aG sudo nombre_de_usuario

Iniciamos sesión en con el nuevo usuario

su nombre_de_usuario

Actualizamos el sistema operativo

sudo apt-get update
sudo apt-get upgrade

Instalación de Nginx, PHP y MySQL (LEMP server) y su configuración orientada a WordPress

Instalación de Nginx, MySQL y PHP

sudo apt-get install nginx
sudo apt-get install mysql-server
sudo apt install php8.1-fpm php-mysql

Actualizamos de nuevo los paquetes del sistema operativo.

sudo apt-get update

Instalamos otras extensiones necesarias de PHP

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

Instalar otros módulos PHP necesarios para que funcione WordPress

sudo apt-get install php8.1-xml -y
sudo apt-get install php-imagick -y

 

Y para que las otras extensiones puedan funcionar correctamente es conveniente que se reinicie el servicio de PHP

sudo systemctl restart php8.1-fpm

Configuración de Nginx

WordPress es un CMS desarrollado con PHP, por ese motivo debemos configurar el servidor web Nginx para que pueda ejecutarse correctamente.

Para crear un nuevo bloque de configuración Nginx utilizamos el siguiente comando:

sudo vi /etc/nginx/sites-available/wordpress

El código de bloque de configuración Nginx para que funcione WordPress es el siguiente:

En este código se explican algunas líneas de código.

server {
        # listen 80. Es el puerto que escucha el servidor web, http. Más adelante se explica como escuchar el puerto 443 para https.
        listen 80;

        # Server_name. Indicamos el nombre de dominio sin y con www. 
        server_name nombre_de_dominio.com www.nombre_de_dominio.com;

        # root. es la carpeta donde se ubican los archivos de WordPress
        root /var/www/wordpress;


        client_max_body_size 20M;

        # En esta línea, indicamos al servidor web que ejecute las extensiones de archivo: html, htm y php
        index index.html index.htm index.php;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

        # Algunas configuraciones adicionales que necesita WordPress
        location = /favicon.ico { log_not_found off; access_log off;  }
        location = /robots.txt { log_not_found off; access_log off; allow all;  }
        location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
                expires max;
                log_not_found off;
        }
}

Confirma que el bloque de configuración está bien escrito y funciona correctamente con el siguiente código:

sudo nginx -t

Si todo está OK, activa el bloque vinculándolo al archivo de configuración en la carpeta de Nginx sites-enabled.

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

Cuando es instalado, Nginx crea una tabla de configuración básica la cual está también activada en la carpeta sites-enabled. Como necesitamos que una vez una persona ingrese nuestro nombre de dominio vaya hacia la carpeta donde está nuestra instalación de WordPress, es necesario desactivarla.

sudo unlink /etc/nginx/sites-enabled/default

Ahora es necesario continuar reiniciando el servicio Nginx.

sudo systemctl reload nginx

Creación de una base de datos con MySQL

Iniciamos sesion en MySQL

sudo mysql

Creación de la base de datos

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Creación del usuario de la base de datos

CREATE USER 'nombre_de_usuario'@'localhost' IDENTIFIED BY 'contraseña';

Asignamos los permisos para que pueda tener acceso y privilegios de escritura en la base de datos

GRANT ALL ON wordpress.* TO 'nombre_de_usuario'@'localhost';

Salimos de la consola de MySQL

exit;

Instalación de WordPress

Preparativos

En el archivo de bloque de configuración de Nginx, hacemos referencia a una carpeta que aún no existe. En esta carpeta reposarán los archivos que hacen que nuestro sitio web construido con WordPress funcione correctamente.

La creamos de la siguiente manera:

sudo mkdir /var/www/wordpress

Nos ubicamos en la carpeta.

cd /var/www/wordpress

Descargamos WordPress

sudo curl -LO https://wordpress.org/latest.zip

Descomprimimos la carpeta. Pero antes, instalamos unzip para poder descomprimirla.

sudo apt-get install unzip

Descomprimimos.

sudo unzip latest.zip

Al listar el contenido de la carpeta /var/www/wordpress, observamos que existen dos elementos: la carpeta comprimida latest.zip y otra carpeta llamada wordpress que contiene los archivos de adivina qué… Si, WordPress.

Entonces, debemos copiar el contenido de la carpeta wordpress a la raíz. Eso lo logramos con la siguiente instrucción:

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

Ahora, asignamos como propietario de la carpeta a www-data. Este es el usuario y grupo de utiliza Nginx para funcionar y como el servidor web debe leer y escribir los archivos de WordPress, debemos asignar su usuario como propietario.

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

Preparación del archivo wp-config.php

Cuando descargamos y descomprimimos la carpeta que contiene los archivos de Worpress, en esta se encuentra un documento php llamado wp-config-sample.php. Para poder instalar WordPress, debemos renombrar con el nombre wp-config.php y adicionarle unas líneas de código para que se conecte con la base de datos y aplique otras configuraciones para su instalación y funcionamiento.

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

Ahora agregamos las líneas de código correspondientes para la correcta instalación y funcionamiento de WordPress en nuestro VPS.

Iniciamos obteniendo y agregando una serie de llaves de seguridad para nuestra instalación.

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

En consola tendrás como respuesta tus llaves. Utiliza las que solicites. No utilices estas porque no te servirán.

define('AUTH_KEY', 'QO~D(G&uup[y;[;B%9Xq)9*wxcwxAdLG`;6|2[!m?&mjHhaI$KHEcKfWI51-`T]<');
define('SECURE_AUTH_KEY', '<N69!A)Hru+GAOO|@N+(Sc6MN:CN)E1ZEU6=rT8Crm2g@&#-.eP/tq.8(N~.x|v6');
define('LOGGED_IN_KEY', 'C.c*L4*[~UlmbwYn8+hpK4Q!WQmLy-rAC`gw4Q&2)ic$$+E?P#W~pu$Ls{`AS1[-');
define('NONCE_KEY', 'VF^ZpG0~S5Ak_+,v@dA+pD^lT|~xPr~JbM)D(; +u}ub> VN2heU-4l;K?*zl-3/');
define('AUTH_SALT', 'G}$+h]:S5|Hi;Puf|P?eVddLRy:bjKdtaJZGg&)AnM?y|*g1DPxAHt+ `OXD4(,,');
define('SECURE_AUTH_SALT', '$EA]hcX.^?0(NLw`Ff##v:jvcR]+q+SrebBnTZ?-/;b|F4V80|RDe&rSa^KjVE{/');
define('LOGGED_IN_SALT', '~q>&D{ >J`.{7-IoW-2<_+TS,,d WdRGm;;T^)sl6*5pN`F}8o!>2UevJ.DX^wGD');
define('NONCE_SALT', 'fc|)Su/!V33Urf 2~DN5(5>^Z&q(XB$W):V rA-/ZE* eS$3D-*QR3h5m?<G]lU/');

Agrega estas líneas en tu archivo wp-config.php

sudo vi wp-config.php

Por otro lado, indica en el archivo los parámetros que tienes para la conexión con tu base de datos MySQL

. . .

define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'nombre_de_usuario' );

/** MySQL database password */
define( 'DB_PASSWORD', 'contraseña' );

. . .

Configuración correcta para permisos de WordPress en Linux

  • Todos los archivos deben tener permiso 664, o sea, -rw-rw-r–
  • Todas las carpetas deben tener permisos 775, o sea, drwxrwxr-x
  • El archivo wp-config.php debería tener permisos 664, o sea, -rw-rw-r–

Utilizamos la instrucción find, acompañado de sudo en la carpeta raíz del sitio web.

sudo find . -type d -exec chmod 775 '{}' \;
sudo find . -type f -exec chmod 664 '{}' \;
sudo chmod 664 wp-config.php

Configuración de un nombre de dominio para que apunte al servidor

Creamos dos registros DNS (Domain Name Server) de tipo A con “www” y sin “www” que apunten hacia la ip pública que proporciona la instancia.

Una vez ingreses el nombre de dominio en el navegador web, ya solo es ejecutar el asistente de WordPress para completar la instalación.

Instalación de un certificado SSL gratuito

En este artículo puedes configurar un certificado SSL gratuito.

Configuración del archivo php.ini

A continuación se muestra el listado de instrucciones básicas y generales para el correcto funcionamiento de WordPress.

Para editar el archivo php.ini utiliza la siguiente instrucción:

sudo vi /etc/php/8.1/fpm/php.ini

Agregamos y/o modificamos las siguientes líneas:

max_execution_time = 300
max_input_time = 300
memory_limit = 256M
max_input_vars = 1500
error_reporting = E_ALL
display_errors = Off
log_errors = On
post_max_size = 128M
upload_max_filesize = 128M

Reiniciamos PHP

sudo systemctl restart php8.1-fpm

 

Scroll to Top