apache2 virtual host code example

Example 1: virtual host apache

# File: /etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>

  # Server Name (domain name) and any aliases
  
  ServerName  domain1.com
  ServerAlias www.domain1.com
  
  #OPTIONAL Admin name
  ServerAdmin [email protected]


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations, OPTIONAL:
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

# Enabling:
# sh ~ $
sudo a2ensite domain1.com # Refer to above ServerName!
# The utility may automatically suggest, but run:
sudo /etc/init.d/apache2 reload
# To restart apache!

Example 2: apache virtual host

# File: /etc/apache2/sites-available/domain1.com.conf

<VirtualHost *:80>

  # Server Name (domain name) and any aliases
  
  ServerName  domain1.com
  ServerAlias www.domain1.com
  
  #OPTIONAL Admin name
  ServerAdmin [email protected]


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

# Enabling:
# sh ~ $
sudo a2ensite domain1.com # Refer to above ServerName!
# The utility may automatically suggest, but run:
sudo /etc/init.d/apache2 reload
# To restart apache!

Example 3: APACHE MULTIPLE HOstnames

# Ensure that Apache listens on port 80
Listen 80
<VirtualHost *:80>
    DocumentRoot "/www/example1"
    ServerName www.example.com

    # Other directives here
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/www/example2"
    ServerName www.example.org

    # Other directives here
</VirtualHost>

Example 4: create a virtual host in apache

STEP 1:
# domain: DOMAIN_URL
# public: /var/www/DOMAIN_URL/public_html/public/

<VirtualHost *:80>
	# Admin email, Server Name (domain name), and any aliases
	ServerAdmin admin@DOMAIN_URL
	ServerName  DOMAIN_URL
	ServerAlias DOMAIN_URL
	
	# Index file and Document Root (where the public files are located)
	DirectoryIndex index.html index.php
	DocumentRoot /var/www/DOMAIN_URL/public_html/public/
	<Directory /var/www/DOMAIN_URL/public_html/public/>
        Options Indexes FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
        Order allow,deny
        allow from all
	</Directory>
	# Log file locations
	LogLevel warn
	ErrorLog  /var/www/DOMAIN_URL/log/error.log
	CustomLog /var/www/DOMAIN_URL/log/access.log combined
</VirtualHost>


STEP 2: With our virtual host files created, we must enable them. We’ll be 
using the a2ensite tool to achieve this goal.

sudo a2ensite example.com.conf

STEP 3: When you are finished, you need to restart Apache to make these changes
take effect and use systemctl status to verify the success of the restart.

sudo systemctl restart apache2

refrence:
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-18-04-quickstart