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
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin firstname.lastname@example.org 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:
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:
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.