RHEL BasedRocky Linux

How To Install Joomla on Rocky Linux 10

Install Joomla on Rocky Linux 10

Joomla is one of the most powerful open-source content management systems on the planet, powering over 2 million active websites across every industry imaginable. If you want a flexible, battle-tested CMS that gives you more control than WordPress without the complexity of Drupal, Joomla is a smart choice. This guide walks you through a complete install Joomla on Rocky Linux 10 setup — from a bare server to a fully working, production-ready site.

Whether you’re a developer spinning up a client project or a sysadmin setting up an enterprise content portal, this Linux server tutorial has everything you need. We’ll use the LAMP stack (Linux, Apache, MariaDB, PHP) — the most stable and widely supported environment for Joomla deployments. By the end, you’ll have Joomla running, secured, and ready to build on.

What Is Joomla and Why Use It?

Joomla is a free, open-source CMS built on PHP. It launched in 2005 and has since grown into a mature platform used by governments, universities, NGOs, and commercial businesses worldwide. The current stable release is Joomla 5.x, which requires PHP 8.1 or higher.

Here’s why developers and sysadmins choose Joomla:

  • Flexible architecture — supports complex multi-language, multi-site deployments
  • Massive extension library — over 8,000 extensions in the Joomla Extensions Directory (JED)
  • Strong access control — granular user roles and permissions built in
  • Active community — regular security releases and long-term support versions

Why Rocky Linux 10 Is the Right Server Choice

Rocky Linux 10 is a community-maintained, enterprise-grade Linux distribution that is 100% binary-compatible with Red Hat Enterprise Linux (RHEL). It replaced CentOS as the go-to free RHEL alternative for production server environments.

Rocky Linux 10 offers:

  • Long-term support — predictable, stable updates for years
  • SELinux enforced by default — strong mandatory access control out of the box
  • DNF package management — fast, reliable package resolution
  • Enterprise-level reliability — the same foundation used in corporate data centers

For a Joomla on Rocky Linux 10 setup, this OS is an excellent match. Its stability and RHEL compatibility make it ideal for hosting production web applications.

Prerequisites

Before you begin, make sure you have the following in place:

  • A fresh Rocky Linux 10 server (VPS or dedicated machine)
  • Root access or a sudo-privileged user account
  • At least 1 GB RAM, 1 CPU core, and 10 GB of disk space
  • A domain name pointed to your server’s IP (optional, but recommended for SSL)
  • Ports 80 (HTTP) and 443 (HTTPS) available
  • Basic comfort with the Linux command line

Pro Tip: Take a server snapshot before you start. It takes 30 seconds and saves hours if something goes wrong.

Step 1: Update Your System

Always start with a fully updated system. This ensures you’re installing packages against current, patched dependencies — and avoids hard-to-debug version conflicts later.

sudo dnf update -y

If a kernel update is applied, reboot your server:

sudo reboot

After the system comes back online, reconnect via SSH and continue.

Step 2: Install Apache Web Server

Apache (httpd) is the web server that will serve your Joomla site to the world. It’s the most widely deployed web server for LAMP stacks and has excellent Joomla compatibility.

Install and Enable Apache

sudo dnf install httpd -y

Start Apache and configure it to launch automatically on every reboot:

sudo systemctl start httpd
sudo systemctl enable httpd

Verify it’s running:

sudo systemctl status httpd

You should see active (running) in green.

Open Firewall Ports

Rocky Linux 10 uses firewalld by default. You need to explicitly allow HTTP and HTTPS traffic:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

To confirm Apache is working, open a browser and navigate to http://your-server-ip. You should see the default Apache test page.

Step 3: Install MariaDB and Secure It

Joomla stores all its content, configuration, and user data in a relational database. MariaDB is the default MySQL-compatible database on Rocky Linux and works perfectly with Joomla.

Install MariaDB

sudo dnf install mariadb-server mariadb -y

Start and enable the service:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Run the Security Script

This script removes insecure defaults that ship with MariaDB out of the box:

sudo mysql_secure_installation

Follow the prompts:

  1. Set a strong root password
  2. Remove anonymous users — Yes
  3. Disallow remote root login — Yes
  4. Remove the test database — Yes
  5. Reload privilege tables — Yes

Never skip this step on a production server.

Create a Joomla Database and User

Log into the MariaDB shell:

sudo mysql -u root -p

Run these SQL commands to create a dedicated database and user for Joomla:

CREATE DATABASE joomla_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'joomla_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON joomla_db.* TO 'joomla_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Why utf8mb4? It fully supports emoji and international characters — important for multilingual Joomla sites. Never use the root account to connect Joomla to your database. Dedicated users with limited privileges are a core security principle.

