In this tutorial I’ll discuss about how to configuration multiple webserver in one machine. I have discuss about configurations of webserver at How To Install webserver (Apache,PHP) ubuntu server 20.04 and How To Configuration Apache2 (Custom html directory) ubuntu server 20.04 .
For configuration, it requires webserver service, create custom html directory, and dns server service. So Before configuration install webserver service and dns server service. In this article I’ll discuss it with single domain and it subdomain.For configure multiple webserver with different domain I’ll discuss it in the next article. For example we requires 2 webserver with primary domain is taufiknurhuda.com and subdomain portal.taufiknurhuda.com in one server.
Make sure ip address has been configured.
Update system :
root@Taufik:~# apt-get update
Install webserver packages :
root@Taufik:~# apt-get install apache2 php7.4 libapache2-mod-php7.4 php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-zip
Install DNS Server packages at link How To Configure DNS Server ubuntu server 20.04 LTS. For ip address, adjust to the current server ip.
Don’t forget to configure resolv.conf and hosts :
Configure resolv.conf
root@Taufik:~# nano /etc/resolv.conf
Add configuration as the following :
GNU nano 4.8 /etc/resolv.conf # This file is managed by man:systemd-resolved(8). Do not edit. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 10.0.0.2
Configure Host :
root@Taufik:~# nano /etc/hosts
Change host configuration as the following :
127.0.0.1 localhost 127.0.1.1 taufiknurhuda.com 10.0.0.2 taufiknurhuda.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
CONFIGURE DNS SERVER
root@Taufik:~# nano /etc/bind/named.conf.local
Add the configuration as the following. see at zone 0.0.10, it’s the network for server ip 10.0.0.2 written in reverse.
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "taufiknurhuda.com" { type master; file "/etc/bind/db.domain"; }; zone "0.0.10.in-addr.arpa" { type master; file "/etc/bind/db.ip"; };
Change directory to /etc/bind :
root@Taufik:~# cd /etc/bind/ root@Taufik:/etc/bind#
Copy default db file configuration to new db file. db.local to db.domain and db.127 to db.ip.
root@Taufik:/etc/bind# cp db.local db.domain root@Taufik:/etc/bind# cp db.127 db.ip root@Taufik:/etc/bind#
Configure db.domain :
root@Taufik:/etc/bind# nano db.domain
Do configuration as the following :
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA taufiknurhuda.com. root.taufiknurhuda.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.taufiknurhuda.com. ns IN A 10.0.0.2 @ IN A 10.0.0.2 www IN A 10.0.0.2 portal IN A 10.0.0.2
Configure db.ip :
root@Taufik:/etc/bind# nano db.domain
Do configuration as the following. 2 is the host id that used on server ip 10.0.0.2:
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA taufiknurhuda.com. root.taufiknurhuda.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.taufiknurhuda.com. 2 IN PTR taufiknurhuda.com. 2 IN PTR www.taufiknurhuda.com. 2 IN PTR portal.taufiknurhuda.com.
Restart bind9 service :
root@Taufik:~# systemctl restart bind9.service
Test the dns configuration :
root@Taufik:/etc/bind# nslookup taufiknurhuda.com Server: 10.0.0.2 Address: 10.0.0.2#53 Name: taufiknurhuda.com Address: 10.0.0.2root@Taufik:/etc/bind# nslookup portal.taufiknurhuda.com Server: 10.0.0.2 Address: 10.0.0.2#53 Name: portal.taufiknurhuda.com Address: 10.0.0.2
root@Taufik:/etc/bind# nslookup 10.0.0.2 2.0.0.10.in-addr.arpa name = ns.taufiknurhuda.com. 2.0.0.10.in-addr.arpa name = taufiknurhuda.com. 2.0.0.10.in-addr.arpa name = portal.taufiknurhuda.com. 2.0.0.10.in-addr.arpa name = www.taufiknurhuda.com.
Dns configuration is successfull.
CONFIGURE WEBSERVER
Change to sites-available directory :
root@Taufik:~# cd /etc/apache2/sites-available/ root@Taufik:/etc/apache2/sites-available#
Copy file conf :
root@Taufik:/etc/apache2/sites-available# cp 000-default.conf primarywebsite.conf root@Taufik:/etc/apache2/sites-available# cp 000-default.conf portalwebsite.conf
Configure primarywebsite.conf :
root@Taufik:/etc/apache2/sites-available# nano primarywebsite.conf
Do the configuration like this :
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. # ServerName www.example.com ServerAdmin admin@taufiknurhuda.com ServerName taufiknurhuda.com ServerAlias www.taufiknurhuda.com DocumentRoot /var/www/html/primaryweb # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Configure portalwebsite.conf :
root@Taufik:/etc/apache2/sites-available# nano portalwebsite.conf
Do the configuration like this :
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. # ServerName www.example.com ServerAdmin admin@taufiknurhuda.com ServerName portal.taufiknurhuda.com ServerAlias portal.taufiknurhuda.com DocumentRoot /var/www/html/portalweb # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Enable the new file config and disable default file config :
root@Taufik:/etc/apache2/sites-available# a2ensite primarywebsite.conf root@Taufik:/etc/apache2/sites-available# a2ensite portalwebsite.conf root@Taufik:/etc/apache2/sites-available# a2dissite 000-default.conf
Restart apache2 service :
root@Taufik:~# systemctl restart apache2
Change Directory to /var/www/html :
root@Taufik:~# cd /var/www/html/ root@Taufik:/var/www/html#
Create the example html directories for primaryweb and portalweb:
root@Taufik:/var/www/html# mkdir primaryweb root@Taufik:/var/www/html# mkdir portalweb root@Taufik:/var/www/html# ls index.html info.php. portalweb primaryweb root@Taufik:/var/www/html#
Create the example html file in each directories :
root@Taufik:/var/www/html# echo "THIS IS PRIMARY WEBSITE" > primaryweb/index.html root@Taufik:/var/www/html# echo "THIS IS PORTAL WEBSITE" > portalweb/index.html
Do local test the webserver with domain using curl. if curl is not installed, install it using apt-get install curl
Pay attention to the following :
root@Taufik:~# curl taufiknurhuda.com THIS IS PRIMARY WEBSITE root@Taufik:~# curl www.taufiknurhuda.com THIS IS PRIMARY WEBSITE root@Taufik:~# curl portal.taufiknurhuda.com THIS IS PORTAL WEBSITE root@Taufik:~#
When domain is called, it will go to the html directory that appropriate on apache file conf.
Now test again through pc client.
Configure network, for ip dns is point to your server ip or dns server ip.
Open the CMD on your client and do nslookup test. make sure nslookup test is successfull.
Now test access webserver from your browser.
Configuration is successfull.