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 Setup 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 through the step by step set up virtual host Apache web server on a CentOS 8 server.

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, configuring 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:

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

Now creating 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">
  <head>
    <meta charset="utf-8">
    <title>Welcome to your-domain-example.com</title>
  </head>
  <body>
    <h1>Success! your-domain-example.com home page!</h1>
  </body>
</html>

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 ends 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 [email protected]
    DocumentRoot /var/www/your-domain-example.com/public_html

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

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

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:

http://your-domain-example.com

Congratulation’s! You have successfully installed Apache. Thanks for using this tutorial for set up 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 a best deal!