Step 4: Install PHP and Required Extensions

Joomla 5.x requires PHP 8.1 or higher. Rocky Linux 10 ships with a compatible version via its default DNF repositories.

Install PHP

sudo dnf install php php-mysqlnd php-curl php-xml php-zip php-intl php-gd php-mbstring php-json php-ldap php-bcmath php-soap php-opcache -y

Verify the installed version:

php -v

Expected output:

PHP 8.2.x (cli) (built: ...) ...

Tune PHP for Joomla

Open the PHP configuration file:

sudo nano /etc/php.ini

Find and update these values:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = Asia/Jakarta

Note: Replace Asia/Jakarta with your actual server timezone. Run timedatectl list-timezones for a full list.

Save the file, then restart Apache to load the new PHP settings:

sudo systemctl restart httpd

Missing PHP extensions are the #1 cause of Joomla installation failures. If the installer shows warnings about missing modules, go back and install what’s flagged before continuing.

Step 5: Download and Extract Joomla

Now you’ll pull the latest Joomla package directly from the official download servers and deploy it to your web root.

Download Joomla

Navigate to the temporary directory:

cd /tmp

Download the latest stable Joomla package:

wget https://downloads.joomla.org/cms/joomla5/5-3-1/Joomla_5-3-1-Stable-Full_Package.zip -O joomla.zip

Tip: Always check the official Joomla downloads page for the most current version number before running this command.

Extract and Deploy

Install unzip if it’s not already available:

sudo dnf install unzip -y

Create the target web directory and extract Joomla into it:

sudo mkdir -p /var/www/html/joomla
sudo unzip joomla.zip -d /var/www/html/joomla/

Set Correct Permissions

Set Apache as the owner of all Joomla files:

sudo chown -R apache:apache /var/www/html/joomla
sudo find /var/www/html/joomla -type d -exec chmod 755 {} \;
sudo find /var/www/html/joomla -type f -exec chmod 644 {} \;

Using find with -type d and -type f separately gives you precise control — directories get 755, files get 644. This is the correct production approach.

Step 6: Configure Apache Virtual Host for Joomla

A Virtual Host tells Apache how to serve your Joomla site — where the files live, what domain to respond to, and how to handle URL rewrites. This step is critical for Joomla’s SEF (Search Engine Friendly) URLs to work correctly.

Create the Virtual Host Configuration File

sudo nano /etc/httpd/conf.d/joomla.conf

Paste in the following configuration:

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/html/joomla

    <Directory /var/www/html/joomla>
        AllowOverride All
        Require all granted
        Options -Indexes
    </Directory>

    ErrorLog /var/log/httpd/joomla_error.log
    CustomLog /var/log/httpd/joomla_access.log combined
</VirtualHost>

Replace yourdomain.com with your actual domain or server IP. Key directives explained:

  • AllowOverride All — allows Joomla’s .htaccess file to control URL rewriting
  • Options -Indexes — disables directory listing (security best practice)
  • Dedicated log files make troubleshooting much easier

Test and Restart Apache

Always validate your Apache config before restarting:

sudo apachectl configtest

If you see Syntax OK, restart Apache:

sudo systemctl restart httpd

Step 7: Configure SELinux for Joomla

This is the step most tutorials skip — and the #1 reason Rocky Linux Joomla installations fail silently. SELinux is enforced by default on Rocky Linux 10. Without the right SELinux context, Apache will be blocked from writing Joomla’s configuration.php during installation.

Apply the Correct SELinux File Context

sudo chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/joomla/

If Joomla still shows the “Insufficient permission to create configuration.php” error, run:

sudo touch /var/www/html/joomla/configuration.php
sudo chmod 664 /var/www/html/joomla/configuration.php
sudo chown apache:apache /var/www/html/joomla/configuration.php
sudo chcon -t httpd_sys_rw_content_t /var/www/html/joomla/configuration.php

Allow Apache to make outbound network connections:

sudo setsebool -P httpd_can_network_connect 1

Check your current SELinux mode:

sestatus

Never disable SELinux in production. Configure it correctly instead. Disabling it trades a few minutes of convenience for a permanent security hole.

Step 8: Install Joomla on Rocky Linux 10 — Complete the Web Installer

With the server stack fully configured, finish the installation through Joomla’s browser-based setup wizard. Open your browser and navigate to:

http://yourdomain.com

Site Configuration

Fill in the Joomla Installation Wizard:

  • Site Name — the name of your website
  • Admin Email — use a real, monitored address
  • Admin Username — do NOT use “admin”
  • Admin Password — 12+ characters, mixed case, numbers, symbols

