WordPress en AWS: instancia Ubuntu EC2 y MySQL en RDS

Creamos una instancia de Ubuntu 18.04 en EC2 con asignación de IP pública.

Abrimos el tráfico HTTP a su security group.

Nos conectamos a la instancia.

Instalamos apache2

 sudo apt-get install apache2

Instalamos WordPress

 sudo apt-get install wordpress

Creamos un enlace simbólico para que el apache2 encuentre

 sudo ln -s /usr/share/wordpress /var/www/html/wordpress

Configuramos WordPress

En /etc/apache2/sites-available/ creamos el fichero wordpress.conf con el contenido:

Alias /blog /usr/share/wordpress
<Directory /usr/share/wordpress>
    Options FollowSymLinks
    AllowOverride Limit Options FileInfo
    DirectoryIndex index.php
    Order allow,deny
    Allow from all
</Directory>
<Directory /usr/share/wordpress/wp-content>
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

En /etc/wordpress creamos el fichero config-<dns-de-la-instancia-ec2>.php con el contenido:

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'la-contraseña-de-DB_USER');
define('DB_HOST', 'dns-de-la-instancia-rds-de-mysql');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>

Creamos una instancia MySQL en RDS

Abrimos el tráfico en su security group al security group de la instancia EC2 por el puerto 3306

Desde nuestra máquina Ubuntu en EC2 podemos conectarnos a la instancia MySQL

mysql -h <dns-de-la-instancia> -u <usuario-maestro> -p
Password

Y creamos el usuario y la base de datos de wordpress tal y como lo habíamos configurado

CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
CREATE DATABASE `wordpress-db`;
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
FLUSH PRIVILEGES;
exit

 

Ahora ya podemos finalizar la instalación en un navegador accediendo a la URL: http://<dns-de-la-instancia-ec2>/blog/wp-install

 

Actualización de plugins, temas, traducciones…

Instalamos servidor FTP

sudo apt-get install vsftpd

Creamos un usuario:

sudo useradd -m ftpuser

Establecemos la contraseña con el comando:

sudo passwd ftpuser

Configuramos el servidor:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

Añadir lo siguiente al final de fichero /etc/vsftpd.conf

pasv_enable=YES
pasv_min_port=13000
pasv_max_port=13100
port_enable=YES
pasv_address=[public dns from the amazon EC2 instance]
pasv_addr_resolve=YES

Modificamos las siguientes lineas:

# Uncomment this to enable any form of FTP write command.
write_enable=YES
# Uncomment this to allow local users to log in.
local_enable=YES

Arrancamos y activamos el servicio:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

Añadimos dos reglas al security group de la instancia EC2:

TCP 20-21
TCP 13000-13100

Filezilla al conectar indicamos servidor Unix y modo de transferencia pasivo.

El usuario de apache como dueño de los ficheros

sudo chown -R www-data:www-data /usr/share/wordpress/
sudo chown -R www-data:www-data /var/www/html/