Israel Science and Technology Directory

Internet Apache server

2. Configure Apache2 server on Ubuntu

Updated on February 14, 2026.

The configuration of a virtual host described here should follow the installation of Apache2 software, as described in Installing Apache2 and PHP.

The instructions described here should be executed in a terminal window by a user who has sudo authorization. The text editor used here is nano within a terminal window.

First, update and upgrade your repositories by running the following commands in a terminal window:

sudo apt update && sudo apt upgrade

2.1. Set up a virtual host directory

The computer on which a website is stored and operated is referred to as the website’s “host.” In practice, a single physical computer can host multiple websites, each functioning as a separate entity with its own operating environment and configuration rules. The term “virtual” reflects the fact that each website appears to run on its own dedicated computer, even though it actually resides on a shared physical machine that may host many other websites.

Virtual hosts can be "IP-based", where the website is accessed by a specific IP address, or "name-based", where the website is accessed by its name among a group of websites hosted on the same IP address.

The following steps describe the configuration for hosting a website with the address example.com.

To use the code provided on this page, replace example.com with your website address.

2.1.1. Create a directory for the website

In Linux, the recommended directory to establish a virtual host is:
/var/www/html

Thus, to initiate the website make a directory under the /var/www/
directory as follows:

sudo mkdir -p /var/www/example.com/html

2.1.2. Edit the configuration file

The default Apache2 server configuration is located in file:
/etc/apache2/sites-available/000-default.conf

Switch to this directory:

cd /etc/apache2/sites-available/

Copy the default file to generate a working copy for your website:

sudo cp 000-default.conf example.com.conf

Open the newly created file to edit it using nano:

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

Initially, this file includes the following lines − excluding comments starting with #.

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

Edit the file to generate the following:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName example.com
	ServerAlias www.example.com 
	DocumentRoot /var/www/example.com/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Then press ^O, to save the file.

2.1.3. Enable the configuration file

After creating a new configuration file for example.com , this configuration has to be "enabled". To enable the new site type the command:

sudo a2ensite example.com.conf

This command will add a new file to the directory /etc/apache2/sites-enabled.
To see the content of the directory type:

ls /etc/apache2/sites-enabled

The result should have:

 example.com.conf

Next, disable the default file by typing the command:

sudo a2dissite 000-default.conf

After these operations check the configuration by typing:

sudo apache2ctl configtest

If the configuration is OK, then the Output should be:

Syntax OK

Then restart Apache2 server by typing

sudo systemctl reload apache2

3. Local DNS configuration

Map your local machine's IP address (127.0.0.1) in the /etc/hosts file.
Open the hosts file with nano:

sudo nano /etc/hosts

Add the following line to the end of the file:

127.0.0.1 example.com www.example.com

4. First view of the website

After configuring the virtual host, entering the domain name (http://www.example.com) or the domain IP should show the default page. The default page for Apache2 is index.html.

Next step: Set up directory permissions and ownership

ADVERTISEMENT