En esta guía se mostrará como instalar WordPress con sus requerimientos mínimos en un servidor RedHat en AWS EC2 con una base de datos en Aurora
- Ingresamos a aws.amazon.com seleccionar la opción EC2 en el menu Services
- Una vez dentro seleccionar Instances
- Para empezar la configuración presionar Launch Instance
- Para este caso se va a utilizar Red Hat Enterprise Linux (RHEL) 7 (HVM)
- Seleccionar el tipo de instancia deseado, en este caso es t2.micro el cual es gratis por 12 meses
- En la siguiente pantalla elegir el numero de instancias a lanzar, en este caso es solo una, los demás parámetros se los puede dejar sin modificar
- Almacenamiento colocar los GB de la instancia, se puede colocar hasta 30GB sin generar costos durante los primeros 12 meses
- Tags no es necesario realizar cambios
- Security Group son las reglas firewall que va a respetar la instancia, se elige una existente o se crea una nueva
- SG - Inbound rules las más importantes con las que se debe iniciar la instancia son, SSH, HTTP, HTTPS
- SG - Outbound rules esta parte puede estar abierta a todo el trafico
- Review and launch muestra una lista con todas las opciones con las que contará la instancia, si todo está correcto Launch
- Como último nos muestra si deseamos crear o seleccionar una key pem ya que si no tenemos este archivo no es posible ingresar al SSH
- Lanzar la instancia
Reglas del Security Group
Modificar las Inbound Rules del Security Group asociado a esta instancia, debe quedar algo como lo siguiente.
Para ver cómo conectarse con SSH dar click derecho sobre la instancia y luego sobre Connect, los pasos son similares a los siguientes
- Localizar el archivo .pem
- cambiar sus permisos
chmod 400 testkey.pem
- Conectarse a la instancia usando el Public DNS
ssh -i "testkey.pem" [email protected]
- Actualizar metadata de yum
sudo yum update -y
- Instalar wget
sudo yum install -y wget
- Instalar nano
sudo yum install nano
- Instalar httpd
sudo yum install -y httpd
- Iniciar httpd
sudo systemctl start httpd
- Checkear el estatus httpd
sudo systemctl status httpd
- Activar httpd
sudo systemctl enable httpd
Si todo funciona correctamente al ingresar al dominio deberíamos ver algo como esto
- Primero se necesita Instalar y activar los repositiorio de EPEL y Remi
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- Instalar yum-utils
sudo yum install yum-utils
- Activar Remi para que instale las diferentes versiones de PHP
sudo yum-config-manager --enable remi-php73
- Instalar PHP junto con las extensiones recomendadas para WordPress
sudo yum install php php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-date php-exif php-filter php-ftp php-gd php-hash php-iconv php-json php-libxml php-pecl-imagick php-mbstring php-mysqlnd php-openssl php-pcre php-posix php-sockets php-spl php-tokenizer php-zlib php-opcache
- Reinicamos el servicio de Apache web server (httpd)
sudo systemctl restart httpd
- Por último verificar la versión instalada de PHP
php -v
Se debería obtener un mensaje como el siguiente
PHP 7.3.10 (cli) (built: Sep 24 2019 09:20:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.10, Copyright (c) 1998-2018 Zend Technologies
Por último se puede confirmar el correcto funcionamiento agregando un archivo PHP
sudo nano /var/www/html/phpinfo.php
Guardar el archivo con esta línea de código
<?php phpinfo(); ?>
Acceder al URL y debebeíamos ver la información de PHP
Verificar que se haya instalado en el paso 7 o instalar con
sudo yum install php-opcache
Abrir y editar el archivo de configuración de OPcache
sudo nano /etc/php.d/10-opcache.ini
Una guía en esta página recomienda los siguientes valores
opcache.enable=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.max_accelerated_files=10000
opcache.memory_consumption=64
opcache.interned_strings_buffer=8
opcache.fast_shutdown=1
Reiniciar Apache Web Server
sudo systemctl restart httpd
- Agregar las dependencias necesarias
yum groupinstall "Development Tools"
yum install gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel
- Revisar y copiar la URL de la última versión de git, en este caso la v2.23.0
- Proceder con los pasos de instalación
wget https://github.com/git/git/archive/v2.23.0.tar.gz -O git.tar.gz
tar -zxf git.tar.gz
cd git-2.23.0/
make configure
./configure --prefix=/usr/local
sudo make install
git --version
- Agregar un nuevo usuario (reemplazar username)
sudo useradd -m -s /bin/bash username
sudo passwd username
- Agregar el nuevo usuario al "wheel group" (reemplazar username)
sudo usermod username -aG wheel
- Configurar git con el nuevo usuario (reemplazar username)
su username
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --list
- Ingresamos a aws.amazon.com seleccionar la opción RDS en el menu Services
- Click en Create Database
- En el método de creación seleccionar Standard Create
- En Engine Options elegir Amazon Aurora
- Compatibilidad ** Amazon Aurora with MySQL compatibility**
- Versión en este caso Aurora (MySQL)-5.6.10a
- Database location seleccionar Regional
- Database features seleccionar Serverless
- Colocar el DB cluster identifier (esto no es el nombre de la base de datos) y las credenciales de acceso
- Elegir el mínimo y máximo de Capacity settings para este ejemplo se coloca como mínimo 1 y máximo 4 (Esto afecta el precio)
- En Connectivity utilizar la misma VPC pero en el desplegable Additional connectivity configuration crear un nuevo VPC security group en este caso con el nombre database
- Para finalizar click en Create Database
Reglas del Security Group
Modificar las Inbound Rules del Security Group asociado a esta base de datos, en el primer campo debemos colocar el ID del Security Group de la instancia EC2, en el otro podemos colocar nuestra IP
Activar CONFIGURING BOOLEANS de RedHat
Por default el httpd_can_network_connect_db
está desabilitado lo cual evita que Apache HTTP Server se conecten a servidores de bases de datos.
- Verificar el estado de
httpd_can_network_connect_db
getsebool httpd_can_network_connect_db
- Si el resultado es
httpd_can_network_connect_db --> off
se lo debe activar
sudo setsebool httpd_can_network_connect_db on
Al realizar nuevamente la prueba getsebool httpd_can_network_connect_db
el resultado debe ser httpd_can_network_connect_db --> on
- Detener el servicio de Apache
sudo service httpd stop
- Agregar el usuario (EC2-USER) al grupo de apache
sudo usermod -a -G apache ec2-user
groups
#Result: ec2-user wheel
- Desloguearse del EC2 e ingresar nuevamente para que tenga efecto
groups
#Result: ec2-user wheel apache
- Cambiar la carpeta /var/www de dueño
sudo chown -R apache:apache /var/www/
- Agregar permisos de escritura a futuros archivos
sudo chmod 775 /var/www/
sudo find /var/www/ -type d -exec sudo chmod 755 {} \;
sudo find /var/www/ -type f -exec sudo chmod 644 {} \;
- Descargar la última versión de WordPress
wget http://wordpress.org/latest.tar.gz
- Descomprimir el archivo tar
tar -xvf latest.tar.gz
- Copiar los archivos de wordpress a /var/www/html/
cp -vR wordpress/* /var/www/html/
Configurando wordpress
- Ingresar a la carpeta /var/www/html/
cd /var/www/html
- Crear wp-config.php
sudo cp wp-config-sample.php wp-config.php
- Cambiar permisos de wp-config.php
sudo chmod 440 wp-config.php
- Instalar MySQL client
sudo yum install mysql -y
- Ingresar a Aurora utilizando el Endpoint y el usuario (Solicitará la contraseña que se ingresó al momento de crear el DB Cluster)
mysql -h wp-test.cluster-xxxxxxxx.us-west-1.rds.amazonaws.com -u admin -p
- Creamos la base de datos
CREATE DATABASE wp_site CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Verificamos que se creó de forma correcta
show databases;
- Salir de MySQL
exit
- Modificar el archivo wp-config.php con las credenciales de Aurora
/** The name of the database for WordPress */
define( 'DB_NAME', 'wp_site' );
/** MySQL database username */
define( 'DB_USER', 'admin' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
/** MySQL hostname */
define( 'DB_HOST', 'wp-test.cluster-xxxxxxxxx.us-west-1.rds.amazonaws.com' );
- En el archivo wp-config.php modificamos los valores de Authentication Unique Keys and Salts (Los valores se los puede copiar desde Este link)
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' );
- Modificar el archivo /etc/httpd/conf/httpd.conf para permitir Permalinks
sudo nano /etc/httpd/conf/httpd.conf
- Dentro de la etiqueta
<Directory "/var/www/html">
cambair **AllowOverride **
<Directory "/var/www/html">
...
AllowOverride All
...
</Directory>
- Iniciar Apache web server
sudo service httpd start
- Iniciar automáticamente Apache Web Server al reiniciar EC2
sudo systemctl enable httpd
Listo!
Finalizados estos pasos se podrá ingresar al Public DNS o al dominio previamente configurado para instalar WordPress de la manera habitual.