Skip to main content

Command Palette

Search for a command to run...

How to Use a VPS for Hosting Multiple Websites

A step-by-step guide to hosting multiple websites efficiently on a single VPS.

Published
6 min read
How to Use a VPS for Hosting Multiple Websites

So, you’ve got yourself a VPS (Virtual Private Server) and are ready to host multiple websites. Maybe you’re running a few personal projects, or perhaps you manage multiple client websites. Either way, you want to host them all efficiently on one VPS to save costs and streamline your management. Good news: it’s entirely possible and easier than you think!

In this guide, we’ll walk you through the step-by-step process of hosting multiple websites on a single VPS. We’ll cover everything from server setup to managing domains, so by the end, you’ll have a smooth, efficient setup for all your sites.

Let’s dive in!

Step 1: Set Up Your VPS

Before you can start hosting multiple websites, you need to set up your VPS. If you haven’t already chosen a VPS provider, make sure you select one that offers enough resources (CPU, RAM, and storage) to support the number of websites you plan to host.

Most VPS providers offer easy-to-use management interfaces and options to install various operating systems. Typically, Ubuntu or CentOS are popular choices for web hosting. Once you’ve got your VPS running, it’s time to move on to setting up the necessary software.

A. Update Your Server

To keep your VPS secure and running smoothly, update your server’s software packages. You can do this by logging into your server via SSH and running the following commands:

For Ubuntu/Debian-based systems:

bashCopy codesudo apt update
sudo apt upgrade

For CentOS-based systems:

bashCopy codesudo yum update

These commands will ensure your server is up to date and ready for web hosting.

Step 2: Install a Web Server (Nginx or Apache)

Now that your server is ready, the next step is to install a web server to serve your websites. The two most popular choices are Apache and Nginx. Both are reliable, but Nginx is often preferred for its performance with high-traffic sites, while Apache offers a broader range of features and modules.

To install Apache on Ubuntu/Debian, use:

bashCopy codesudo apt install apache2

To install Nginx on Ubuntu/Debian, use:

bashCopy codesudo apt install nginx

For CentOS systems, replace apt with yum to install the web server.

Once installed, start your web server:

For Apache:

bashCopy codesudo systemctl start apache2

For Nginx:

bashCopy codesudo systemctl start nginx

Your VPS is now ready to serve web pages!

Step 3: Configure Virtual Hosts

To host multiple websites on a single VPS, you need to configure virtual hosts. Virtual hosts allow you to run multiple domains from the same IP address by creating separate directories for each website.

Let’s say you have two websites: example1.com and example2.com.

A. Create Directories for Each Website

Start by creating separate directories to store the files for each website. For example:

bashCopy codesudo mkdir -p /var/www/example1.com/public_html
sudo mkdir -p /var/www/example2.com/public_html

You can replace example1.com and example2.com with your actual domain names.

B. Set Directory Permissions

Ensure that the server has the correct permissions to read and write to these directories:

bashCopy codesudo chown -R $USER:$USER /var/www/example1.com/public_html
sudo chown -R $USER:$USER /var/www/example2.com/public_html
sudo chmod -R 755 /var/www

C. Create Virtual Host Files

Next, you need to configure virtual host files for each domain. If you’re using Apache, create separate configuration files for each site in the /etc/apache2/sites-available/ directory.

bashCopy codesudo nano /etc/apache2/sites-available/example1.com.conf

Add the following content to the file, replacing example1.com with your actual domain name:

apacheCopy code<VirtualHost *:80>
    ServerAdmin admin@example1.com
    ServerName example1.com
    ServerAlias www.example1.com
    DocumentRoot /var/www/example1.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Repeat this process for example2.com by creating a separate file (/etc/apache2/sites-available/example2.com.conf).

For Nginx, you’ll follow a similar process but with slightly different syntax. Create files in /etc/nginx/sites-available/ and configure the server block for each domain.

D. Enable the Virtual Hosts

Once the virtual host files are set up, you need to enable them. For Apache, use the following command:

bashCopy codesudo a2ensite example1.com.conf
sudo a2ensite example2.com.conf

Then reload Apache to apply the changes:

bashCopy codesudo systemctl reload apache2

For Nginx, create symbolic links for the virtual hosts:

bashCopy codesudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Now, your VPS is set up to serve both example1.com and example2.com.

Step 4: Point Domain Names to Your VPS

Next, you need to point your domain names to your VPS so that visitors can access your websites. This is done by updating the DNS records for each domain.

A. Get Your VPS IP Address

First, find your VPS’s public IP address. You can usually find this in your VPS provider’s dashboard or by running the following command:

bashCopy codecurl ifconfig.me

B. Update DNS Records

Login to the control panel of your domain registrar (the place where you bought your domain names). Look for the DNS settings and create an A record that points your domain to your VPS’s IP address. For example:

Repeat this process for example2.com. DNS propagation may take a few hours, but once complete, visitors will be directed to your VPS.

Step 5: Install SSL Certificates

In today’s web environment, securing your sites with SSL certificates is essential. SSL ensures data transmitted between your users and your website is encrypted. Plus, it boosts your search rankings and credibility.

You can easily install SSL certificates using Let’s Encrypt, a free SSL provider.

For Apache, install the Let’s Encrypt client and enable SSL:

bashCopy codesudo apt install certbot python3-certbot-apache
sudo certbot --apache

For Nginx:

bashCopy codesudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

Follow the prompts to secure your domains. Certbot will automatically configure SSL for your sites, and you’ll now have https running across all your websites.

Step 6: Manage and Monitor Your Websites

Now that you have multiple websites running on your VPS, it’s important to manage and monitor them effectively. Here are some tips to help:

A. Monitoring Tools

Use tools like UptimeRobot or Pingdom to monitor your website’s uptime and receive alerts if something goes wrong.

B. Server Management

Keep an eye on server resource usage with commands like top or htop to ensure your VPS isn’t overburdened by the number of websites you’re hosting.

C. Backups

Don’t forget to set up regular backups for your sites. You can automate this with scripts or use tools like Rsync or SCP to back up your data to a remote server.

Conclusion: Host Multiple Websites, the Easy Way!

Hosting multiple websites on a single VPS may seem challenging, but with the right setup, it’s a powerful and cost-effective solution. From configuring virtual hosts to securing your sites with SSL, following these steps will ensure your websites run smoothly, securely, and efficiently.

Now you’ve got everything you need to host multiple websites on your VPS—saving money, reducing complexity, and giving you full control over your hosting environment. Ready to take your web hosting game to the next level? Let’s go!

Hosting Essentials

Part 4 of 15

"Hosting Essentials" by RockHoster covers everything about web hosting, from shared hosting to dedicated servers, VPS (Windows & Linux), and VDS. Get expert insights, tips, and advice to choose the right solution and optimize your online presence.

Up next

The Advantages of VDS Hosting for Growing Businesses

Why Virtual Dedicated Servers are the Ideal Choice for High-Traffic Websites and Applications