If you're a Linux system administrator, chances are you've worked with Apache. And if you've done enough Apache configuration, you've most likely set up virtual hosts. But if you're finally migrating away from your old Apache-powered web platform and onto Apache2 (the version of Apache shipped with the likes of Ubuntu Server), you'll need to change your way of thinking.
I'll walk you through the process of hosting multiple websites (aka virtual hosts) on an Apache2-based system (in this case Ubuntu 16.04). Believe it or not, it's simple...you just have to know what to configure and where to configure it.
I assume you already have Apache installed and, if you point your browser to the server IP (or domain), either the Apache2 welcome page or your company site will appear. Let's add yet another site to your Apache2 server.
With Apache2, all virtual hosts are configured in individual files with /etc/apache2/sites-available. Each file will end in .conf and contain all of the details for the host. An example .conf file will look like:
Alias /nextcloud "/var/www/nextcloud/"
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
What you see above is the sites-available file for Nextcloud—you could have multiple instances of Nextcloud on that server. Say you want, for whatever reason, Nextcloud and Nextcloud2—you could create a second sites-available .conf file for a second Nextcloud instance. Name that file nextcloud2.conf with the following contents:
Alias /nextcloud2 "/var/www/nextcloud2/"
SetEnv HOME /var/www/nextcloud2
SetEnv HTTP_HOME /var/www/nextcloud2
Note: In order for this example to work, Nextcould would also have to be installed on the server for each instance.
The interesting thing about Apache2 is that you can create as many .conf files in /etc/apache2/sites-available as you want. But until those configuration files are enabled, Apache2 won't know about them. In order to enable those configuration files, you create the .conf file in sites-available and then use a simple command.
Say, for instance, we're setting up a test environment on our Apache2 server. We've created the test.conf file in /etc/apache2/sites-available with the contents:
Alias /test "/var/www/test/"
SetEnv HOME /var/www/test
SetEnv HTTP_HOME /var/www/test
Once that file is in place, all we have to do is issue the command:
sudo a2ensite test.conf
The above command will copy the /etc/apache2/sites-available/test.conf file to /etc/apache2/sites-enabled and make Apache2 aware of the new host. Restart Apache2 with the command:
sudo service apache2 reload
Your test site is now available to use.
You've enabled a new website on your Apache2 server. Although this is very basic information, it will allow you to run multiple hosts on a single Apache2 server. Note: It is important that you understand the ins and outs of the Apache2 .conf files; my very basic examples are only meant to illustrate the process.
Setting up multiple hosts on Apache2 is quite different than Apache, but once you get used to the system, it makes perfect sense. Besides, if you're working with a Linux server that makes use of Apache2, you don't have a choice.
- How to create a self-signed certificate to use on Apache2 (TechRepublic)
- How to disable IPv6 on Linux (TechRepublic)
- How to monitor your servers and desktops from Android with this free app (TechRepublic)
- How to quickly install DNS on Ubuntu with tasksel (TechRepublic)
- Apache Libcloud: The open-source cloud library to link all clouds together (ZDNet)
Jack Wallen is an award-winning writer for TechRepublic and Linux.com. He’s an avid promoter of open source and the voice of The Android Expert. For more news about Jack Wallen, visit his website jackwallen.com.