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', '<mark>wordpress</mark>' );
/** MySQL database username */
define( 'DB_USER', '<mark>nombre_de_usuario</mark>' );
/** MySQL database password */
define( 'DB_PASSWORD', '<mark>contraseña</mark>' );
. . .
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