Amazon Elastic Compute Cloud
Guía del usuario de instancias de Linux

Tutorial: Alojar un blog de WordPress con Amazon Linux

El procedimiento siguiente ayuda a instalar, configurar y asegurar un blog de WordPress en la instancia de Amazon Linux. Este tutorial es una buena introducción al uso de Amazon EC2 porque tendrá control total de un servidor web que aloja el blog de WordPress, algo que no es habitual con un servicio de hosting tradicional.

Es responsable de actualizar los paquetes de software y de mantener los parches de seguridad del servidor. Para llevar a cabo una instalación más automatizada de WordPress que no requiera interacción directa con la configuración del servidor web, el servicio AWS CloudFormation ofrece una plantilla de WordPress que también puede usar para no perder tiempo. Para obtener más información, consulte Introducción en la Guía del usuario de AWS CloudFormation. Si prefiere alojar el blog de WordPress en una instancia de Windows, consulte Deploying a WordPress Blog on Your Amazon EC2 Windows Instance en la Guía del usuario de Amazon EC2 para instancias de Windows. Si necesita una solución de alta disponibilidad con una base de datos desacoplada, consulte Deploying a High-Availability WordPress Website en la Guía para desarrolladores de AWS Elastic Beanstalk.

importante

Estos procedimientos son para usar con Amazon Linux. Para obtener más información acerca de otras distribuciones, consulte la documentación específica. Muchos de los pasos de este tutorial no funcionan en instancias de Ubuntu. Para obtener ayuda para instalar WordPress en una instancia de Ubuntu, consulte WordPress en la documentación de Ubuntu.

Opción: completar este tutorial con la automatización

Para completar este tutorial con AWS Administrador de sistemas Automation en lugar de las siguientes tareas, ejecute uno de los siguientes documentos de Automation: AWSDocs-HostingAWordPressBlog-AL (Amazon Linux) o AWSDocs-HostingAWordPressBlog-AL2 (Amazon Linux 2).

Requisitos previos

En este tutorial se supone que ha lanzado una instancia de Amazon Linux con un servidor web funcional con soporte PHP y de base de datos (MySQL o MariaDB) siguiendo todos los pasos incluidos en Tutorial: Instalación de un servidor web LAMP con la Amazon Linux AMI para Amazon Linux AMI o Tutorial: Instalación de un servidor web LAMP en Amazon Linux 2 para Amazon Linux 2. En este tutorial también se incluyen pasos para configurar un grupo de seguridad que permita el tráfico HTTP y HTTPS, así como varios pasos para asegurar que los permisos de archivo están correctamente establecidos en el servidor web. Para obtener más información acerca de cómo añadir reglas al grupo de seguridad, consulte Agregar reglas a un grupo de seguridad.

Recomendamos que asocie una dirección IP elástica (EIP) a la instancia que está usando para alojar un blog de WordPress. Esto impide que la dirección DNS pública de la instancia cambie e interrumpa la instalación. Si posee un nombre de dominio y quiere usarlo para el blog, puede actualizar el registro DNS del nombre de dominio para que apunte a la dirección EIP (para obtener ayuda al respecto, póngase en contacto con el registrador de nombres de dominio). Puede tener una dirección EIP asociada con una instancia en ejecución sin costo alguno. Para obtener más información, consulte Direcciones IP elásticas.

Si todavía no tiene un nombre de dominio para el blog, puede registrar uno con Route 53 y asociarlo con la dirección EIP de la instancia. Para obtener más información, consulte Registering Domain Names Using Amazon Route 53 en la Guía para desarrolladores de Amazon Route 53.

Instalación de WordPress

Conecte la instancia y descargue el paquete de instalación de WordPress.

Para descargar y descomprimir el paquete de instalación de WordPress

  1. Descargue el último paquete de instalación de WordPress con el comando wget. El comando siguiente debería descargar siempre la última versión.

    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
  2. Descomprima y desarchive el paquete de instalación. La carpeta de instalación se descomprime en una carpeta llamada wordpress.

    [ec2-user ~]$ tar -xzf latest.tar.gz

Para crear un usuario de base de datos y una base de datos para la instalación de WordPress

