Web Hosting Virtual Configuration Host multiple websites | Arkit
Using a single Linux VPS – Virtual Private Server or Linux Server you can run multiple websites. It’s called Web Hosting using a virtual configuration in Linux. Virtual hosting is a method for hosting multiple domain names on a single server. This allows one server to share its resources, such as memory and processor cycles, without requiring all services provided to use the same hostname.
VirtualHost Prerequisites
- Install Apache packages (yum install httpd)
- Create multiple directories under default path (/var/www/html/)
- Domain name pointing to your Private/Public server IP (In this example we will use webserver1.com and webserver2.com)
- Need Sudo privileges (or root) to install packages
Install Web Server Packages and enable ports
If you do not have yum configured do the below steps to configure the EPEL repository
RHEL6
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
RHEL7
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Now install the apache/webserver package using the below command
# yum install httpd* -y
Enable and start service
# systemctl enable httpd.service # systemctl start httpd.service
Allow Firewall ports to communicate external clients with webserver
# firewall-cmd --permanent --add-service=http # firewall-cmd --reload
Web Hosting Virtual configuration
In RHEL7 /Centos 7 simple steps to enable the webserver to host multiple websites. Creating directory structure for multiple website content.
# mkdir -p /var/www/html/webserver1/ # mkdir -p /var/www/html/webserver2/ # touch /var/www/html/webserver1/index.html # touch /var/www/html/webserver2/index.html
Edit index.html file and add few lines of HTML code to display while browsing websites
<html> <head>WebServer1</head> <h1>Welcome to WebServer1</h1> </html>
similar way edit webserver2 index file and change statement to webserver2
Add entries in the host’s file to resolve IP to name
# vi /etc/hosts 192.168.2.5 webserver1 www.webserver1.com 192.168.2.5 webserver2 www.webserver2.com
Writing VirtualHost config for web hosting
Goto Default HTTPd configuration path create multiple config files for multiple websites hosting
# vi /etc/httpd/conf.d/webserver1.conf<VirtualHost *:80> ServerAdmin root@localhost ServerName www.webserver1.com DocumentRoot /var/www/html/webserver1 DirectoryIndex index.html ErrorLog /var/www/html/webserver1/error.log CustomLog /var/www/html/webserver1/requests.log combined </VirtualHost> <Directory "/var/www/html/webserver1"> AllowOverride none Require all granted </Directory>
VirtualHost config explanation
- ServerAdmin – For any website config change notifications
- ServerName – Is the actual public domain name (Example: server-computer.com)
- DocumentRoot – Web site files store location
- DirectoryIndex – Default website file name when you first browse the website
Now verify the syntax
# httpd -t syntax ok
Reload / Restart Web Server Services to effect configuration
# systemctl restart httpd.service
Client-side open browser and browse using website URL’s
http://www.webserver1.com http://www.webserver2.com
That’s it. Both websites are up and running within a single VPS Or Linux Server.
Related Articles
For More Linux Articles
SSH Access Slow how to resolve
Thanks for your wonderful Support and Encouragement