¿Cómo he configurado mi blog en WordPress con Amazon AWS?

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Ya llevo bastante tiempo hablando de Amazon AWS y WordPress. Este blog está hecho con WordPress y ubicado en servidores de Amazon configurados en alta disponibilidad para asegurarnos de que el blog siempre va a estar disponible.

A continuación voy a explicar cómo lo he hecho.

Configuración de la zona horaria

[[email protected] logs]

HP Color Laser MFP 178nw 4ZB96A, Impresora Láser Color Multifunción, Imprime, Escanea y...
  • Imprime a doble cara manualmente, escanea y fotocopia documentos con negros nítidos y colores vibrantes; la velocidad de impresión es de 18 ppm en negro...
  • La bandeja de entrada cuenta con una capacidad de hasta 150 hojas, la bandeja de salida con una capacidad de hasta 50 hojas y un escáner de superficie...
  • Conectividad: Wi-Fi, Wi-Fi Direct, Fast Ethernet, Puerto USB 2.0 de alta velocidad, HP Smart App, Apple AirPrint y Mopria

# cp -p /usr/share/zoneinfo/Europe/Madrid  /etc/localtime

cp: overwrite ‘/etc/localtime’? y

[[email protected] logs]

#

Instalación de PHP 7

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y mod_php71w php71w-cli php71w-common php71w-gd php71w-mbstring php71w-mcrypt php71w-mysqlnd php71w-xml

Más sobre el repositorio EPEL

Instalación de Apache

yum install -y httpd mod_ssl

Herramientas útiles de administración del sistema operativo

yum install -y wget nmap-ncat nmap lsof xfsdump xfsprogs lvm2 bind-utils

Desactivo SELinux

# cat /etc/selinux/config |grep disabled |grep -v "#"
SELINUX=disabled
#

Reboot del sistema para aplicar el cambio.

Actualizo todo el sistema operativo

yum update -y
reboot

Modifico el hostname

hostnamectl set-hostname puerto53

Creamos el grupo y el usuario para la aplicación “Puerto 53”

# groupadd -g 50000 puerto53
# useradd -u 50000 -g puerto53 -d /home/puerto53 -s /bin/bash -c "Aplicacion Puerto53" puerto53
# chage -E -1 -M -1 puerto53
# echo [email protected] |passwd puerto53 --stdin

Configuración de la máscara del usuario 

$ grep -i umask .bash_profile
umask 077

Creación de la estructura de directorios de la aplicación 

# mkdir -p /app/puerto53/scripts
# mkdir -p /app/puerto53/html
# mkdir -p /app/puerto53/httpd

Montaje de los filesystems

Utilizo un recurso de NFS de Amazon (EFS), pensando en la alta disponibilidad o crecimiento del entorno:

# tail -1 /etc/fstab
fs-f17cdb38.efs.eu-west-1.amazonaws.com:/       /app/puerto53/html nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0
# df -hP /app/puerto53/html
Filesystem                                 Size  Used Avail Use% Mounted on
fs-f17cdb38.efs.eu-west-1.amazonaws.com:/  8.0E     0  8.0E   0% /app/puerto53/html

Copias de seguridad de la aplicación

Copiamos el contenido de la aplicación a un bucket S3.

$ cat /app/puerto53/scripts/Backups/backup.sh
PATH=$PATH:/usr/bin
/usr/bin/aws s3 cp /app/puerto53 s3://puerto53.com-backup/puerto53_$(date +%Y%m%d) --recursive
$ crontab -l
00 03 1,8 * 1 /app/puerto53/scripts/Backups/backup.sh > /dev/null 2>&1

Configuración de Apache

Copiamos el contenido de /etc/httpd a /app/puerto53/httpd, ya que personalizaremos la configuración de Apache para esta aplicación.

# cp -pr /etc/httpd/ .
# cd httpd/
# ll
total 0
drwxr-xr-x 2 root root  37 Sep 19 14:06 conf
drwxr-xr-x 2 root root  98 Sep 19 14:06 conf.d
drwxr-xr-x 2 root root 165 Sep 19 14:06 conf.modules.d
lrwxrwxrwx 1 root root  19 Sep 19 14:06 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root  29 Sep 19 14:06 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx 1 root root  10 Sep 19 14:06 run -> /run/httpd