La instalación de WordPress necesita almacenar información, como las publicaciones en el blog y los comentarios de los usuarios, en una base de datos. Este procedimiento ayuda a crear una base de datos para el blog y un usuario que esté autorizado a leer y guardar información en ella.

  1. Inicie el servidor de base de datos.

    • Amazon Linux 2

      [ec2-user ~]$ sudo systemctl start mariadb
    • AMI de Amazon Linux

      [ec2-user ~]$ sudo service mysqld start
  2. Inicie sesión en el servidor de base de datos como el usuario root. Escriba la contraseña de base de datos root cuando se le pida; puede ser diferente de la contraseña del sistema root o puede incluso estar en blanco si no ha protegido el servidor de base de datos.

    Si todavía no ha protegido el servidor de base de datos, es importante que lo haga. Para obtener más información, consulte Para proteger el servidor de base de datos.

    [ec2-user ~]$ mysql -u root -p
  3. Cree un usuario y una contraseña para la base de datos MySQL. La instalación de WordPress usa estos valores para comunicarse con la base de datos MySQL. Escriba el comando siguiente sustituyendo un nombre de usuario y contraseña únicos.

    CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

    Asegúrese de que crea una contraseña fuerte para el usuario. No utilice la comilla simple ( ' ) en la contraseña porque interrumpirá el comando anterior. Para obtener más información acerca de la creación de una contraseña segura, visite http://www.pctools.com/guides/password/. No utilice ninguna contraseña existente y asegúrese de que la guarda en un lugar seguro.

  4. Cree la base de datos. Póngale un nombre descriptivo y significativo, por ejemplo wordpress-db.

    nota

    Los signos de puntuación que rodean el nombre de la base de datos en el comando siguiente son acentos graves. La tecla (`) se ubica por lo general sobre la tecla Tab en un teclado estándar. Los acentos graves no siempre son obligatorios pero permiten usar caracteres no válidos, por ejemplo, guiones, en los nombres de las bases de datos.

    CREATE DATABASE `wordpress-db`;
  5. Conceda privilegios completos para la base de datos al usuario de WordPress que ha creado antes.

    GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
  6. Vacíe los privilegios de base de datos para recoger todos los cambios.

    FLUSH PRIVILEGES;
  7. Salga del cliente de mysql.

    exit

Para crear y modificar el archivo wp-config.php

La carpeta de instalación de WordPress contiene un archivo de configuración de ejemplo llamado wp-config-sample.php. En este procedimiento, va a copiar este archivo y a modificarlo para ajustarlo a su configuración específica.

  1. Copie el archivo wp-config-sample.php en un archivo llamado wp-config.php. Esto crea un archivo de configuración nuevo y mantiene el archivo original de muestra intacto como copia de seguridad.

    [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
  2. Modifique el archivo wp-config.php con el editor de texto favorito (por ejemplo nano o vim) y escriba los valores de la instalación. Si no tiene un editor favorito, nano es más adecuado para principiantes.

    [ec2-user ~]$ nano wordpress/wp-config.php
    1. Busque la línea que define DB_NAME y cambie database_name_here por el nombre de la base de datos que ha creado en Paso 4 de Para crear un usuario de base de datos y una base de datos para la instalación de WordPress.

      define('DB_NAME', 'wordpress-db');
    2. Busque la línea que define DB_USER y cambie username_here por el usuario de la base de datos que ha creado en Paso 3 de Para crear un usuario de base de datos y una base de datos para la instalación de WordPress.

      define('DB_USER', 'wordpress-user');
    3. Busque la línea que define DB_PASSWORD y cambie password_here por la contraseña fuerte que ha creado en Paso 3 de Para crear un usuario de base de datos y una base de datos para la instalación de WordPress.

      define('DB_PASSWORD', 'your_strong_password');
    4. Busque la sección denominada Authentication Unique Keys and Salts. Estos valores KEY y SALT ofrecen una capa de cifrado a las cookies del explorador que los usuarios de WordPress almacenan en sus equipos locales. Básicamente, agregar valores largos aleatorios hace que el sitio sea más seguro. Visite https://api.wordpress.org/secret-key/1.1/salt/ para generar aleatoriamente un conjunto de valores de claves que pueda copiar y pegar en el archivo wp-config.php. Para pegar texto en un terminal PuTTY, coloque el cursor en el punto que quiere pegar el texto y haga clic con el botón derecho del ratón dentro del terminal PuTTY.

      Parar obtener más información sobre claves de seguridad, visite http://codex.wordpress.org/Editing_wp-config.php#Security_Keys.

      nota

      Los valores siguientes tienen una finalidad de ejemplo únicamente; no los use en la instalación.

      define('AUTH_KEY', ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-'); define('SECURE_AUTH_KEY', 'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg'); define('LOGGED_IN_KEY', 'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3'); define('NONCE_KEY', 'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj'); define('AUTH_SALT', 'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h'); define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv'); define('LOGGED_IN_SALT', ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/'); define('NONCE_SALT', '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
    5. Guarde el archivo y salga del editor de texto.

Para instalar archivos de WordPress bajo la raíz de documentos Apache

  1. Una vez descomprimida la carpeta de instalación, creada la base de datos MySQL y un usuario, y personalizado el archivo de configuración de WordPress, ya puede copiar los archivos de instalación en la raíz de documentos del servidor web para ejecutar el script de instalación que completa la instalación. La ubicación de estos archivos depende de si quiere que el blog de WordPress esté disponible en la raíz real del servidor web (por ejemplo, my.public.dns.amazonaws.com) o en un subdirectorio o carpeta bajo la raíz (por ejemplo, my.public.dns.amazonaws.com/blog).

  2. Si desea que WordPress se ejecute en la raíz de documentos, copie el contenido del directorio de instalación de WordPress (pero no el directorio propiamente) como sigue:

    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
  3. Si desea que WordPress se ejecute en un directorio alternativo bajo la raíz de documentos, cree primero el directorio y después copie los archivos. En este ejemplo, WordPress se ejecutará desde el directorio blog:

    [ec2-user ~]$ mkdir /var/www/html/blog [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/

importante

Por razones de seguridad, si no pasa al siguiente procedimiento de inmediato, pare el servidor web Apache (httpd) ahora. Después de mover la instalación bajo la raíz de documentos Apache, el script de instalación de WordPress queda desprotegido y un atacante podría obtener acceso al blog si el servidor web Apache estuviera en ejecución. Para detener el servidor web Apache, escriba el comando sudo service httpd stop. Si pasa al siguiente procedimiento, no es preciso que pare el servidor web Apache.

Para permitir que WordPress use enlaces permanentes

Los enlaces permanentes de WordPress necesitan usar archivos .htaccess de Apache para funcionar correctamente, pero esto no está habilitado de manera predeterminada en Amazon Linux. Use este procedimiento para permitir todas las anulaciones en la raíz de documentos de Apache.

  1. Abra el archivo httpd.conf con el editor de textos que prefiera (como nano o vim). Si no tiene un editor favorito, nano es más adecuado para principiantes.

    [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
  2. Busque la sección que comienza por <Directory "/var/www/html">.

    <Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
  3. Cambie la línea AllowOverride None de la sección anterior por AllowOverride All.

    nota

    Hay múltiples líneas AllowOverride en este archivo; asegúrese de que cambia la línea de la sección <Directory "/var/www/html">.

    AllowOverride All
  4. Guarde el archivo y salga del editor de texto.

Para ajustar los permisos de archivo para el servidor web Apache

Algunas de las características disponibles en WordPress (por ejemplo, cargar medios a través de las pantallas de administración) requieren acceso de escritura a la raíz de documentos de Apache. Si todavía no lo ha hecho, aplique los siguientes permisos y suscripciones de grupo (como se describe detalladamente en el tutorial del servidor web LAMP).

  1. Otorgue la propiedad de archivos de /var/www y su contenido al usuario apache.

    [ec2-user ~]$ sudo chown -R apache /var/www
  2. Otorgue la propiedad de grupo de /var/www y su contenido al grupo apache.

    [ec2-user ~]$ sudo chgrp -R apache /var/www
  3. Cambie los permisos del directorio /var/www y sus subdirectorios para agregar permisos de escritura de grupo y establecer el ID de grupo en futuros subdirectorios.

    [ec2-user ~]$ sudo chmod 2775 /var/www [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  4. Cambie recursivamente los permisos de archivo del directorio /var/www y sus subdirectorios para agregar permisos de escritura de grupo.

    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
  5. Reinicie el servidor web Apache para recoger el grupo y los permisos nuevos.

    • Amazon Linux 2

      [ec2-user ~]$ sudo systemctl restart httpd
    • AMI de Amazon Linux

      [ec2-user ~]$ sudo service httpd restart

Para ejecutar el script de instalación de WordPress con Amazon Linux 2

Ahora está listo para instalar WordPress. Los comandos que utilice dependen del sistema operativo. Los comandos de este procedimiento son para utilizarlos con Amazon Linux 2. Utilice el procedimiento que sigue a este con la AMI de Amazon Linux.

  1. Utilice el comando systemctl para asegurarse de que se inician los servicios httpd y de base de datos cada vez que se arranca el sistema.

    [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
  2. Verifique que el servidor de base de datos se está ejecutando.

    [ec2-user ~]$ sudo systemctl status mariadb

    Si el servicio de base de datos no se está ejecutando, inícielo.

    [ec2-user ~]$ sudo systemctl start mariadb
  3. Verifique que el servidor web Apache (httpd) se está ejecutando.

    [ec2-user ~]$ sudo systemctl status httpd

    Si el servicio httpd no se está ejecutando, inícielo.

    [ec2-user ~]$ sudo systemctl start httpd
  4. En un navegador web, escriba la URL del blog WordPress (bien como dirección DNS pública para la instancia, o bien esa dirección seguida de la carpeta blog). Debería ver el script de instalación de WordPress. Proporcione la información requerida por la instalación de WordPress. Seleccione Install WordPress para completar la instalación. Para obtener más información, consulte Run the Install Script en el sitio web de WordPress.

Para ejecutar el script de instalación de WordPress con la AMI de Amazon Linux

  1. Use el comando chkconfig para asegurarse de que se inician los servicios httpd y de base de datos cada vez que se arranca el sistema.

    [ec2-user ~]$ sudo chkconfig httpd on && sudo chkconfig mysqld on
  2. Verifique que el servidor de base de datos se está ejecutando.

    [ec2-user ~]$ sudo service mysqld status

    Si el servicio de base de datos no se está ejecutando, inícielo.

    [ec2-user ~]$ sudo service mysqld start
  3. Verifique que el servidor web Apache (httpd) se está ejecutando.

    [ec2-user ~]$ sudo service httpd status

    Si el servicio httpd no se está ejecutando, inícielo.

    [ec2-user ~]$ sudo service httpd start
  4. En un navegador web, escriba la URL del blog WordPress (bien como dirección DNS pública para la instancia, o bien esa dirección seguida de la carpeta blog). Debería ver el script de instalación de WordPress. Proporcione la información requerida por la instalación de WordPress. Seleccione Install WordPress para completar la instalación. Para obtener más información, consulte Run the Install Script en el sitio web de WordPress.

Pasos siguientes

Una vez probado el blog de WordPress, considere actualizar su configuración.

Uso de un nombre de dominio personalizado

Si tiene un nombre de dominio asociado con la dirección EIP de la instancia EC2, puede configurar el blog para que use ese nombre en lugar de la dirección DNS pública de EC2. Para obtener más información, consulte http://codex.wordpress.org/Changing_The_Site_URL.

Configuración del blog

Puede configurar el blog para usar distintos temas y complementos y ofrecer una experiencia más personalizada a los lectores. Sin embargo, en ocasiones el proceso de instalación puede producir un efecto indeseado y provocar la pérdida del blog completo. Recomendamos encarecidamente que cree una Imagen de máquina de Amazon (AMI) de copia de seguridad de la instancia antes de instalar temas o complementos, de forma que pueda restaurar el blog si algo va mal durante la instalación. Para obtener más información, consulte Creación de su propia AMI.

Aumento de la capacidad

Si el blog de WordPress llega a hacerse popular y necesita más potencia de cómputo o almacenamiento, considere los pasos siguientes:

Más información sobre WordPress

Para obtener más información acerca de WordPress, consulte la documentación de ayuda de WordPress Codex en http://codex.wordpress.org/. Para obtener más información acerca de la solución de problemas de instalación, visite http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems. Para obtener más información acerca de cómo aumentar la seguridad del blog de WordPress, visite http://codex.wordpress.org/Hardening_WordPress. Para obtener más información acerca de cómo mantener el blog de WordPress actualizado, visite http://codex.wordpress.org/Updating_WordPress.

¡Socorro! Ha cambiado el nombre DNS público y ahora el blog se ha roto

La instalación de WordPress se configura automáticamente usando la dirección DNS pública de la instancia EC2. Si detiene y reinicia la instancia, la dirección DNS pública cambia (salvo que está asociada a una dirección IP elástica) y el blog no funcionará porque hace referencia a los recursos de una dirección que ya no existe (o que se ha asignado a otra instancia EC2). Para ver una descripción más detallada del problema y varias soluciones posibles, visite http://codex.wordpress.org/Changing_The_Site_URL.

Si ha sucedido esto con la instalación de WordPress, podrá recuperar el blog mediante el procedimiento siguiente, que usa la interfaz de línea de comandos wp-cli para WordPress.

Para cambiar la URL del sitio de WordPress con la wp-cli

  1. Conéctese a la instancia EC2 con SSH.

  2. Anote la URL del sitio anterior y la URL del sitio nuevo para la instancia. La URL del sitio anterior probablemente sea el nombre DNS público de la instancia EC2 cuando instaló WordPress. La URL del sitio nuevo es el nombre DNS público actual de la instancia EC2. Si no está seguro de la URL del sitio anterior, puede usar curl para buscarla con el comando siguiente.

    [ec2-user ~]$ curl localhost | grep wp-content

    Debería ver referencias al nombre DNS público anterior en el resultado, que tendrá un aspecto similar a lo siguiente (la URL del sitio anterior en rojo):

    <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
  3. Descargue el wp-cli con el comando siguiente.

    [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  4. Busque y remplace la URL del sitio anterior en la instalación de WordPress por el comando siguiente. Sustituya las URL del sitio anterior y del nuevo para la instancia EC2 y la ruta de instalación de WordPress (normalmente /var/www/html o /var/www/html/blog).

    [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
  5. En un explorador web, escriba la URL del nuevo sitio del blog de WordPress para verificar que el sitio funciona correctamente de nuevo. Si no es así, consulte http://codex.wordpress.org/Changing_The_Site_URL y http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems para obtener más información.