For each website (domain or subdomain) you need a Virtual Host, a file that contains information for Apache to find where the website’s files are on your server, how to access them, where to write the logs, etc.
While Ubuntu/Debian has a system to enable/disable Virtual Hosts, on CentOS you will need to do this manually if you want to keep things neat. You can always create the Virtual Hosts files in /etc/https/conf.d and skip the next steps. I prefer to mimic the Ubuntu/Debian solution.
First, create the directories where you will store the Virtual Hosts
sudo mkdir /etc/httpd/sites-available sudo mkdir /etc/httpd/sites-enabled
Instruct Apache to load the configuration files from sites-enabled by editing the httpd.conf file
sudo vi /etc/httpd/conf/httpd.conf
Add this line at the end of the file
Let’s create a new configuration file for a test domain, my-test-domain.com
sudo vi /etc/httpd/sites-available/my-test-domain.com.conf
Here is the contents of the file (I will store the Website files in /usr/share/httpd/my-test-domain; change that to your directory) :
<VirtualHost *:80> ServerName my-test-domain.com ServerAlias www.my-test-domain.com ServerAdmin firstname.lastname@example.org DocumentRoot /usr/share/httpd/my-test-domain <Directory "/usr/share/httpd/my-test-domain"> DirectoryIndex index.php index.html Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined </VirtualHost>
Enable the Virtual Host by creating a symlink from sites-available to sites-enabled
sudo ln -s /etc/httpd/sites-available/my-test-domain.com.conf /etc/httpd/sites-enabled/my-test-domain.com.conf
Restart Apache to load the new configuration
sudo systemctl restart httpd