How To Install Joomla on AlmaLinux 10

Joomla stands as one of the most powerful and flexible content management systems available today, offering an excellent alternative for users seeking more control than WordPress provides. When paired with AlmaLinux 10, a rock-solid enterprise-grade Linux distribution, you get a robust platform capable of handling everything from personal blogs to complex business applications. This comprehensive guide walks you through every step of installing Joomla on AlmaLinux 10, ensuring your CMS runs smoothly and securely.
AlmaLinux 10, codenamed “Purple Lion,” represents the latest evolution of this community-driven RHEL fork, bringing enhanced security features, improved hardware support, and enterprise-level stability to your server environment. The combination creates an ideal foundation for deploying production-ready Joomla websites.
Understanding Joomla and AlmaLinux 10
What Makes Joomla Special?
Joomla is an open-source content management system written in PHP that has been serving the web development community since 2005. It excels in areas where flexibility and extensibility matter most. The platform offers native multilingual support, advanced caching mechanisms, and a powerful design toolkit that gives developers granular control over every aspect of their websites.
Unlike simpler CMS options, Joomla caters to users who need sophisticated functionality out of the box. Whether you’re building a personal blog, corporate website, e-commerce platform, or community portal, Joomla provides the architecture to support complex requirements without compromising performance.
Why Choose AlmaLinux 10?
AlmaLinux 10 emerged as a community-driven response to changes in the enterprise Linux landscape. Released on May 27, 2025, this distribution brings significant improvements over its predecessors. The operating system includes enhanced security protocols, frame pointers for improved debugging capabilities, and broader hardware compatibility that makes it suitable for modern server deployments.
The distribution maintains binary compatibility with RHEL, ensuring that enterprise-grade stability meets open-source accessibility. For production environments where reliability cannot be compromised, AlmaLinux 10 provides the perfect foundation.
Prerequisites and System Requirements
Before diving into the installation process, ensure your environment meets all necessary requirements. Your server should have AlmaLinux 10 installed and running with root or sudo user access. A minimum of 2GB RAM is required, though 4GB is recommended for optimal performance. Allocate at least 10GB of free disk space to accommodate Joomla, its extensions, and your website content. A stable internet connection is essential throughout the installation process.
Technical Requirements for Joomla
Joomla 5 requires PHP 8.3 or higher, with PHP 8.4 recommended for the best performance and security. Your database can be either MySQL 8.0.13+ or MariaDB 10.6.0+, though MySQL 8.4 or MariaDB 12.0 are preferred for optimal compatibility. The web server should run Apache 2.4+ or Nginx 1.21+.
Several PHP modules are mandatory for Joomla to function properly. These include json, simplexml, dom, zlib, gd, and mysqlnd. Recommended modules that enhance functionality include mbstring, opcache, intl, curl, xml, and zip. These extensions ensure that Joomla can handle file uploads, image processing, internationalization, and other critical tasks efficiently.
If you plan to use a custom domain, ensure it points to your server’s IP address. While optional, an SSL certificate is strongly recommended for securing your website with HTTPS encryption.
Step 1: Update Your AlmaLinux 10 System
System updates form the foundation of server security and stability. Before installing any new software, update all existing packages to their latest versions. This practice prevents compatibility issues and ensures you benefit from the most recent security patches.
Open your terminal and execute the following command:
sudo dnf update -y && sudo dnf upgrade -y
The DNF package manager will download and install all available updates. This process may take several minutes depending on your internet connection and the number of packages requiring updates. If the kernel receives an update, consider rebooting your system to load the new kernel version.
Verify the update completed successfully by checking the system status. Regular system maintenance through updates should become part of your routine server management practices.
Step 2: Install Apache Web Server
Apache serves as the web server that processes HTTP requests and delivers your Joomla website to visitors. AlmaLinux 10’s package repositories include Apache, making installation straightforward through the DNF package manager.
Install Apache with this command:
sudo dnf install httpd -y
Once installation completes, start the Apache service and configure it to launch automatically at system boot:
sudo systemctl enable httpd
sudo systemctl start httpd
Verify Apache is running correctly:
sudo systemctl status httpd
You should see output indicating the service is “active (running).” Test your Apache installation by opening a web browser and navigating to your server’s IP address. You should see the default Apache test page.
Configure Firewall Rules
AlmaLinux 10 includes firewalld for network security. Allow HTTP and HTTPS traffic through the firewall:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
These commands ensure visitors can access your website on standard web ports. The permanent flag makes these rules persist across system reboots.
Step 3: Install MariaDB Database Server
Joomla requires a database to store content, user information, and configuration settings. MariaDB provides an excellent open-source database solution that’s fully compatible with Joomla’s requirements.
sudo dnf install mariadb-server -y
Start and enable the MariaDB service:
sudo systemctl enable mariadb
sudo systemctl start mariadb
Verify the database server is running:
sudo systemctl status mariadb
Secure Your Database Installation
Run the security script to harden your MariaDB installation:
sudo mysql_secure_installation
The script prompts you through several security configurations. When asked to set a root password, choose a strong, unique password and document it securely. Remove anonymous users by answering ‘Y’ to enhance security. Disable remote root login to prevent unauthorized access from external sources. Remove the test database as it serves no purpose in production. Reload privilege tables to apply all changes immediately.
These security measures significantly reduce your database’s attack surface and protect against common vulnerabilities.
Step 4: Install PHP and Required Modules
PHP powers Joomla’s dynamic functionality, processing user requests and generating web pages on demand. AlmaLinux 10 includes PHP in its repositories, along with all necessary extensions for running Joomla.
Install PHP with all required modules using this comprehensive command:
sudo dnf install php php-cli php-fpm php-curl php-mysqlnd php-gd php-readline php-mbstring php-opcache php-xml php-dom php-zip php-intl php-common php-bcmath php-json -y
Each module serves a specific purpose. The mysqlnd module enables database connectivity, while gd handles image manipulation. The mbstring module processes multibyte strings for international character support. Opcache improves performance by caching compiled PHP code in memory. The zip module allows Joomla to extract extension packages, and intl provides internationalization functions.
Verify your PHP installation:
php -v
You should see output displaying PHP version 8.3 or higher.
Configure PHP Settings
Optimize PHP configuration for Joomla by editing the php.ini file:
sudo nano /etc/php.ini
Locate and modify these critical settings:
memory_limit = 256M
upload_max_filesize = 32M
max_execution_time = 300
post_max_size = 32M
date.timezone = America/New_York
Adjust the timezone to match your server location. The memory limit of 256M accommodates Joomla’s resource requirements, though 512M is recommended for sites with many extensions. The upload limits allow you to install themes and extensions without encountering file size restrictions.
Restart Apache to apply PHP configuration changes:
sudo systemctl restart httpd
Step 5: Create Joomla Database and User
Joomla needs a dedicated database and user account with appropriate permissions. This separation enhances security by limiting database access to only what Joomla requires.
Log into MariaDB as root:
sudo mysql
Create a database named “joomla”:
CREATE DATABASE joomla;
Create a dedicated user for Joomla with a strong password:
CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'YourStrongPasswordHere';
Replace ‘YourStrongPasswordHere’ with a complex password containing uppercase and lowercase letters, numbers, and special characters. Document these credentials securely as you’ll need them during web-based installation.
Grant all necessary privileges:
GRANT ALL PRIVILEGES ON joomla.* TO 'joomla'@'localhost';
Flush privileges to ensure changes take effect:
FLUSH PRIVILEGES;
Exit the MySQL prompt:
exit;
Your database is now ready to receive Joomla’s installation.
Step 6: Download and Extract Joomla
Navigate to Apache’s document root directory:
cd /var/www/html
Download the latest stable Joomla 5 release using wget:
sudo wget https://downloads.joomla.org/cms/joomla5/5-2-1/Joomla_5-2-1-Stable-Full_Package.zip
Check the official Joomla downloads page for the most current version number and adjust the URL accordingly.
If unzip isn’t installed on your system, add it:
sudo dnf install unzip -y
Create a directory for Joomla and extract the files:
sudo mkdir -p /var/www/html/joomla
sudo unzip Joomla_5-2-1-Stable-Full_Package.zip -d /var/www/html/joomla
Remove the downloaded archive to conserve disk space:
sudo rm -f Joomla_5-2-1-Stable-Full_Package.zip
Verify extraction completed successfully by listing the Joomla directory contents.
Step 7: Set Proper File Permissions and Ownership
Correct file permissions balance security with functionality. Files need appropriate access levels to allow the web server to read and execute them while preventing unauthorized modifications.
Set ownership to the Apache user:
sudo chown -R apache:apache /var/www/html/joomla/
Configure directory permissions:
sudo chmod -R 755 /var/www/html/joomla/
The 755 permission level allows the owner (apache user) to read, write, and execute files, while others can only read and execute. This configuration prevents unauthorized users from modifying your Joomla installation while allowing Apache to serve content properly.
For enhanced security, some administrators prefer more restrictive permissions on sensitive files after installation completes.
Step 8: Configure Apache Virtual Host
Virtual hosts allow Apache to serve multiple websites from a single server. Creating a dedicated virtual host configuration for Joomla provides better organization and enables custom logging.
Create a new configuration file:
sudo nano /etc/httpd/conf.d/joomla.conf
Add this virtual host configuration:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html/joomla
<Directory /var/www/html/joomla>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/joomla_error.log
CustomLog /var/log/httpd/joomla_access.log combined
</VirtualHost>
Replace “yourdomain.com” with your actual domain name. The AllowOverride directive enables Joomla’s .htaccess file to control URL rewriting and security rules. Separate error and access logs help with troubleshooting and monitoring.
Test your Apache configuration syntax:
sudo httpd -t
You should see “Syntax OK” if the configuration is valid. Restart Apache to load the new virtual host:
sudo systemctl restart httpd
Step 9: Complete Joomla Web Installation
Access the Joomla installer by opening your web browser and navigating to your domain or server IP address. The installation wizard guides you through the remaining configuration steps.

