Inspiration

MLH Set Up a Web Server The application you use to serve your website depends on the type of site. Find the section below that matches your situation.

Static Sites If your website consists entirely of static files like HTML, CSS, JavaScript, and images, then you only need to set up a simple web server to serve the files. Static sites include everything from bare-bones HTML pages to much more complicated React.js apps. NGINX is a good choice for hosting this type of website.

If you plan to host a simple site such as a blog or photo gallery, another option is to use a static site generator.

Install NGINX:

sudo apt install nginx Create an NGINX configuration file called /etc/nginx/conf.d/example.com.conf (replace this and each instance of example.com with your site’s name) and add the following content:

File: /etc/nginx/conf.d/example.com.conf

```server { listen 80; listen [::]:80; server_name example.com www.example.com; root /var/www/example.com; index index.html;

gzip             on;
gzip_comp_level  3;
gzip_types       text/plain text/css application/javascript image/*;

}``` The configuration above tells NGINX to look for your site’s files in /var/www/example.com. Create this directory now, substituting your domain name for example.com:

sudo mkdir -p /var/www/example.com Give ownership of this directory to your limited user account:

sudo chown username:username /var/www/example.com Disable the default NGINX welcome page:

sudo rm /etc/nginx/sites-enabled/default Test the NGINX configuration for errors:

sudo nginx -t If there are no errors, reload the configuration:

sudo nginx -s reload Copy the static files from your local computer to the target directory on your Linode. There are many ways to accomplish this. For example, if your site files are stored in a directory called my-website on your computer, you can use scp from your local computer:

scp -r my-website/* username@:/var/www/example.com/ Activate the firewall using the built-in NGINX plugin for UFW:

sudo ufw allow 'NGINX Full' sudo ufw allow ssh sudo ufw enable Check that NGINX loaded successfully:

sudo systemctl status nginx If NGINX loads successfully, continue to the Test your Website section below.

This configuration is sufficient to get you started. For more advanced options and optimizations, see our series on NGINX configuration.

LAMP Stack Other sites, such as WordPress, need a database in addition to a web server. This combination is known as a stack. WordPress is often used with the extremely popular LAMP stack (Linux, Apache, MariaDB and PHP). To install a LAMP stack manually, find the guide for your distribution in our LAMP section.

If you are using WordPress, another option is to use Docker. All of the components needed to run WordPress, along with WordPress itself, are bundled into a container that can be deployed with single command. See our WordPress with Docker Compose guide for details. Official Docker images are also available for other CMS platforms including Ghost and Joomla.

Other Site Types If none of these application stacks fit your situation, review our Websites and Development sections to find a solution that works for your project.

Test your Website Test your website(s) before you add DNS records and make the site available publicly on your domain. Enter your Linode’s public IP address in the address bar of a web browser. You should see your website displayed. When you are confident that the site is functioning correctly, proceed to the next section.

Add a Domain If you’re new to Linode, or if you’ve just purchased a new domain name, the first step is to add a new domain in the Domains section of the Cloud Manager. If you don’t know what DNS records to add, the DNS Manager can insert some basic records when you create the new domain.

Note Creating a domain also creates its corresponding domain zone. For a deep dive into the Linode DNS Manager, see our DNS Manager guide. From the Domains section, click on Add a Domain. The Add a New Domain panel will appear where you can fill out the form fields with your domain’s information.

If you want to add a slave zone instead of a master zone, click the Slave radio button.

Note In order for Linode’s DNS servers to function as slaves, your DNS master server must notify and allow AXFR requests from the following IP addresses:

104.237.137.10 65.19.178.10 75.127.96.10 207.192.70.10 109.74.194.10 2600:3c00::a 2600:3c01::a 2600:3c02::a 2600:3c03::a 2a01:7e00::a Enter your domain name in the Domain field. An example is shown above.

Enter an administrator’s email address in the SOA Email Address field.

If you are unfamiliar with DNS, the DNS Manager can automatically create some basic DNS records to get you started. To have it insert these records, select Yes, insert a few records to get me started, then select from the drop-down menu the Linode with which you want this domain zone associated.

Alternatively, to keep the domain zone empty and prevent the DNS Manager from creating DNS records, select No, I want the zone empty.

Click Create. If you selected the option to have the DNS Manager insert basic DNS records, those records will be visible on the Domains detail page. The created records should include SOA, NS, MX, and A/AAA.

If you elected to keep the zone empty, you can start adding DNS records now. The Domain detail page will contain an SOA and NS record for the domain. Skip to the Add DNS Records section for instructions.

Add DNS Records When you first create a domain, you’ll need to add some DNS records. This section explains how to add your own records.

Select a domain from within the Domains section of the Cloud Manager. The domain’s detail page appears:

The page is divided into different sections for each type of DNS record. Locate the section for the type of DNS record you want to add, then click Add a Record. The example below shows how to add an A/AAAA record.

Note The exact form fields will vary depending on the type of DNS record you select. Enter a hostname in the Hostname field.

Enter the IP address of your server in the IP Address field. See this quick answer page to find your Linode’s IP address.

Select a time interval from the TTL menu. TTL stands for time to live, and affects how long DNS records are cached by DNS resolvers. When the designated time to live is reached, the resolver must query the authoritative name servers for new records.

Click Save. It can take up to 30 minutes for new DNS records to become active.

Set Reverse DNS Computers use DNS to determine the IP address associated with a domain name. Reverse DNS lookup does the opposite by resolving an IP address to a designated domain name. You should always set the reverse DNS, even if your Linode hosts more than one domain.

Built With

Share this project:

Updates