Joomla Hosting — Shared, VPS and Managed Hosting for Joomla
In this tutorial, you'll learn how to choose and configure the right hosting for your Joomla site, including shared hosting providers, VPS setup with LAMP or LEMP stacks, managed Joomla hosting, and migrating between hosts using Akeeba Backup.
What You'll Learn
- Joomla server requirements: PHP 8.1+, MySQL 8/MariaDB 10.4+, Apache mod_rewrite
- Shared hosting providers optimized for Joomla: SiteGround, A2 Hosting, Hostinger
- VPS hosting setup with LAMP (Linux, Apache, MySQL, PHP) and LEMP (Linux, Nginx, MySQL, PHP-FPM)
- Managed Joomla hosting: Cloudaccess.net, Rochen, and Akeeba Backup integration
- Configuring .htaccess for Joomla on Apache
- Migrating Joomla between hosts using Akeeba Backup and Kickstart
- PHP settings for optimal Joomla performance
Why It Matters
Hosting is the foundation of your Joomla site. The wrong host means slow page loads, frequent downtime, and security vulnerabilities. The right host means your site loads fast, stays available, and requires less maintenance. Understanding hosting options helps you match the hosting type to your project's needs and budget.
Real-World Use
A small business owner launches a Joomla site on a cheap shared hosting plan for $3/month. The site works fine for two months. Then a blog post goes viral, traffic spikes, and the server cannot handle the load — the site crashes. The owner loses potential customers. Had they chosen a scalable VPS or a managed Joomla host with resource limits, the spike would have been handled automatically.
Learning Path
flowchart LR A["Local Installation"] --> B["Admin Dashboard"] B --> C["Joomla Hosting
You are here"]:::current C --> D["Articles & Categories"] D --> E["Tags & Organization"] classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px
Joomla Server Requirements
Before choosing a host, verify they meet Joomla's minimum requirements:
| Requirement | Minimum | Recommended |
|---|---|---|
| PHP version | 8.1.0 | 8.2+ |
| MySQL version | 8.0+ | 8.0+ |
| MariaDB version | 10.4+ | 10.6+ |
| Web server | Apache 2.4+ or Nginx 1.18+ | Apache 2.4+ with mod_rewrite |
| Memory limit | 128M | 256M |
| Upload max size | 32M | 64M |
| PHP Execution time | 60 seconds | 120 seconds |
Required Apache Modules
If using Apache, ensure these modules are enabled:
mod_rewrite
mod_headers
mod_expires
mod_deflate
mod_mime
mod_filter
Required PHP Extensions
The host must have these PHP extensions installed:
mysqli, mbstring, xml, dom, json, gd, zip, curl, openssl, fileinfo, filter
Shared Hosting for Joomla
Shared hosting is the most affordable option. Your site shares server resources with other websites. Good for small sites with moderate traffic.
Recommended Providers
| Provider | Starting Price | Joomla Features |
|---|---|---|
| SiteGround | $3.99/month | Joomla auto-installer, SG Optimizer plugin, free SSL, daily backup |
| A2 Hosting | $2.99/month | Joomla optimized, free SSL, A2 Optimized plugin, anytime money-back |
| Hostinger | $2.99/month | Joomla auto-installer, free SSL, weekly backup, LiteSpeed cache |
What to Check
When evaluating shared hosting for Joomla:
- PHP version: Latest PHP 8.x available and updatable
- MySQL version: MySQL 8+ or MariaDB 10.4+
- Database count: Sufficient databases for your sites
- SSL certificate: Free Let's Encrypt or AutoSSL included
- Backups: Daily or weekly backups included
- Staging: Ability to create a staging copy of your site
- Support: Joomla-knowledgeable support team
VPS Hosting Setup
A Virtual Private Server (VPS) gives you dedicated resources. You have full control but must manage the server yourself.
LAMP Stack (Apache)
LAMP stands for Linux, Apache, MySQL, and PHP. Here is how to set it up on a DigitalOcean droplet running Ubuntu.
# Update system packages
sudo apt update && sudo apt upgrade -y
# Install Apache
sudo apt install apache2 -y
sudo a2enmod rewrite headers expires deflate
# Install MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation
# Install PHP and required extensions
sudo apt install php8.2 libapache2-mod-php8.2 php8.2-mysql \
php8.2-mbstring php8.2-xml php8.2-gd php8.2-zip \
php8.2-curl php8.2-openssl php8.2-fileinfo php8.2-filter -y
# Restart Apache
sudo systemctl restart apache2
After installing, create a database and user for Joomla:
sudo mysql -u root -p
CREATE DATABASE joomla_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'joomla_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON joomla_db.* TO 'joomla_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
LEMP Stack (Nginx)
LEMP uses Nginx instead of Apache. Nginx handles high concurrency better.
# Install Nginx
sudo apt install nginx -y
# Install MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation
# Install PHP-FPM
sudo apt install php8.2-fpm php8.2-mysql php8.2-mbstring \
php8.2-xml php8.2-gd php8.2-zip php8.2-curl php8.2-openssl \
php8.2-fileinfo php8.2-filter -y
Create an Nginx server block for Joomla:
server {
listen 80;
server_name example.com;
root /var/www/joomla;
index index.php;
# Enable Joomla SEF URLs
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP processing
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
# Deny access to sensitive files
location ~* (configuration\.php|\.htaccess|\.git) {
deny all;
}
# Cache static files
location ~* \.(css|js|jpg|jpeg|png|gif|ico|webp)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
PHP Settings
Add these to your php.ini for optimal Joomla performance:
memory_limit = 128M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
max_input_time = 120
max_input_vars = 2000
Managed Joomla Hosting
Managed hosting providers specialize in Joomla and handle server administration for you.
| Provider | Starting Price | Features |
|---|---|---|
| Cloudaccess.net | $9.95/month | Joomla-optimized, free Migration, staging, CDN |
| Rochen | $9.99/month | Joomla experts, LiteSpeed, free SSL, staging |
| Akeeba Backup | Free plugin | Backup and restore, integrates with managed hosts |
Managed hosting is ideal if you want to focus on building your site rather than managing servers. The provider handles PHP updates, security patches, and performance optimization.
Configuring htaccess.txt
Joomla ships with a file called htaccess.txt in the root directory. This file contains Apache rewrite rules for SEF URLs, security headers, and Caching.
To enable it:
# Rename htaccess.txt to .htaccess in your Joomla root
cp htaccess.txt .htaccess
Then enable SEF URLs in Global Configuration:
- Go to System > Global Configuration > Site.
- Set "Search Engine Friendly URLs" to Yes.
- Set "Use URL Rewriting" to Yes.
- Save.
The .htaccess file handles:
- Rewriting URLs for SEF (search engine friendly) format
- Blocking access to sensitive files (configuration.php, .htaccess itself)
- Setting caching headers for static files
- Gzip compression
- Directory listing prevention
Key sections of the .htaccess file:
# Enable rewrite engine
RewriteEngine On
# SEF URL rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
# Block access to sensitive files
<FilesMatch "\.(htaccess|htpasswd|ini|phps|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Block access to configuration.php
<Files configuration.php>
Order Allow,Deny
Deny from all
</Files>
Migrating Joomla Between Hosts
Moving a Joomla site from one host to another is straightforward with Akeeba Backup.
Step 1: Create a Backup
Install Akeeba Backup (free extension). Go to Components > Akeeba Backup and click "Backup Now." This creates a .jpa backup file containing your entire site — files and database.
Step 2: Download the Backup
Download the .jpa backup file from the Akeeba Backup admin panel. Also download Kickstart, a single-file restoration script from akeebabackup.com.
Step 3: Upload to New Host
Upload both the .jpa file and kickstart.php to the root of your new hosting account using FTP or the host's file manager.
Step 4: Run Kickstart
Browse to http://yournewdomain.com/kickstart.php. Kickstart extracts the backup and restores it. Enter your new database credentials when prompted.
Step 5: Update Configuration
After restoration, Kickstart updates configuration.php with the new database settings automatically. It also prompts you to remove the installation directory and rename the administrator folder if needed.
Common Mistakes
Choosing the cheapest shared hosting: $3/month plans often have outdated PHP, no backups, and poor support. You save money upfront but lose time and customers when the site is slow or hacked.
Forgetting to enable .htaccess: Joomla ships htaccess.txt but does not enable it automatically. Without it, SEF URLs do not work, and security rules are not applied.
Not checking PHP extensions before purchasing: Some hosts disable required extensions for security. A host without the zip extension prevents extension installation. Always verify PHP extensions before signing up.
Ignoring PHP memory limit: The default PHP memory limit on many hosts is 32M or 64M. Joomla needs at least 128M. Sites running low memory limits show blank pages or errors.
Migrating without a backup test: Beginners create a backup but never verify it can be restored. When migration day comes, the backup file is corrupt or incomplete. Always test your backup by restoring on a local or staging environment first.
Practice Questions
What is the difference between LAMP and LEMP stacks? Answer: LAMP uses Apache as the web server; LEMP uses Nginx. Nginx generally handles high concurrency better, while Apache has more built-in features for .htaccess-based configuration.
Why should you enable .htaccess on a Joomla site? Answer: The .htaccess file enables SEF URLs, blocks access to sensitive files like configuration.php, sets caching headers, and enables gzip compression — all critical for security and performance.
What is Akeeba Kickstart used for? Answer: Kickstart is a single-file restoration script that extracts Akeeba Backup archives (.jpa files) and restores the site on a new server. It handles database restoration and configuration updates.
Challenge: Set up a Joomla site on a VPS using the LEMP stack instructions above. Install phpMyAdmin, create a database, install Joomla manually, and enable SEF URLs. Verify the site works by creating a test article and viewing it on the front end.
FAQ
Mini Project
Your task: Compare three Joomla hosting options and create a recommendation.
- Research one shared hosting provider (SiteGround), one VPS provider (DigitalOcean), and one managed hosting provider (Cloudaccess.net).
- For each provider, document: monthly price, PHP version available, backup policy, SSL support, staging availability, and customer support options.
- Create a comparison table with your findings.
- Write a recommendation for three different scenarios: a personal blog with low traffic, a business site with moderate traffic, and an e-commerce site with high expectations.
- Include your estimated monthly cost for each scenario.
What's Next
Now that you understand hosting, it is time to start creating content:
Continue to Lesson 5: Articles and Categories — Learn how to create and organize content in Joomla.
Related lessons:
- MySQL Basics — Understand the database behind Joomla
- Joomla Admin Dashboard — Navigate the admin interface
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro