How to Create Apache Virtual Hosts on CentOS 7
1. Installing Apache
Before we begin, make sure that you have root access to your VPS or server using SSH connection.
Install Apache on your CentOS 7 machine by typing the following command:
sudo yum -y install httpd
Once the installation is completed, enable Apache as a CentOS service:
sudo systemctl enable httpd.service
Visit your server’s IP address to check whether Apache is already running or not. The page should look like
this:

2. Creating a Directory Tree
A directory tree is used to hold website data. First, set the working directory to /var/www by running this
command:
cd /var/www/
You should use a unique document root for each virtual host:
mkdir -p yourdomain.com/public_html
Remember to replace yourdomain.com with your actual domain name.
Make the directory accessible to Apache. Run the chown command to change the ownership and
chmod to set correct permissions for the whole web directory.
chown -R apache:apache /var/www/yourdomain.com/public_html
chmod -R 755 /var/www
Apache now has the required access to create additional directories and serve content for incoming queries.
3. Creating a Demo Page
It is recommended to make a demo page for your Apache virtual hosts. This way, you can check whether the host
is working before you actually move your website files. Here’s how you do it:
Use the nano editor to create index.html file in yourdomain.com/public_html
directory:
nano yourdomain.com/public_html/index.html
Paste the following content to the file:
<html>
<head>
<title>This is a test page</title>
</head>
<body>
<h1>It works!</h1>
</body>
</html>
Save the file by pressing CTRL + X and then Y.
4. Creating the Virtual Host
Create a new virtual host .conf file in the Apache configuration directory:
nano /etc/httpd/conf.d/yourdomain.com.conf
Insert the following content into the .conf file:
<VirtualHost *:80>
ServerName www.yourdomain.com
ServerAlias yourdomain.com
DocumentRoot /var/www/yourdomain.com/public_html
ErrorLog /var/www/yourdomain.com/error.log
CustomLog /var/www/yourdomain.com/requests.log combined
</VirtualHost>
In the example above, we tell Apache that we will be using port 80 for the communication and that
yourdomain.com is the name of the virtual host. Additionally, we also specify directories for the
website files (document root) and error logs.
Restart Apache for the changes to take effect:
systemctl restart httpd.service
That’s it, you have just created an Apache virtual host for your domain! Now try to access the host and you
should see the “It works!” text from the demo page we made earlier.

