Setting up a VPS for website hosting - Part 1

Creating the server

I rent my server from Linode. Other similar cloud hosting solutions are DigitalOcean and Amazon Web Services. Once I setup an account with Linode, I created a new VPS, chose the computational capability (the lowest specs), and the location of the server. You always want your server to be closest to your audience since then it will be faster for their browser to download the website pages.

Once the type of VPS is chosen, you’ll be asked which operating system you want and be prompted to create a root password. This root password is incredibly important, but it will rarely be used. We don’t want to login and use the server as root since it would be very easy to accidentally break things. I choose Ubuntu since that’s the Linux distro that I’m most familiar with. I will use Ubuntu for the rest of this guide as well.

Once that’s done, Linode will freshly image the computer to your distro and send you an email you’re your VPS’s IP Address.

Logging into your server

If you’re on MacOS, open Terminal. If you’re on Windows, I highly suggest Windows Subsystem for Linux (WSL).

Grab your IP Address that they gave you, and in terminal, type:

ssh root@123.456.789
and replace 123.456.789 with your unique IP Address. It will prompt you for the root password. Enter that in.

Now your terminal will no longer send commands to your own computer. All commands in your terminal will be sent to your VPS

Initial server updates

The first thing to do is update your new VPS. Run these commands:

sudo apt update && sudo apt upgrade

The first command, sudo apt update is really the command apt update. This tells the VPS to search and download any necessary updates. Sudo in front means run as root, since updates are only allowed to be performed by admin level accounts. Most of the commands that we will use are prefaced with sudo

The second command, sudo apt upgrade takes those downloaded updates and installs them.

(Optional) Change the hostname

Changing the hostname:

hostnamectl set-hostname example_hostname
The hostname is the part after your username. I typically name all my computers some variant of cindy@bui

Update hosts file

There is a file on your server in /etc/hosts that stores your server's IP Address, domain name, and hostname. This is so the server knows what its own name is.

I use vim to open files in a command line interface. Quick tip: hit i to insert text and :wq to write and exit. Nano is easier to use at first for beginners, but vim is incredibly extensible and fast.

Open the file:

vim /etc/hosts
In the first line, put your IP Address, hostname, and Fully Qualified Domain Name (FQDN). A FQDN is something like bui.cindybui.me. The format is hostname.domain_name.

The first few lines of my file are:


127.0.0.1       localhost
173.255.210.174 bui.cindybui.me bui  
2600:3c01::f03c:91ff:fe02:0dc0 bui.cindybui.me bui
                    

(Optional) Setting the timezone

Setting the timezone:

timedatectl set-timezone 'America/New_York'
If you're not in NYC, use timedatectl list-timezones to find the exact string for your timezone. Use
date
to confirm that it worked.