Configuration Tab
The first screen requests basic site information. Enter a descriptive site name that reflects your website’s purpose. Provide your administrator email address for receiving system notifications and password reset requests. Create an admin username—avoid using “admin” as it’s a common target for brute-force attacks. Choose a strong password with at least 12 characters mixing uppercase, lowercase, numbers, and symbols.
Configure whether you want the site accessible during initial setup or prefer to work offline until ready to launch.
Database Configuration
Select MySQL or MariaDB as your database type. Enter “localhost” as the hostname since your database runs on the same server. Provide the database username and password you created earlier. Specify “joomla” as the database name. Consider changing the table prefix from “jos_” to something unique—this small change adds a security layer against SQL injection attacks that target default prefixes.
Click the “Test Connection” button to verify database credentials are correct before proceeding.
Finalization
Review all settings on the summary screen. You can optionally install sample data, which helps you understand Joomla’s structure if you’re new to the platform. Complete the installation by clicking the final button.
Joomla displays a success message when installation finishes. Critical security step: You must remove the installation directory before using your site:
sudo rm -rf /var/www/html/joomla/installation/
Failing to remove this directory creates a serious security vulnerability, allowing anyone to potentially reinstall Joomla and compromise your site.
Access your Joomla administrator panel by navigating to yourdomain.com/administrator. Log in with the credentials you created during installation.
Step 10: Install and Configure SSL Certificate
HTTPS encryption protects sensitive data transmitted between your website and visitors. Search engines also prioritize secure sites in rankings, making SSL essential for both security and SEO.
Install Certbot, a tool for obtaining free Let’s Encrypt SSL certificates:
sudo dnf install certbot python3-certbot-apache -y
Request a certificate for your domain:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
Certbot walks you through interactive prompts. Provide your email address for renewal notifications. Agree to the terms of service. Choose whether to share your email with the Electronic Frontier Foundation. When asked about HTTPS redirection, select “Redirect” to automatically forward all HTTP traffic to HTTPS.
Certbot automatically configures Apache with your new certificate and sets up automatic renewal. Verify the renewal timer is active:
sudo systemctl status certbot-renew.timer
Test your SSL configuration by visiting https://yourdomain.com in your browser. You should see a padlock icon indicating a secure connection.
Post-Installation Security Hardening
Security doesn’t end with installation. Implement these additional measures to protect your Joomla site from common threats.
Joomla-Specific Security
Change your administrator username from the default if you used “admin.” Access the User Manager in Joomla’s backend to create a new super user with a unique name, then delete the original admin account. Enable two-factor authentication for all administrator accounts—Joomla includes built-in support for authenticator apps like Google Authenticator.
Keep Joomla core and all extensions updated. Outdated software represents the primary vector for website compromises. Configure automatic update notifications so you’re immediately aware when patches become available.
Install a reputable security extension like Akeeba Admin Tools or RSFirewall. These tools add firewall functionality, monitor for suspicious activity, and help harden your installation with automatic security measures.
Server-Level Security
AlmaLinux 10 includes SELinux (Security-Enhanced Linux), which provides mandatory access controls. If SELinux blocks Apache from accessing Joomla files, restore the proper security context:
sudo restorecon -Rv /var/www/html/joomla/
Consider implementing fail2ban to block IP addresses that repeatedly fail login attempts. This tool significantly reduces the success rate of brute-force attacks.
Restrict file permissions after installation completes. Directories should typically use 755 permissions, while files should use 644. The configuration.php file can be set to 444 (read-only) once Joomla is properly configured.
Database Security
Beyond using strong passwords, limit your Joomla database user’s privileges to only what’s necessary. Regular backups protect against data loss from hardware failures, security incidents, or human error. Automate database backups to run daily and store copies off-site.
Optimizing Joomla Performance on AlmaLinux 10
Performance optimization ensures your website loads quickly and handles traffic efficiently.
Enable PHP OPcache by ensuring it’s active in your PHP configuration. OPcache stores compiled PHP code in memory, dramatically reducing page generation times. Configure Joomla’s built-in caching system by accessing System > Global Configuration > System tab. Enable both the Conservative Caching Handler and Progressive Caching Handler.
Activate Gzip compression in Joomla’s global configuration. Compression reduces the size of data transmitted to visitors, improving load times especially for users on slower connections. Fine-tune your MariaDB configuration by editing /etc/my.cnf.d/server.cnf and increasing buffer pool size based on available RAM.
For high-traffic sites, implement Redis or Memcached for session storage and page caching. These in-memory data stores outperform file-based caching significantly. Consider using a content delivery network (CDN) to serve static assets like images, CSS, and JavaScript files from geographically distributed servers.
Enable HTTP/2 in Apache for improved performance with modern browsers. Add this line to your Apache configuration:
Protocols h2 h2c http/1.1
Monitor server resources regularly using tools like htop, iotop, and netdata. Understanding resource utilization helps identify bottlenecks before they impact site performance.
Troubleshooting Common Installation Issues
Even following instructions carefully, you may encounter problems. Here are solutions to frequent issues.
Database Connection Errors: Verify your database credentials are correct. Ensure MariaDB is running with sudo systemctl status mariadb. Check that you granted proper privileges to the Joomla database user. Confirm the database name matches exactly what you specified.
PHP Module Missing Errors: The Joomla installer displays warnings if required PHP extensions are absent. Install missing modules with sudo dnf install php-modulename and restart Apache. Verify installation with php -m to list all loaded modules.
File Permission Issues: If Joomla cannot write to directories or create files, check ownership and permissions. The Apache user (typically “apache” on AlmaLinux) must own the Joomla directory. Use the chown and chmod commands detailed earlier to correct permissions.
Apache Configuration Problems: Run sudo httpd -t to check for syntax errors in your configuration files. Review error logs at /var/log/httpd/joomla_error.log for detailed information about what’s failing.
Firewall Blocking Access: If you cannot access your site remotely, verify firewall rules allow HTTP and HTTPS traffic. List current rules with sudo firewall-cmd --list-all. Add missing services as described in the Apache installation section.
SELinux Context Errors: SELinux can prevent Apache from reading Joomla files. Check for SELinux denials in /var/log/audit/audit.log. Restore proper context with the restorecon command mentioned in the security section.
Memory Limit Exhausted: If Joomla displays memory errors, increase PHP’s memory_limit setting in php.ini. Restart Apache after making changes. Complex operations like installing large extensions may require 512M or more.
Check Apache error logs with:
sudo tail -f /var/log/httpd/joomla_error.log
Joomla also logs errors to /var/www/html/joomla/administrator/logs/. Review these logs when troubleshooting backend issues.
Maintaining Your Joomla Installation
Regular maintenance keeps your site secure, fast, and reliable.
Automated Backup Strategy
Create a backup script that archives both your Joomla files and database. Schedule it to run daily using cron:
#!/bin/bash
DATE=$(date +%Y%m%d)
tar -czf /backup/joomla-files-$DATE.tar.gz /var/www/html/joomla
mysqldump -u joomla -p'YourPassword' joomla > /backup/joomla-db-$DATE.sql
Store backups on a separate server or cloud storage service. Test restoration procedures periodically to ensure backups are viable.
Update Management
Check for Joomla updates weekly through the administrator panel. The System > Update > Joomla dashboard shows available core updates. Navigate to System > Update > Extensions to update installed components, modules, and plugins. Always backup before applying updates.
Keep AlmaLinux packages current with regular sudo dnf update commands. Subscribe to AlmaLinux security mailing lists to receive notifications about critical updates.
Performance Monitoring
Install monitoring tools to track site performance and resource usage. Tools like New Relic, Datadog, or self-hosted solutions like Netdata provide insights into potential issues before they affect users. Set up alerts for high CPU usage, low disk space, or prolonged downtime.
Run database optimization routinely. Joomla’s database accumulates overhead from deleted content and old revisions. Use phpMyAdmin or command-line tools to optimize tables monthly.
Security scanning tools identify vulnerabilities in your installation. Services like Sucuri SiteCheck or Joomla-specific scanners examine your site for malware, outdated extensions, and security weaknesses.
Congratulations! You have successfully installed Joomla. Thanks for using this tutorial for installing Joomla CMS with LAMP on your AlmaLinux OS 10 system. For additional help or useful information, we recommend you check the official Joomla website.