Instalación de Joomla en servidor Linux
Joomla es un potente y fácil de usar sistema de gestión de contenido construido en PHP que permite la creación de aplicaciones web sofisticadas y sitios web dinámicos impulsados por contenido. Con un fuerte apoyo de la comunidad y una amplia extensibilidad a través de componentes y módulos, Joomla impulsa millones de sitios web globalmente. Esta guía proporciona un walkthrough completo para instalar Joomla en un servidor Linux con Apache o Nginx, configurar MySQL, endurecimiento de seguridad y optimización del rendimiento.
Tabla de contenidos
- Requisitos previos
- Requisitos del sistema
- Instalación de la pila LAMP
- Configuración de PHP
- Configuración de la base de datos
- Instalación de Joomla
- Configuración del servidor web
- SSL y HTTPS
- Endurecimiento de seguridad
- Configuración posterior a la instalación
- Estrategia de copia de seguridad
- Conclusión
Requisitos previos
Antes de la instalación, verifique que tiene:
- Ubuntu 20.04 LTS o posterior ejecutándose en su servidor
- Privilegios root o sudo
- Un nombre de dominio válido
- Mínimo 2GB de RAM (4GB+ recomendado)
- 15GB de espacio en disco disponible
- Conocimientos básicos de administración de Linux
Actualice los paquetes del sistema:
sudo apt update && sudo apt upgrade -y
Requisitos del sistema
Joomla requiere versiones específicas de software para un funcionamiento óptimo. Verifique su entorno:
Vea la distribución de Linux y kernel:
cat /etc/os-release
uname -r
Verifique la memoria disponible:
free -h
Verifique el espacio en disco disponible:
df -h /var/www
Instalación de la pila LAMP
Instale la pila completa de Linux, Apache, MySQL y PHP:
Instale el servidor web Apache:
sudo apt install -y apache2 apache2-utils apache2-doc
Instale MySQL Server:
sudo apt install -y mysql-server mysql-client
Instale PHP 8.0 o posterior:
sudo apt install -y php php-common php-mysql php-curl php-gd php-json php-mbstring php-xml php-xmlrpc php-opcache php-soap php-zip
Verifique la versión de PHP:
php --version
Verifique que las extensiones están cargadas:
php -m | grep -E "curl|gd|json|mbstring|mysql|xml|zip"
Habilite los módulos de Apache:
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod proxy
Inicie los servicios:
sudo systemctl start apache2
sudo systemctl start mysql
sudo systemctl enable apache2
sudo systemctl enable mysql
Configuración de PHP
Configure PHP para los requisitos de Joomla:
Edite la configuración de PHP:
sudo nano /etc/php/8.0/apache2/php.ini
Actualice estas configuraciones críticas:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 100M
post_max_size = 100M
max_input_vars = 5000
date.timezone = UTC
Edite la configuración de PHP-CLI:
sudo nano /etc/php/8.0/cli/php.ini
Aplique la misma configuración. Reinicie Apache:
sudo systemctl restart apache2
Configuración de la base de datos
Asegure la instalación de MySQL:
sudo mysql_secure_installation
Cree la base de datos de Joomla:
sudo mysql -u root -p << EOF
CREATE DATABASE joomla;
CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'ComplexPassword123!';
GRANT ALL PRIVILEGES ON joomla.* TO 'joomla'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
Verifique el acceso a la base de datos:
mysql -u joomla -p -h localhost joomla
show tables;
exit;
Instalación de Joomla
Cree el directorio web:
sudo mkdir -p /var/www/joomla
sudo chown -R www-data:www-data /var/www/joomla
Descargue la última versión de Joomla:
cd /tmp
wget https://downloads.joomla.org/cms/joomla4/stable-4/Joomla_4-latest-Stable-Full_Package.zip
unzip Joomla_4-latest-Stable-Full_Package.zip
Copie los archivos a la raíz web:
sudo cp -r /tmp/joomla/* /var/www/joomla/
sudo cp /tmp/joomla/.htaccess /var/www/joomla/
Establezca los permisos correctos:
sudo chown -R www-data:www-data /var/www/joomla
sudo find /var/www/joomla -type f -exec chmod 644 {} \;
sudo find /var/www/joomla -type d -exec chmod 755 {} \;
sudo chmod 777 /var/www/joomla/configuration.php
Configuración del servidor web
Configuración de Apache
Cree un host virtual:
sudo nano /etc/apache2/sites-available/joomla.conf
Agregue la configuración:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/joomla
<Directory /var/www/joomla>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/joomla_error.log
CustomLog ${APACHE_LOG_DIR}/joomla_access.log combined
</VirtualHost>
Habilite el sitio y deshabilite el predeterminado:
sudo a2ensite joomla.conf
sudo a2dissite 000-default.conf
Pruebe y recargue Apache:
sudo apache2ctl configtest
sudo systemctl reload apache2
Habilite la compatibilidad con .htaccess:
sudo nano /var/www/joomla/.htaccess
Verifique que la RewriteBase esté configurada correctamente.
Configuración de Nginx
Cree la configuración de Nginx:
sudo nano /etc/nginx/sites-available/joomla.conf
Agregue la configuración:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/joomla;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
Habilite la configuración:
sudo ln -s /etc/nginx/sites-available/joomla.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
SSL y HTTPS
Instale Certbot para certificados SSL de Let's Encrypt:
sudo apt install -y certbot python3-certbot-apache
Obtenga un certificado SSL:
sudo certbot certonly --apache -d example.com -d www.example.com
Actualice la configuración de Apache para usar HTTPS:
sudo nano /etc/apache2/sites-available/joomla.conf
Reemplace el contenido con:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/joomla
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
<Directory /var/www/joomla>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/joomla_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/joomla_ssl_access.log combined
</VirtualHost>
Habilite los módulos SSL:
sudo a2enmod ssl
sudo apache2ctl configtest
sudo systemctl reload apache2
Endurecimiento de seguridad
Deshabilite la ejecución de PHP en directorios de carga:
sudo nano /var/www/joomla/images/.htaccess
Agregue:
php_flag engine off
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
Cambie el nombre del archivo de configuración después de la instalación:
sudo mv /var/www/joomla/configuration.php /var/www/joomla/configuration.php.bak
Elimine la carpeta de instalación después de la configuración:
sudo rm -rf /var/www/joomla/installation
Deshabilite la edición de archivos en el administrador de Joomla:
Actualice configuration.php en el panel de administración de Joomla y establezca:
- System → Global Configuration → Server → File Permissions → Deshabilitar "Edit Core Files"
Configure encabezados de seguridad en Apache:
sudo nano /etc/apache2/sites-available/joomla.conf
Agregue al VirtualHost:
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "no-referrer-when-downgrade"
Configure firewall de aplicaciones web:
sudo apt install -y libapache2-mod-security2
sudo a2enmod security2
sudo systemctl reload apache2
Configuración posterior a la instalación
Acceda al asistente de instalación de Joomla en https://example.com y complete la configuración:
- Configure el nombre del sitio, descripción y correo electrónico del administrador
- Configuración de la base de datos (host: localhost, nombre: joomla, usuario: joomla)
- Cree una cuenta de administrador con contraseña fuerte
- Elimine la carpeta de instalación
Verifique la finalización de la instalación:
ls -la /var/www/joomla/installation
Debería estar vacío o eliminado.
Configure URL amigables en Joomla:
- Inicie sesión en el panel de administración
- System → Global Configuration → SEO Settings
- Habilite "Search Engine Friendly URLs"
Configure SMTP para correo electrónico:
- System → Global Configuration → Server
- Establezca el nombre de correo de envío y correo electrónico
- Configure los detalles del servidor SMTP
Estrategia de copia de seguridad
Cree un script de copia de seguridad:
sudo nano /usr/local/bin/joomla-backup.sh
Agregue:
#!/bin/bash
BACKUP_DIR="/backups/joomla"
JOOMLA_DIR="/var/www/joomla"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Copia de seguridad de la base de datos
mysqldump -u joomla -p'ComplexPassword123!' joomla | gzip > "$BACKUP_DIR/joomla-db-$DATE.sql.gz"
# Copia de seguridad de archivos
tar -czf "$BACKUP_DIR/joomla-files-$DATE.tar.gz" "$JOOMLA_DIR"
# Mantener solo 30 días
find $BACKUP_DIR -type f -mtime +30 -delete
echo "Backup completed: $DATE"
Haga ejecutable:
sudo chmod +x /usr/local/bin/joomla-backup.sh
Programe copias de seguridad diarias:
sudo crontab -e
Agregue:
0 2 * * * /usr/local/bin/joomla-backup.sh >> /var/log/joomla-backup.log 2>&1
Conclusión
Joomla ahora está completamente instalado, configurado y asegurado en su servidor Linux. La combinación de Apache/Nginx, base de datos MySQL, encriptación SSL y endurecimiento de seguridad proporciona una plataforma robusta para su presencia web. Mantenga copias de seguridad regulares, mantenga las extensiones actualizadas y monitoree el rendimiento de su sitio para una operación óptima. Aproveche las poderosas características de Joomla y la amplia biblioteca de componentes para crear experiencias web atractivas.