Click “Setup Login Data” to continue.

Install Joomla on Rocky Linux 10

Database Configuration

On the database configuration screen, enter:

Field Value
Database Type MySQLi
Hostname localhost
Username joomla_user
Password StrongPassword123!
Database Name joomla_db
Table Prefix jml_ (auto-generated or custom)

Click “Setup Database Connection”.

Install and Finalize

Review the installation summary, then click “Install Joomla”. When you see the “Congratulations! Joomla is now installed” screen, you’re done.

If the installer doesn’t auto-remove the installation directory, run this manually:

sudo rm -rf /var/www/html/joomla/installation/

Leaving the installation directory in place is a serious security risk — Joomla won’t let your site run until it’s removed.

Step 9: Access the Joomla Admin Dashboard

Navigate to your admin panel:

http://yourdomain.com/administrator/

Log in with the credentials you set during the web installer. From the Joomla Admin Dashboard you can:

  • Create and manage articles and categories
  • Install templates to control your site’s design
  • Add extensions for e-commerce, forms, SEO, and more
  • Manage user accounts and access levels

Your site’s public frontend is live at http://yourdomain.com/.

Step 10: Secure Joomla with a Free Let’s Encrypt SSL Certificate

HTTPS is not optional in 2026. It affects SEO rankings, browser trust warnings, and protects your users’ data. Let’s Encrypt provides free, auto-renewing SSL certificates.

Install Certbot and the Apache plugin:

sudo dnf install certbot python3-certbot-apache -y

Obtain and automatically configure your SSL certificate:

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Verify auto-renewal is active:

sudo systemctl status certbot.timer

Finally, update Joomla’s site URL in System → Global Configuration → Site to https://yourdomain.com.

Post-Installation Security Best Practices

Getting Joomla installed is only half the job. Hardening your installation protects you from the most common attack vectors.

  • Change the default admin username immediately — “admin” is targeted by every automated brute-force tool
  • Enable Two-Factor Authentication (2FA) via Joomla’s built-in User Manager
  • Lock down configuration.php after setup:
    sudo chmod 444 /var/www/html/joomla/configuration.php
  • Keep Joomla and all extensions updated — outdated extensions are the leading cause of compromises
  • Run regular database backups using the free Akeeba Backup extension or a cron-scheduled mysqldump
  • Install Admin Tools for Joomla — acts as a Web Application Firewall at the CMS level
  • Monitor Apache error logs at /var/log/httpd/joomla_error.log for early signs of trouble

Troubleshooting Common Issues

Even a careful install can hit a snag. Here are the five most common errors and how to fix them fast.

1. 403 Forbidden Error

Cause: File permission or SELinux context issue.

Fix:

sudo chown -R apache:apache /var/www/html/joomla
sudo chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/joomla/

2. 500 Internal Server Error

Cause: A malformed .htaccess file or a missing PHP extension.

Fix: Check the Apache error log first:

sudo tail -50 /var/log/httpd/joomla_error.log

Reinstall any flagged PHP module with sudo dnf install php-[module] -y, then restart Apache.

3. Blank White Screen

Cause: PHP memory limit is too low.

Fix: Edit /etc/php.ini, set memory_limit = 256M, then restart Apache:

sudo systemctl restart httpd

4. Database Connection Failed

Cause: Incorrect credentials, wrong database name, or MariaDB isn’t running.

Fix:

sudo systemctl status mariadb

If it’s stopped, start it: sudo systemctl start mariadb. Double-check the database credentials match exactly what you created in MariaDB.

5. Joomla Installer Loop or Won’t Load

Cause: mod_rewrite isn’t enabled or AllowOverride All isn’t set in the Virtual Host.

Fix:

sudo apachectl configtest && sudo systemctl restart httpd

Congratulations! You have successfully installed Joomla. Thanks for using this tutorial for installing Joomla with LAMP on your Rocky Linux 10 system. For additional help or useful information, we recommend you check the official Joomla website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is a dedicated and highly skilled Linux Systems Administrator with over a decade of progressive experience in designing, deploying, and maintaining enterprise-grade Linux infrastructure. His professional journey began in the telecommunications industry, where early exposure to Unix-based operating systems ignited a deep and enduring passion for open-source technologies and server administration.​ Throughout his career, r00t has demonstrated exceptional proficiency in managing large-scale Linux environments, overseeing more than 300 servers across development, staging, and production platforms while consistently achieving 99.9% system uptime. He holds advanced competencies in Red Hat Enterprise Linux (RHEL), Debian, and Ubuntu distributions, complemented by hands-on expertise in automation tools such as Ansible, Terraform, Bash scripting, and Python.
Back to top button