También podemos copiar los módulos si queremos personalizarlos. Eso me ha ocurrido alguna vez con diferentes aplicaciones en el mismo servidor y una aplicación utilizaba una versión diferente de un módulo de Apache a la de la otra.

Fichero de configuración de Apache:

$ grep -v "#" httpd.conf |grep -v ^$
ServerRoot "/app/puerto53/httpd"
PidFile "/app/puerto53/httpd/run/httpd/httpd.pid"
DefaultRuntimeDir "/app/puerto53/httpd/run"
# Listen 80
Listen puerto53.com:5000
Include conf.modules.d/*.conf
Include conf/ssl.conf
User puerto53
Group puerto53
ServerAdmin [email protected]
ServerName puerto53.com:5000
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/app/puerto53/html"
<Directory "/app/puerto53">
AllowOverride None
Require all granted
</Directory>
<Directory "/app/puerto53/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<Files «.ht*»>
Require all denied
</Files>
ErrorLog «logs/error_log»
LogLevel warn
<IfModule log_config_module>
LogFormat «%h %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\»» combined
LogFormat «%h %l %u %t \»%r\» %>s %b» common
<IfModule logio_module>
LogFormat «%h %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\» %I %O» combinedio
</IfModule>
CustomLog «logs/access_log» combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ «/var/www/cgi-bin/»
</IfModule>
<Directory «/app/puerto53/cgi-bin»>
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
<VirtualHost puerto53.com:5000>
   DocumentRoot «/app/puerto53/html»
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule (.*) https://%{HTTP_HOST}:443%{REQUEST_URI}
</VirtualHost>

El certificado SSL lo compré en Goaddy.

$ cat ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen puerto53.com:5001 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLCryptoDevice builtin

<VirtualHost puerto53.com:5001>
DocumentRoot «/app/puerto53/html»
RequestHeader set Front-End-Https «On»
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /app/puerto53/scripts/SSL/puerto53/puerto53.com.crt
SSLCertificateKeyFile /app/puerto53/scripts/SSL/puerto53/puerto53.com.key
SSLCACertificateFile /app/puerto53/scripts/SSL/puerto53/puerto53.com_ca.crt

# WordPress – Enlaces permanentes
<Directory /app/puerto53/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
###

<Files ~ «.(cgi|shtml|phtml|php3?)$»>
SSLOptions +StdEnvVars
</Files>

<Directory «/var/www/cgi-bin»>
SSLOptions +StdEnvVars
</Directory>

BrowserMatch «MSIE [2-5]» \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
«%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \»%r\» %b»
</VirtualHost>
  • Instalación de WordPress
[[email protected] html]$ pwd
/app/puerto53/html
[[email protected] html]$ wget https://wordpress.org/latest.tar.gz
[[email protected] html]$ tar xvf latest.tar.gz
[[email protected] html]$ rm latest.tar.gz
[[email protected] html]$ cd wordpress/
[[email protected] wordpress]$ mv * ../
[[email protected] wordpress]$ cd ..
[[email protected] html]$ rmdir wordpress
  • Configuración de Apache para que pare y arranque automáticamente con el sistema operativo:
[[email protected] /]# cat /usr/lib/systemd/system/httpd_puerto53.service
[Unit]
Description=Apache aplicacion Puerto53.com
After=network.target remote-fs.target nss-lookup.target

[Service]
ExecStart=/usr/bin/su – puerto53 -c «/app/puerto53/scripts/Apache/start_apache_puerto53.sh»
ExecStop=/usr/bin/su – puerto53 -c «/app/puerto53/scripts/Apache/stop_apache_puerto53.sh»

[Install]
WantedBy=multi-user.target
[[email protected] /]#

[[email protected] /]# systemctl enable httpd_puerto53
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd_puerto53.service to /usr/lib/systemd/system/httpd_puerto53.service.
[[email protected] /]#

Si prefieres utilizar NGINX a Apache, echa un vistazo al artículo Instalar WordPress manualmente en CentOS 7 con NGINX y PHP-FPM.

También te puede interesar:

¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email
About Author

Contenido Relacionado

Artículos Recientes

Deja un comentario