How to Configure Multiple Sites with Apache

Posted on by Justin Palmer | Updated:
Reading Time: 3 minutes

If you are hosting more than one site on a server, then you most likely use Apache’s virtual host files to state which domain should be served out. Name based virtual hosts are one of the methods used to resolve site requests. This means that when someone views your site the request will travel to the server, which in turn, will determine which site’s files to serve out based on the domain name. Using this method you'll be able to host multiple sites on one server with the same IP. In this tutorial, we’ll show you how to set up your virtual host file for each of your domains on an Ubuntu 18.04 VPS server.

How to Configure Multiple Sites with Apache


  • Login in as root

Step 1: Make a Directory for Each Site

You’ll create a directory for each site that you’ll be hosting, within the /var/www folder.  This location newly created location is also dubbed the document root location; you’ll need to set this path later in the configuration file.  Sub the and for your domain names.

mkdir -p /var/www/

mkdir -p /var/www/

Read on to learn more about Apache server name setup.

Step 2: Set Folder Permissions

chmod -R 755 /var/www

Step 3: Set up an Index Page

To see a home page you’ll want to make sure the index.html file is created for each domain.  Something as simple as “testing for” can be set within this file.

vim /var/www/

testing for

Save and quit by hitting the Escape button and typing :wq

Repeat the steps for your second domain, using the command below.

vim /var/www/

Step 4: Copy the Config File for Each Site

Copy the default configuration file for each site, this will also ensure that you always have a default copy for future site creation.

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/

Step 5: Edit the Config File for Each Site

At the bare minimum, you’ll adjust and add the highlighted lines within the <VirtualHost *:80> and </VirtualHost> tags.

ServerAlias is the alternative name for your domain, in this case and in most, you’ll put www in front of the domain name so people can view the site by either www or non www (ServerName).

vim /etc/apache2/sites-available/

<VirtualHost *:80>
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Quit and Save with :wq. Repeat this process for your file, be sure to update your ServerName, ServerAlias and DocumentRoot for your second domain. This is all part of the setup for you Apache server name or names.

Step 6: Enable Your Config File

Out of the box, your server (your Apache server name) is set to read the default 000-default.conf file.  But, in our previous step we made a new config file for each domain.  So, we will need to disable the default file.

a2dissite 000-default.confTo have your server mapped to your domains you’ll need to enable each of your newly made .conf files.



We restart the Apache service to register our changes.

systemctl restart apache2

Step 7: Verify Apache Configurations for your Apache Server Name

After starting Apache (your specific Apache server name) you now can view that the configurations are working by either editing your /etc/host file on your computer or by editing your domain's DNS.

After either one of these aspects are set, you'll be able to visit your website in a browser to see the index.html pages set in Step 3. Congratulations on learning how to host multiple sites on one server!

Liquid Web customers enjoy 24/7 support at the tip of their fingertips with our blazing fast servers. If you find yourself stuck on a step our support team is knowledgeable on Apache and Apache server name configurations and can assist!

Avatar for Justin Palmer

About the Author: Justin Palmer

Justin Palmer is a professional application developer with Liquid Web

Latest Articles

Controlling PHP settings with a custom php.ini file

Read Article

How to install Puppet Server on Linux (AlmaLinux)

Read Article

Email security best practices for using SPF, DKIM, and DMARC

Read Article

Linux dos2unix command syntax — removing hidden Windows characters from files

Read Article

Change cPanel password from WebHost Manager (WHM)

Read Article