Antiguamente solía utilizar CentOS porque mi primer servidor tenía CentOS (que traía cPanel también, por cierto) y con la idea de mantener la máxima compatibilidad, lo continué usando. Aunque fui descrubiendo que había mucho software que se podía instalar fácil con apt-get pero no estaba disponible en yum (el gestor de paquetes que utiliza CentOS), junto a otra serie de complicaciones que siempre iban surgiendo. Siempre que se intentaba seguir un tutorial para hacer algo en Linux, había pasos que no funcionaban igual, rutas que eran diferentes, problemas con permisos que no deberían ocurrir, etc.
En el trabajo utilicé en un par de ocasiones Ubuntu Server y es mucho más fácil todo. Simplemente con utilizar las guías de Digital Ocean, todo funciona a la primera (o casi, como veremos a continuación). Por lo que me decanté por esa opción. He instalado la versión 22.04 LTS porque es la más reciente con Long Term Support.
La primera complicación apareció a la hora de intentar conectarse al servidor por primera vez. Escogí la opción de utilizar un archivo de claves SSH RSA, pero no había manera de obtener acceso. Por lo visto es un error grave por su parte, porque por defecto la opción de autenticarse mediante una clave pública no está activado. En el archivo /etc/ssh/sshd_config debería aparecer PubkeyAuthentication yes, pero por defecto pone “no”. Por lo tanto es imposible acceder al sistema de esta manera.
Tuve que reinstalar el sistema operativo y elegir que se me asignara una contraseña aleatoria. De esta manera sí he podido acceder, activar la autenticación por clave pública y desactivar el acceso con esa contraseña. Este problema en total me pudo costar por lo menos 45 minutos hasta que di con la solución. En todo momento creí que era algo que no estaba haciendo bien. Reinstalé el sistema solo por probar algo nuevo. Es después cuando descubrí que era imposible que hubiese funcionado.
Una vez con acceso al sistema, el primer paso era instalar PHP 8.0. Porque por defecto se instalaría la versión 7.4. Seguí los pasos de esta guía, que básicamente consisten en instalar un par de dependencias, añadir el repositorio de ppa:ondrej/php e instalar php8.0. A continuación me aseguré de instalar todo el resto de dependencias de Laravel 9 de golpe. Para ello copié comandos de esta otra guía:
$ sudo apt install php8.0-common php8.0-mysql php8.0-xml php8.0-xmlrpc php8.0-curl php8.0-gd php8.0-imagick php8.0-cli php8.0-dev php8.0-imap php8.0-mbstring php8.0-opcache php8.0-soap php8.0-zip php8.0-intl -y
$ sudo apt-get install libapache2-mod-php8.0
Una vez hecho eso, lo que queda es instalar Apache y MySQL. Para ello, seguí la guía de Digital Ocean, que es la que siempre suele funcionar. Los únicos pasos extra que hay que realizar son relativos a la sección del firewall: tenemos que asegurarnos que OpenSSH se activa, de lo contrario nos quedaremos sin acceso SSH. Tuve este problema y tuve que acceder al servidor mediante una consola web que ofrece OVH y gracias a que todavía mantenía la contraseña que me asignaron. En eso perdí 30-40 minutos fácil.
El problema surgió de la sección relativa al comando mysql_secure_installation: en un paso se queda pillado y tienes que abrir otra conexión SSH para introducir la contraseña de mysql de otra manera (obtenido de esta web). Ahí es donde descubrí que no se podía abrir otra conexión porque OpenSSH no estaba disponible.
El resto de los pasos sí funcionaba sin problemas y se pudieron realizar las primeras pruebas y migraciones de datos.
Un cometnario
[…] vez con el servidor configurado, quedaba el paso de mover los datos del servidor antiguo al nuevo. Este es un proceso delicado […]