Apache Virtual Hosts on Ubuntu 20.04

Step 1 — Creating the Directory Structure

sudo mkdir -p /var/www/your_domain_1/public_html
sudo mkdir -p /var/www/your_domain_2/public_html

Step 2 — Granting Permissions

sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
sudo chown -R $USER:$USER /var/www/your_domain_2/public_html

หรือ

sudo chown -R www-data:www-data your_domain_1/public_html
sudo chown -R www-data:www-data your_domain_2/public_html
sudo chmod -R 755 /var/www

Step 3 — Creating Default Pages for Each Virtual Host

nano /var/www/your_domain_1/public_html/index.html
<html>
  <head>
    <title>Welcome to your_domain_1!</title>
  </head>
  <body>
    <h1>Success! The your_domain_1 virtual host is working!</h1>
  </body>
</html>
nano /var/www/your_domain_2/public_html/index.html
<html>
  <head>
    <title>Welcome to your_domain_2!</title>
  </head>
  <body>
    <h1>Success! The your_domain_2 virtual host is working!</h1>
  </body>
</html>

Step 4 — Creating New Virtual Host Files

sudo nano /etc/apache2/sites-available/your_domain_1.conf
<VirtualHost *:80>
        ServerAdmin admin@your_domain_1
        ServerName your_domain_1
        ServerAlias www.your_domain_1
        DocumentRoot /var/www/your_domain_1/public_html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo nano /etc/apache2/sites-available/your_domain_2.conf
<VirtualHost *:80>
        ServerAdmin admin@your_domain_2
        ServerName your_domain_2
        ServerAlias www.your_domain_2
        DocumentRoot /var/www/your_domain_2/public_html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Step 5 — Enabling the New Virtual Host Files

sudo a2ensite your_domain_1.conf
sudo a2ensite your_domain_2.conf
sudo apache2ctl configtest
sudo systemctl restart apache2
sudo systemctl status apache2

Step 6 — (Optional) Setting Up Local Hosts File

sudo nano /etc/hosts
%windir%\system32\drivers\etc\hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2

Step 7 — Testing Your Results

http://your_domain_1
http://your_domain_2