Cached from: https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7 IntroductionThe Apache web server is the most popular way of serving web content on the Internet. It serves more than half of all of the Internet's active websites, and is extremely powerful and flexible. Apache breaks down its functionality and components into individual units that can be customized and configured independently. The basic unit that describes an individual site or domain is called a virtual host. Virtual hosts allow one server to host multiple domains or interfaces by using a matching system. This is relevant to anyone looking to host more than one site off of a single VPS. Each domain that is configured will direct the visitor to a specific directory holding that site's information, without ever indicating that the same server is also responsible for other sites. This scheme is expandable without any software limit, as long as your server can handle the traffic that all of the sites attract. In this guide, we will walk through how to set up Apache virtual hosts on a CentOS 7 VPS. During this process, you'll learn how to serve different content to different visitors depending on which domains they are requesting. PrerequisitesBefore you begin with this guide, there are a few steps that need to be completed first. You will need access to a CentOS 7 server with a non-root user that has You will also need to have Apache installed in order to configure
virtual hosts for it. If you haven't already done so, you can use
Next, enable Apache as a CentOS service so that it will automatically start after a reboot:
After these steps are complete, log in as your non-root user account through SSH and continue with the tutorial. Note: The example configuration in this guide will make one virtual host for If you do not have any real domains to play with, we will show you how to test your virtual host configuration with dummy values near the end of the tutorial. Step One — Create the Directory StructureFirst, we need to make a directory structure that will hold the site data to serve to visitors. Our document root (the top-level directory that Apache looks at to find content to serve) will be set to individual directories in the Within each of these directories, we will create a We can make these directories using the
Remember that the portions in red represent the domain names that we want to serve from our VPS. Step Two — Grant PermissionsWe now have the directory structure for our files, but they are owned by our
The We should also modify our permissions a little bit to ensure that read access is permitted to the general web directory, and all of the files and folders inside, so that pages can be served correctly:
Your web server should now have the permissions it needs to serve content, and your user should be able to create content within the appropriate folders. Step Three — Create Demo Pages for Each Virtual HostNow that we have our directory structure in place, let's create some content to serve. Because this is just for demonstration and testing, our pages will be very simple. We are just going to make an Let's start with
In this file, create a simple HTML document that indicates the site that the page is connected to. For this guide, the file for our first domain will look like this:
Save and close the file when you are finished. We can copy this file to use as the template for our second site's
Now let's open that file and modify the relevant pieces of information:
Save and close this file as well. You now have the pages necessary to test the virtual host configuration. Step Four — Create New Virtual Host FilesVirtual host files are what specify the configuration of our separate sites and dictate how the Apache web server will respond to various domain requests. To begin, we will need to set up the directory that our virtual hosts
will be stored in, as well as the directory that tells Apache that a
virtual host is ready to serve to visitors. The
Note: This directory layout was introduced by Debian contributors, but we are including it here for added flexibility with managing our virtual hosts (as it's easier to temporarily enable and disable virtual hosts this way). Next, we should tell Apache to look for virtual hosts in the
Add this line to the end of the file:
Save and close the file when you are done adding that line. We are now ready to create our first virtual host file. Create the First Virtual Host FileStart by opening the new file in your editor with root privileges:
Note: Due to the configurations that we have outlined, all virtual host files must end in First, start by making a pair of tags designating the content as a virtual host that is listening on port 80 (the default HTTP port):
Next we'll declare the main server name, www.example.com. We'll also make a server alias to point to example.com, so that requests for www.example.com and example.com deliver the same content:
Note: In order for the Finally, we'll finish up by pointing to the root directory of our publicly accessible web documents. We will also tell Apache where to store error and request logs for this particular site:
When you are finished writing out these items, you can save and close the file. Copy First Virtual Host and Customize for Additional DomainsNow that we have our first virtual host file established, we can create our second one by copying that file and adjusting it as needed. Start by copying it with
Open the new file with root privileges in your text editor:
You now need to modify all of the pieces of information to reference your second domain. When you are finished, your second virtual host file may look something like this:
When you are finished making these changes, you can save and close the file. Step Five — Enable the New Virtual Host FilesNow that we have created our virtual host files, we need to enable
them so that Apache knows to serve them to visitors. To do this, we can
create a symbolic link for each virtual host in the
When you are finished, restart Apache to make these changes take effect:
Step Six — Set Up Local Hosts File (Optional)If you have been using example domains instead of actual domains to
test this procedure, you can still test the functionality of your
virtual hosts by temporarily modifying the Note: Make sure that you are operating on your local computer for these steps and not your VPS server. You will need access to the administrative credentials for that computer. If you are on a Mac or Linux computer, edit your local
If you are on a Windows machine, you can find instructions on altering your hosts file here. The details that you need to add are the public IP address of your VPS followed by the domain that you want to use to reach that VPS:
This will direct any requests for Step Seven — Test Your ResultsNow 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:
You should see a page that looks like this: Likewise, if you visit your other domains, you will see the files that you created for them. If all of the sites that you configured work well, then you have successfully configured your new Apache virtual hosts on the same CentOS server. If you adjusted your home computer's ConclusionAt this point, you should now have a single CentOS 7 server handling multiple sites with separate domains. You can expand this process by following the steps we outlined above to make additional virtual hosts later. There is no software limit on the number of domain names Apache can handle, so feel free to make as many as your server is capable of handling. |
Technical notes > Create a simple site with Python CGI on Apache 2 - Fedora 18 - Fedora 19 - Fedora 24 >