Skip to main content

Virtual Hosts Configuration

Configure Apache to serve multiple websites on the same server.


Virtual Host Setup

1. Create Virtual Host File

sudo nano /etc/apache2/sites-available/example.com.conf

2. Add Virtual Host Configuration

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

3. Create Web Directory

sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com

4. Enable Site

sudo a2ensite example.com.conf
sudo systemctl reload apache2

5. Disable Default Site (Optional)

sudo a2dissite 000-default.conf
sudo systemctl reload apache2

Multiple Virtual Hosts

Example: Two Sites

# Site 1
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/site1.com
</VirtualHost>

# Site 2
<VirtualHost *:80>
ServerName site2.com
DocumentRoot /var/www/site2.com
</VirtualHost>

Quick Commands

TaskCommand
Enable sitesudo a2ensite site.conf
Disable sitesudo a2dissite site.conf
List sitesls /etc/apache2/sites-enabled/
Test configsudo apache2ctl configtest

Note: Always test configuration and reload Apache after changes.