Actualizar PHP en Lightsail para WP

Si hace ya tiempo que instalaste tu instancia de AWS Lightsail para WordPress, es muy posible que tengas un mensaje que te taladra la cabeza cada vez que accedes al escritorio de WordPress…

Obviamente no puedes irte a dormir tranquilo con este mensaje cuando te ha salido 60 veces. Así que una noche de sábado de esas en las que has hecho una buena siesta por la tarde y los niños ya están durmiendo es ideal para realizar la actualización de PHP en mi instancia de Lightsail en AWS.

Lo primero que hay que saber es que no hay un botón de «Actualiza PHP a la versión X» en Lightsail, WordPress o Bitnami ni ningún script que te permita ejecutar la actualización desde línea de comandos.

Puestos a buscar por la web, di con una de las pocas páginas donde explican como actualizar PHP sin migrar la instancia, Upgrade PHP on Bitnami WordPress without Migration, y francamente vi claro que quizás no era el mejor camino porque tenías que lanzar un montón de scripts directamente a producción.

La solución que decidí finalmente fue bastante sencilla y consistió en hacer una copia de seguridad de la instancia actual en Lightsail, crear una nueva instancia (donde Bitnami ya instala la versión 8.2 de PHP junto con la 6.5 de WordPress), instalar el certificado SSL, cambiar la IP en el gestor de dominios e importar los datos de la copia de seguridad que habíamos creado. Por último, borré la vieja instancia después de comprobar que todo funcionaba correctamente. Al final fue una hora y poco lo que tardé en todo el proceso.

Si necesitas algo más de información con los pasos intermedios, puedes utilizar esta pequeña guía que es sencilla pero detallada: Updating PHP version on Bitnami WordPress.

Como renovar un certificado de Let’s Encrypt de Bitnami en una instancia de Lightsail

La verdad es que no se si lo he hecho bien o no, pero como mínimo se ha renovado el certificado SSL en mi instancia de Lightsail en AWS en la que tenía previamente instalado un certificado utilizando bncert-tool.

Los pasos a seguir son bastante sencillos y basta con conectarse a la cónsola de la instancia y ejecutar desde la línea de comandos de linux las siguientes tres instrucciones:

sudo /opt/bitnami/ctlscript.sh stop

sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90

sudo /opt/bitnami/ctlscript.sh start

Se debe sustituir EMAIL-ADDRESS con el email de notificación que se quiere utilizar y DOMAIN con el dominio a securizar. En mi caso solamente poniendo «dominio.com» me ha actualizado también «www.dominio.com».

Activar eMail en WordPress para AWS Lightsail

Cuando instalamos WordPress en AWS Lightsail no disponemos de un servidor de correo electrónico que se active con un click y por tanto tendremos que instalar o conectar uno de forma manual.

En mi caso me he decantado por la instalación del plugin WP Mail SMTP que permite enviar emails con diferentes tipos de mailers, siendo uno de los más rápidos y baratos el de Google. Estos son los pasos que hay que realizar para activarlo:

    • Una vez que estamos conectados a la cuenta de Gmail que queremos utilizar, entraremos en la cónsola de Google Cloud Platform.
    • Creamos un nuevo proyecto desde Select a Project > New Project.
    • Cuando se haya creado, lo seleccionamos.
    • En el buscador de la cónsola de Google Cloud Platform buscamos «gmail» y seleccionamos «Gmail API».
    • Pulsamos sobre «ENABLE».
    • Una vez dentro pulsamos sobre «CREATE CREDENTIALS» en la parte superior derecha de la pantalla.
    • A partir de aquí podemos seguir las instrucciones de WP Mail SMTP.

Al finalizar todas las configuraciones podemos enviar un email de prueba desde el menú de configuración de WP Mail SMTP en WordPress para verificar que todo funciona correctamente.

Forzar redirección a https en WordPress Multisite desde AWS LightSail

En general, añadir un certificado a un WordPress y forzar la redirección de hhtp a https es bastante fácil ya que basta con ejecutar el script de Bitnami «sudo /opt/bitnami/bncert-tool«. Una de las opciones que ofrece dicho script es la de redireccionar a https pero en el caso de WordPress Multisite, no se soporta por lo que hay que buscar otra solución.

Esta solución es realizar la redirección a través de Apache modificando el archivo de configuración de hosts virtuales y seguir las instrucciones de Force HTTPS Redirection With Apache.

En mi caso, y después de asegurarme que tenía que aplicar la opción A (Approach A: Bitnami Installations Using System Packages») modifiqué los siguientes cuatro archivos:

/opt/bitnami/apache2/conf/bitnami/bitnami.conf
/opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf
/opt/bitnami/apache2/conf/vhosts/wordpress-https-vhost.conf
/opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf

La edición de los archivos la hice con VIM desde línea de comandos y antes de los cambios realicé backups de los cuatro archivos.

Finalmente reinicié la instancia de LighSail donde tengo instalado WP Multisite. Para verificar su funcionamiento, desde el browser tecleé el dominio y automáticamente se cambió a https. Hice lo mismo desde el teléfono para asegurarme.

Cambiar Permisos en Linux

En AWS LightSail, si queremos subir archivos desde SFTP vamos a tener que cambiar algunos permisos. Se hace de esta forma:

sudo chown bitnami DIRECTORIO
sudo chmod +w DIRECTORIO

Para restablecer los permisos originales una vez que hayamos añadido o modificado archivos a través de SFTP, tenemos que hacerlo así:

sudo chown daemon:daemon DIRECTORIO
sudo chmod 0775 DIRECTORIO

Es importante limitar dichos permisos para evitar problemas de seguridad.

Cambiar la URL en WordPress con SSH y VIM

Dejando de lado todo el proceso de creación de la URL, configuración de las Hosted Zones y cambios de DNS que es bastante trivial, especialmente si sabes hacerlo, uno de los puntos donde podemos quedar parados es en la página de configuración de WordPress a la hora de cambiar las direcciones. El problema suele ser que no es posible hacerlo desde la propia página y tenemos que ir a cambiar los parámetros al archivo wp-config.php.

Este paso es especialmente crítico cuando añadimos un certificado SSL para securizar nuestra página porque aunque parezca que funciona bien y que aparece el candado junto a la URL en nuestro navegador, el cambio no estará perfectamente finalizado hasta que tengamos las URLs actualizadas en wp-config.php mostrando https en vez de http.

Si disponemos de una conexión SSH, como en mi caso donde utilizo Lightsail de AWS en una instancia de Linux, podemos hacer el cambio usando el editor VIM y realizando los siguientes pasos:

      • Conectar a la cónsola de Linux con SSH
      • Ir al directorio apps/wordpress/htdocs/
      • Abrir el archivo con vim wp-config.php
      • Localizar las líneas define(‘WP_SITEURL’, ‘http://’ . $SERVER[‘HTTPHOST’] . ‘/‘); y define(‘WP_HOME’, ‘http://’ . $SERVER[‘HTTPHOST’] . ‘/‘);
      • Cambiar el texto en rojo con las nuevas URLs o símplemente añadir S al http si hemos instalado un certificado SSL
      • No olvidarse de añadir / al final de la URL.
      • Una vez realizado el cambio, tenemos que pulsar la tecla ESC y después teclear :wq para grabar y salir.
      • Finalmente cerramos la sesión SSH y ya debería estar hecho el cambio.

Si no queremos utilizar VIM, otra opción es hacerlo a través de FTP, accediendo al archivo y modificándo el archivo.

Migrar WordPress de Bluehost a AWS Lightsail

Como comentaba en mi último post, hace unos días terminé de migrar mi blog en WordPress de Bluehost a AWS Lightsail.

Aunque no es tan simple como un «siguiente-siguiente-siguiente», siguiendo algunos detalles clave, se puede completar en unas pocas horas. Estos son los pasos a seguir:

      • Crear una instancia en Lightsail, por ejemplo en Linux, y seleccionar la instalación de WordPress.
      • Una vez creada la instancia, crear una IP fija en vez de la IP dinámica que se asigna por defecto.
      • En Bluehost, instalar el plugin «All-in-One WP Migration«. Lo utilizaremos para realizar una copia de todos los posts, archivos, imágenes, configuraciones, plugins, etc.
      • Crear una copia del contenido de WordPress en Bluehost utilizando el plugin anterior. El archivo tenemos que guardarlo en nuestro ordenador.
      • Ir al WordPress que hemos instalado en Lightsail e instalar «All-in-One WP Migration».
      • Asegurar que hemos creado en el WP de Lightsail los usuarios que utilizaremos posteriormente.
      • Importar el archivo de copia que hemos guardado en nuestro ordenador anteriormente. Probablemente tengamos que descargarnos una extensión del plugin (gratuita) para poder importar archivos grandes.
      • Comprobar con la IP fija de la instancia de Lightsail que todo funciona correctamente, tanto a nivel de lectura como de administrador de WP.
      • Iniciar la migración del dominio desde Bluehost utilizando Route53. Este paso puede durar algunos días.
      • Mientras esperamos que Bluehost autorice el movimiento del dominio, crear las zonas DNS que queramos utilizar en Route53.
      • Una vez que ha finalizado el movimiento del dominio, tenemos que instalar un certificado de seguridad para habilitar HTTPS. Se puede hacer fácilmente a través de un script de Bitnami. Es gratuito.

Y ya está. Algunos de los pasos son algo complejos pero hay mucha información a través de Bitnami por lo que no es excesivamente complicado. Los dos pasos más delicados son la exportación e importación de datos de WP y la transferencia del dominio.