Managing multiple websites efficiently and cost-effectively is crucial for many businesses and individuals. One popular method for achieving this is through shared hosting, where multiple websites are hosted on a single server.

This approach allows each website to have its own domain name and content, while sharing the server’s resources.

Let us explore this concept further so you are clear on how to host multiple domains on one server.

What are the Benefits of Hosting Many Websites on One Server?

Hosting multiple websites on one server offers several advantages.

  • Cost-effective:

Shared web hosting is typically cheaper than hosting each website on its own server. This is because you are sharing the cost of the server and its resources with other users, making it more affordable for individual website owners or small businesses.

  • Efficient use of resource:

By hosting multiple websites on one server, you can make better use of the server’s resources. Instead of each website having its own dedicated server, multiple websites can share the same resources, such as CPU, RAM, and storage.

  • Centralized management:

With shared hosting, you can manage all your websites from a single control panel. This makes it easier to monitor and manage your websites, as you do not have to log in to multiple accounts or servers.

  • Scalability:

Shared hosting plans often offer scalability, allowing you to easily upgrade your hosting plan as your websites grow. This can be more cost-effective than upgrading to a dedicated server, especially for small businesses or individuals.

  • Ease of setup:

Setting up multiple websites on one server is usually straightforward, especially if you are using a hosting provider that offers shared hosting plans. You can quickly add new websites to your account and configure them to your liking.

  • Security:

While security can be a concern with shared hosting due to the shared nature of the server, reputable hosting providers take measures to ensure the security of their servers. Additionally, you can implement security measures on your websites to protect them from threats.

How to Host Multiple Websites on One Server – Apache

Hosting multiple websites on a single Apache server can be achieved by configuring virtual hosts. Here is a step-by-step guide to doing so:

1.Create the Directory Structure:

The main directory, often called the DocumentRoot, is the top-level directory where Apache looks for website content to serve visitors. Each website has its own directory within the DocumentRoot.

For example:

Create the main directory: mkdir -p /var/www

Create directories for each website:

mkdir -p /var/www/domain1.com/public_html

mkdir -p /var/www/domain2.com/public_html

2.Set Up Permissions:

This step ensures that the directories and files are accessible to Apache and web users. The command chmod -R 755 /var/www sets the appropriate permissions.

3.Set up an Index Page:

An index page is the default page that is displayed when a visitor accesses a website. Creating an index.html file in each website’s public_html directory provides some content for testing purposes.

For example:

vim /var/www/domain1.com/public_html/index.html

Add content such as “Example testing for domain1.com”

Save and close the file (in vim, you can do this by pressing ESC, typing :wq, and pressing Enter)

4.Copy the Config File for Each Site:

Apache uses virtual host configuration files to manage multiple websites on a single server. The 000-default.conf file is a default configuration file that can be copied and modified for each website.

For example:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain1.com.conf

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain2.com.conf

5.Edit the Config File for Each Site:

Each virtual host configuration file (domain1.com.conf, domain2.com.conf, etc.) needs to be edited to specify the domain name, document root, and other configurations.

For example:

vim /etc/apache2/sites-available/domain1.com.conf

Update the ServerName, ServerAlias, and DocumentRoot directives to match your domain and directory structure.

Save and close the file.

6.Enable the Config File:

Apache needs to be told to use the new virtual host configuration files. The a2ensite command enables the virtual host files.

For example:

a2ensite domain1.com.conf

a2ensite domain2.com.conf

Restart Apache to apply the changes.

Finally, test the configuration by accessing your websites in a web browser using their respective domain names (e.g., http://domain1.com, http://domain2.com). If everything is set up correctly, you should see the index pages you created.

How to Host Multiple Websites on One Server -NGINX

Here is a breakdown of the steps to configure two virtual hosts on the same server with NGINX.

  • Create Document Root Directories:

sudo mkdir /var/www/html/example1.com

sudo mkdir /var/www/html/example2.com

  • Create index.html Files:

Create index.html files for each domain to serve as the default page.

sudo vi /var/www/html/example1.com/index.html

  • Add content like:

www.example1.com

Welcome to www.example1.com Website

Save and close the file. Repeat for example2.com.

Open NGINX Configuration File: Open the NGINX configuration file /etc/nginx/nginx.conf.

sudo vi /etc/nginx/nginx.conf

  • Create Server Blocks:

Add server blocks for each domain in the NGINX configuration file. Modify the values for server_name and root to match your setup.

server {

listen 80;

root /var/www/html/example1.com;

index index.html;

server_name example1.com;

location / {

try_files $uri $uri/ =404;

}

}

server {

listen 80;

root /var/www/html/example2.com;

index index.html;

server_name example2.com;

location / {

try_files $uri $uri/ =404;

}

}

Save and close the file.

  • Restart NGINX:

Restart NGINX to apply the configuration changes.

sudo nginx -t

sudo systemctl restart nginx

  • Test:

Open a web browser and navigate to example1.com and example2.com to see if the index pages are displayed correctly.

Hosting multiple websites on one server can be a cost-effective and efficient way to manage your online presence. However, doing so manually can be complex and require technical expertise. It often involves configuring server settings, managing web server software (such as Apache or Nginx), and ensuring that each website has its own directory structure and configuration settings.

Additionally, hosting multiple websites on one server can also present challenges in terms of resource allocation and performance. Since all websites on the server share the same resources (such as CPU, memory, and bandwidth), it is essential to manage these resources effectively to ensure that each website performs optimally.

BigRock’s managed web hosting service can help you easily host multiple websites on one server by offering an extensive range of services.