How To Setup Virtual Host Apache on CentOS 8

Setup Virtual Host Apache on CentOS 8

In this tutorial, we will show you how to set up Virtual Host Apache on CentOS 8. For those of you who didn’t know, Apache Web Server is an open-source Web server creation, deployment, and management software. Initially developed by a group of software programmers, it is now maintained by the Apache Software Foundation. Apache HTTP Server is the most popular web server in the world and has been so since April 1996. By default, Apache can host only one document root for all requests, which likely isn’t what you want to happen. We can use VirtualHost blocks to translate named domains into their appropriate document roots, with new settings per block as needed.

This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo‘ to the commands to get root privileges. I will show you the step by step set up virtual host Apache web server on a CentOS 8 server.


  • A server running one of the following operating systems: CentOS 8.
  • It’s recommended that you use a fresh OS install to prevent any potential issues.
  • SSH access to the server (or just open Terminal if you’re on a desktop).
  • A non-root sudo user or access to the root user. We recommend acting as a non-root sudo user, however, as you can harm your system if you’re not careful when acting as the root.

Setup Virtual Host Apache on CentOS 8

Step 1. First, let’s start by ensuring your system is up-to-date.

sudo dnf update

Step 2. Installing Apache on CentOS 8.

We will be installing Apache with dnf, which is the default package manager for CentOS 8:

sudo dnf install httpd

After installing, run and enable the Apache webserver to start after reboot:

sudo systemctl restart httpd
sudo systemctl status httpd
sudo systemctl enable httpd

Then, configure your CentOS 8 firewall for Apache:

firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --add-port=443/tcp --zone=public --permanent
firewall-cmd --reload

Step 3. Creating Directory Structure.

The document root is the directory in which the website files for a domain name are stored and served in response to requests. We will use the following directory structure:

├── your-domain-example.com
│   └── public_html
├── your-domain-example2.com
│   └── public_html

Now create the root directory for the domain your-domain-example.com:

sudo mkdir -p /var/www/your-domain-example.com/public_html

Then, create an index.html file inside the domain’s document root directory:

sudo nano /var/www/your-domain-example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
    <meta charset="utf-8">
    <title>Welcome to your-domain-example.com</title>
    <h1>Success! your-domain-example.com home page!</h1>

Set the necessary permissions on the new directory by using the following command:

sudo chown -R apache: /var/www/your-domain-example.com

Step 4. Creating Virtual Host File.

By default, Apache is configured to load all configuration files that end with .conf from the /etc/httpd/conf.d/ directory:

nano /etc/httpd/conf.d/your-domain-example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@your-domain-example.com
    DocumentRoot /var/www/your-domain-example.com/public_html

    <Directory /var/www/your-domain-example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All

    ErrorLog /var/log/httpd/your-domain-example.com-error.log
    CustomLog /var/log/httpd/your-domain-example.com-access.log combined

Test and restart Apache:

sudo apachectl configtest

This command will return:

Syntax OK

To activate a newly created virtual host, restart the Apache service with:

sudo systemctl restart httpd

Now that you have your virtual hosts configured, you can test your setup easily by going to the domains that you configured in your web browser:


Congratulations! You have successfully installed Apache. Thanks for using this tutorial to set up a virtual host Apache web server on CentOS 8 system. For additional help or useful information, we recommend you to check the official Apache website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!


r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to idroot.us, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button