Introduction
Before we begin talking about how to run Apache2 on Ubuntu 20.04 LTS to make it a virtual host, let's briefly understand – What is Apache2?
Apache2 is a popular open-source web server used to host websites. It enables serving content over the internet, handling web traffic efficiently and securely. Developed by the Apache Software Foundation, Apache2's flexibility and reliability make it a top choice for websites worldwide.
It supports various programming languages, such as PHP and Python, allowing the creation of dynamic websites and applications. With its extensive community support and regular updates, Apache2 remains a trusted solution for web hosting needs, offering stability and performance for websites of all sizes.
In this tutorial, you will run Apache2 on Ubuntu 20.04 LTS to make it a virtual host. We will also address a few FAQs on how to run Apache2 on Ubuntu 20.04 LTS to make it a virtual host.
Running Apache2 on Ubuntu 20.04 LTS to make it a virtual host
There are several steps that you need to follow in order to launch your website with help of Apache on an Ubuntu Server. Here is the step-by-step guide that will help you launch your site on an Ubuntu machine with help of apache2.
Make sure you follow the steps thoroughly, line by line.
First, you run the sudo
command in the first place to get root access privileges. The command reads as follows:
sudo su
Then you get the system updates by running apt get
a command like this:
apt update
You will get a lot of output, but the ending of it is going to look something like this.
Then you need to install apache2
for hosting multiple website on your Ubuntu server.
apt install apache2
Apache was found already installed in my system. After installation of apache2
check the status of apache2
whether it is running or not.
systemctl status apache2
apache2
is found up and running in the system, so the following output can be seen on screen:
Here after we are supposed to create /var/www/ folder
in which two subdirectories video_tutorial
and text_tutorial
are made to host two different websites from those folders.
mkdir -p /var/www/video_tutorial
mkdir -p /var/www/text_tutorial
After creating the folders, permissions are given in /var/www/
level using -R
meaning that permissions are supposed to be given recursively this way they get assigned to the subdirectories within the parent directory in this case both video_tutorial
, and text_tutorial
subdirectories within /var/www/
:
chmod -R 755 /var/www
Now to take a look at the new permissions assigned to the directories within /var/www
we will run the below command which will give the following output
ls -la /var/www
Now that we have checked the permissions assigned to the directories, we will create index.html
files respectively by making use of the below command and type the following contents into the HTML files.
vim /var/www/video_tutorial/index.html
Similarly, for the text tutorial directory. Follow the same step.
vim /var/www/test_tutorial/index.html
Here with the below command we are checking the permission assigned to index.html
file in the video_tutorial
directory, the same is supposed to be checked for text_tutorial
directory.
ls -ls /var/www/video_tutorial
Output
total 4
4 -rw-r--r-- 1 root root 137 Oct 5 05:33 index.html
Now we are going to switch the directory with the cd
command and there we will make necessary changes to the config file.
cd /etc/apache2/sites-available/
After reaching in the directory, we can take a look at all the config files present in the directory by ls command as shown below
ls
Below are the config files you will be able to see
Output
000-default.conf default-ssl.conf
Now we are going to copy the contents of the default config file in the config files we are going to create which are respectively ./video_tutorial.com.conf
and ./text_tutorial.com.conf
:
sudo cp 000-default.conf ./video_tutorial.com.conf
Write the following lines of code in the ./video_tutorial.com.conf
with the help of your favorite editor also change the port to 8080
from 80
vim ./video_tutorial.com.conf
Similarly do for ./text_tutorial.com.conf
. Here we are copying the content from the first file and pasting it to ./text_tutorial.com.conf
and then we will make necessary changes.
cp ./video_tutorial.com.conf ./text_tutorial.com.conf
vim ./text_tutorial.com.conf
Now that all the .conf
files are updated successfully, we are going to enable the site with the .conf
file we have created
a2ensite video_tutorial.com.conf
a2ensite text_tutorial.com.conf
the following output can be seen after having run the above commands for both of them separately
Output
Enabling site video_tutorial.com.
To activate the new configuration, you need to run:
systemctl reload apache2
Earlier we were in this site-available directory. We want to come one step up in order to the upcoming changes:
root@ip-172-31-31-184:/etc/apache2/sites-available#
Hence, we are going to do a cd ..
cd ..
ls -la
Here we can see many directories, the one for which we are worried are sites-enable
. First we are supposed to disable the 000-defualt.conf
file which we have copied and enable the .conf
file we have created, so following will be the sequence of commands we will follow.
a2dissite 000-default.conf
Output
Site 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2
Do a systemctl
to reload the apache2
systemctl reload apache2
systemctl status apache2
Now when we have made sure that apache2
is running fine we are supposed to give permission to some of the ports that the website is going to use. The ports are port 22
(ssh) and port 8080
ufw status
Output
Status: inactive
ufw enable
ufw allow in ssh
ufw allow 8080
With ufw status
we are going to check whether the port we have enabled are up and running or not
ufw status
After having allowed the ports you can easily go to your favorite browser and type www.video_tutorial.com:8080
and hit and enter you will see your website running in the browser.
A similar thing you can do for text_tutorial.com
and this leads us to the fact that two or more websites can run simultaneously on the same virtual host.
This brings us to the end of the tutorial.
FAQs to Run Apache2 on Ubuntu 20.04 LTS
What is a virtual host in Apache2?
A virtual host allows hosting multiple domains on a single server, creating isolated environments.
How can I configure a virtual host on Apache2 in Ubuntu 20.04 LTS?
You can configure a virtual host by editing Apache configuration files located in /etc/apache2/sites-available/
.
What is the default document root for virtual hosts in Apache2 on Ubuntu 20.04 LTS?
The default document root is /var/www/html/
for setting up virtual hosts in Apache2 on Ubuntu 20.04 LTS.
How do I enable a virtual host after configuration in Apache2 on Ubuntu 20.04 LTS?
After configuring a virtual host, enable it by using the a2ensite
command followed by the virtual host configuration filename.
Can I have multiple virtual hosts on a single Apache2 server in Ubuntu 20.04 LTS?
Yes, you can host multiple websites using virtual hosts on a single Apache2 server instance.
Do I need to restart Apache2 after setting up a new virtual host on Ubuntu 20.04 LTS?
Yes, you must restart Apache using the command sudo systemctl restart apache2
to apply changes after configuring a new virtual host.
Can I secure my Apache2 virtual host with SSL on Ubuntu 20.04 LTS?
Yes, you can secure your virtual host with SSL by configuring SSL certificates and enabling HTTPS on your Apache2 server for enhanced security and encryption.
Conclusion
We hope this tutorial helped you understand how to run Apache2 on Ubuntu 20.04 LTS to make it a virtual host.
If you have any queries, please leave a comment below, and we’ll be happy to respond to them for sure.