Pasos para instalar y configurar Joomla! en Ubuntu 18.04 en minutos

Empezar a desarrollar o actualizar un sitio web basado en Joomla! directamente en un servidor en línea no es la mejor idea. Por lo general, lo más recomendado es por lo menos iniciar el desarrollo localmente, es decir, en un ordenador y fuera de línea. Esto permite agilizar el proceso ya que aumenta la eficiencia debido a que los tiempos de carga son muchísimo menores. Las consultas a la base de datos son mucho más rápidas especialmente si el servidor que tienes contratado es muy lento. En este artículo voy a explicar en pasos sencillos como instalar Joomla! localmente en Ubuntu 18.04 o superior con una base de datos local y configurar el servidor local de tal forma que Joomla! funcione tan rápido como sea posible. A continuación los pasos. 

Instalar Apache 2

Primero tenemos que instalar Apache. Apache funciona como un servidor local 100% compatible con Joomla!

sudo apt-get install apache2 libapache2-mod-php7.2

Verificamos que el servidor Apache esté instalado en Ubuntu y activo, para esto lo habilitamos, iniciamos y verificamos el estado con los siguientes comandos 

sudo systemctl enable apache2
sudo systemctl start apache2
sudo systemctl status apache2

Para verificar que este esté funcionando, debes dirigirte a un navegador y escribir localhost en la barra de direcciones y verás un mensaje similar a este:

Instalar los módulos PHP 7 

Para instalar los módulos requeridos por Joomla! debes ejecutar los siguientes comandos:

sudo apt-get install php
sudo apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml

Si tienes planeado usar el componente K2 en Joomla! debes ejecutar este comando adicional:

sudo apt-get install php-mbstring

Instalar Joomla!

El procedimiento en este caso puede realizarse desde la línea de comandos o no. En este caso lo voy a explicar utilizando la interfaz gráfica de Ubuntu.

  1. Crea una carpeta para el proyecto en la ubicación /var/www/html/nombre_de_proyecto
  2. Descarga el ZIP de la última versión de Joomla! disponible en este enlace
  3. Descomprime el ZIP en la carpeta que creaste /var/www/html/nombre_de_proyecto

Recuerda que para hacer estos cambios necesitas usar una instancia root de Nautilus o ejecutar los siguientes comandos desde la terminal en lugar de los pasos anteriores:

wget https://github.com/joomla/joomla-cms/releases/download/3.5.1/Joomla_3.8.7-Stable-Full_Package.zip
sudo mkdir /var/www/html/joomla
sudo unzip Joomla_3.8.7-Stable-Full_Package.zip -d /var/www/html/

Permisos correctos

Vamos a cambiar los permisos de forma que no haya problemas al subir el proyecto a un servidor en línea ni tengamos problemas de configuración en el proyecto local. Ejecuta los siguientes dos comandos para asignar usuario, grupo y permisos de lectura y escritura a los archivos y carpetas recursivamente. Recuerda que para más seguridad una vez que subas el proyecto a un servidor en línea debes usar una extensión como Admin Tools para ajustar los permisos; localmente este paso es suficiente para trabajar sin problemas. 

sudo chown -R www-data.www-data /var/www/html
sudo chmod -R 755 /var/www/html

Reiniciamos el servidor Apache con el siguiente comando:

sudo systemctl restart apache2.service

Instalar y configurar MySQL 

Antes de continuar, es necesario instalar y configurar la base de datos que vamos a usar localmente para la instalación de Joomla!. 

sudo apt install mysql-server php7.2-mysql

Verificamos que este activo el servidor MySQL

sudo systemctl status mysql

Es necesario realizar el proceso de seguridad durante la instalación de MySQL. En el caso de que no se inicie automáticamente una vez instalado MySQL ejecutamos el siguiente comando:

sudo mysql_secure_installation

Durante el proceso debes definir una contraseña que será utilizada frecuentemente en los siguientes procesos. En resumen puedes responder a los pasos de la siguiente forma:

Set root password? - Yes
Remove anonymous users? - Yes
Disallow root login remotely? - Yes
Remove test database and access to it? - Yes
Reload privilege tables now? - Yes

Reiniciamos el servidor Apache y MySQL

sudo systemctl restart apache2
sudo systemctl restart mysql

Ahora iniciamos sesión en MySQL con el siguiente comando:

sudo mysql -u root -p

Ejecutamos los siguientes comandos uno por uno. Básicamente creas una base de datos, creas un usuario y su contraseña de acceso y le das permisos para modificar la base de datos que creaste antes.

CREATE DATABASE basededatos;
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contrasena';
GRANT ALL PRIVILEGES ON basededatos.* TO 'usuario'@'localhost' IDENTIFIED BY 'contrasena' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit

Recuerda cambiar basededatos por el nombre de la base de datos que quieres crear, usuario por el que tu quieras y en contraseña escribes la que tu quieras. Reinicias el servidor Apache:

sudo systemctl restart apache2

Configuración final

Una vez listos los pasos anteriores ejecuta el siguiente comando. No es necesario en este momento definir una configuración específica en Apache para el proyecto. 

sudo a2enmod rewrite

En un navegador vamos a localhost/nombre_de_proyecto y seguimos los pasos de instalación básicos. En la primera sección ingresamos elementos básicos como el nombre del sitio, usuario de administración, contraseña y demás. En el segundo paso debemos configurar la base de datos de la siguiente forma:

Si dentro de las recomendaciones de la instalación está desactivar el "output buffering" debes editar el archivo de configuración de PHP de la siguiente forma:

sudo gedit /etc/php/7.2/apache2/php.ini

En la línea que dice output buffering: 4096 poner en su lugar output buffering: off

Y de nuevo, reiniciar el servidor Apache y proceder nuevamente con la instalación. Si de paso quieres aumentar el tamaño máximo del archivo que se puede subir al servidor (por ejemplo al adjuntar una imagen o subir una extensión para instalarla), en ese mismo archivo debes editar la línea que dice upload_max_filesize = 2M y cambiarla por un tamaño mayor. Generalmente los servidores en línea permiten hasta 64 Megabytes por lo que la línea quedaría así  upload_max_filesize = 64M

Y eso es todo. Si tienes alguna duda, comentario o sugerencia para mejorar el proceso no dudes en hacerlo saber por medio de los comentarios de este artículo.  

Fundador
Seguidor de Jesús. Escribo artículos en mi tiempo libre sobre temas de tecnología que me interesan.