Menu

Log in

Sign up

From beginner to master of web design, coding, infrastructure operation, business development and marketing

  • COURSES
  • HTML & CSS Introduction
  • HTML & CSS Coding with AI
  • Linux Introduction
  • Docker Basics
  • Git & GitHub Introduction
  • JavaScript Coding with AI
  • Django Introduction
  • AWS Basics
  • Figma Introduction
  • SEO Tutorial for Beginners
  • SEO with AI
  • OTHERS
  • About
  • Terms of Service
  • Privacy Policy

© 2024 D-Libro. All Rights Reserved

Django IntroductionChapter 6. Deploy Django App

Domain Setup

Domain Setup

Domain Configuration for Django Apps

Accessing your web app using only an IP address is not user-friendly. To make your web app accessible through your domain, register your domain and attach the domain to the IP address.

There are five steps to complete this process to set up a domain for your app on the Lightsail platform.

  1. Buy and register your own domain
  2. Create a DNS zone in the Lightsail console (Obtain NS records)
  3. Assign the domain to the static IP address in the Lightsail console (Adding an A record to the DNS zone)
  4. Register the NS records at the DNS hosting provider
  5. Adjust Django and Nginx settings

Buy and register your own domain

If you don't have your domain, you must buy it from a registrar who manages and sells domains. As registrars often manage and host domains on their DNS servers, they are also called DNS hosting providers.

There are many providers. You can choose any of them. Amazon also provides a domain service called Route 53.

Usually, domains with '.com' are less available and more expensive. Cheap domains are available for less than $10 per year. For practice purposes, a cheap one is enough, but you need to make sure it won't be auto-renewed, or else you may get unexpected charges in the future.

Create a DNS zone in the Lightsail console
(Obtain NS records)

Once you get your own domain, you can register it and create a DNS zone in the Lightsail console. In the following steps, we assume that you bought a domain other than Amazon Route 53.

From the home page (not from the instance page), select the Domain & DNS tab. Click on the Create DNS zone button.

Create a DNS zone in the Lightsail console: Step 1

Add your own domain.

Create a DNS zone in the Lightsail console: Step 2

Confirm that a DNS zone is created and check the NS records. You'll need to add these records to the DNS hosting provider's website.

Create a DNS zone in the Lightsail console: Step 3

Assign the domain to the static IP address in the Lightsail console

To match your domain name and static IP address, assign the domain to the static IP address. This action is the same as adding an A record to the DNS.

For the domain, you can also use a subdomain.

Assign the domain to the static IP address in the Lightsail console: Step 1

After assigning it, you can check the DNS record tab. You can see that the A record has been added.

Assign the domain to the static IP address in the Lightsail console: Step 2

Register the NS records at the DNS hosting provider

Next, you need to go back to the DNS hosting provider's web site to add the NS records. Usually, you can register NS records on the account pages of hosting providers. Login with your account and find a page where you can add your NS records.

User interfaces differ by provider but you need to make sure that all NS records are registered like shown in the image below.

Register the NS records at the DNS hosting provider

It may take time to update the name server information.

Adjust Django and Nginx settings and restart

To make your web app accessible by the domain, you need to add the domain information in Django settings and Nginx configurations.

Add the domain to Django settings

You need to add the domain to ALLOWED_HOSTS. Open the .env file to edit it.

.env
ALLOWED_HOSTS=localhost,xx.xx.xx.xx,example.com

Add the domain to Nginx configurations

You need to add the domain to server_name. Open /etc/nginx/sites-available/project_d to edit it. To add a domain, you don't need to use ,(comma). Instead, use a space after the static IP address.

/etc/nginx/sites-available/ project_d
server {
listen 80;
server_name xx.xx.xx.xx example.com;

  location = /favicon.ico { access_log off; log_not_found off;}
  location /static{
    alias /usr/share/nginx/html/static;
}

location / {
  include proxy_params;
  proxy_pass http://unix:/home/ubuntu/project_d/project_d.sock;
  }
}

Restart Gunicorn and Nginx

To reflect the settings, restart Nginx.

Command Line - INPUT
sudo systemctl restart project_d
sudo systemctl restart nginx

Check if the app is accessible through the domain

If all settings are properly done, you'll be able to see your app through the domain now.

Index page UI example

You can also learn this topic offline. Click AmazonKindle.

Tags:

ALLOWED_HOSTS

App Deployment

.env

DNS zone

registrar

A record

DNS server

NS records

Subdomain

DNS hosting provider

Django Introduction
Course Content

Chapter 1. Django Key Concepts

Web Framework and Django

Websites vs. Django Web Apps

How Django Handles HTTP Request and HTTP Response

Django's MVT Framework

Django Templates vs. Django APIs

Chapter 2. Django Quick Start Guide

Install Python

Install Visual Studio Code

Create Project Directory

Set Up Virtual Environment

Install Django

Start Django Project

Run Server

Database Migration

URL dispatcher – urls.py

Create Superuser and Log In to Django Admin

Start App

Create HTML Templates

Create Views

Add URL Patterns

Project vs. App

Chapter 3. Django Models and Databases

Create a Database in Django

Relational Database

Create Django Models

Makemigrations and Migrate

Add Models in Django Admin – admin.py

Change Display Name of Record Objects

Django Models – Data Field Type

Django Models – Field Options

Django Models – Help Text Option

Django Models – Choices Option

Django Models – DateField with datetime Module

Django Models – Relationship Fields

Django Models – ID

Django Models – ForeignKey (OneToMany Relationship)

Django Models – OneToOneField

Django Models – ManyToManyField

Chapter 4. Create CRUD Web Application

CRUD Web Application

Basic CRUD Structure in Django

Django Generic Views

How To Write Class-Based Views with Generic Views

Generic View Basic Attributes

URL Dispatcher for CRUD Views

Django Templates for CRUD Views

Django Template Language (DTL)

Template for List Page

get_FOO_display method

Template for Detail Page

Template with Model Relations

Template for Create and Update Page

Template for Delete Page

Add Links – {% url %} tag

Extend Templates – {% extends %} tag

Check Developing App UI on Mobile Device

Django Templates with Bootstrap

Crispy Forms

Customize Views (1) – Change List Order

Customizing Views (2) – Filter Lists

Context

Customize Views (3) – Add Extra Context

Modularize Templates – {% include %} tag

Static Files in Development Environment – {% static %} tag

STATIC_URL and STATICFILES_DIRS

Create Index HTML

Chapter 5. User Management

User Authentication

Overview of User Management Functions

User Management Function Development with Django

Approaches to Building User Management Functions in Django

Django Allauth (1) – Introduction

Django Allauth (2) – Installation and Initial Settings

Django Allauth (3) – Email Verification via Console

Django Allauth (4) – Email Verification via Gmail

Django Allauth (5) – Social Login with GitHub

Django Allauth (6) – Social Login with Google

Django Allauth (7) – Allauth Template File Setup

Django Allauth (8) – Add Basic Styling with Bootstrap and Crispy Forms

Django Allauth (9) – Customize Sign-in and Sign-up Pages

User Models

Login Required – LoginRequiredMixin

User Login Status Icon on Navigation Bar

Chapter 6. Deploy Django App

Overview of Django App Deployment (1)

Overview of Django App Deployment (2)

Key Steps of Django App Deployment

Hosting Service Initial Settings (1) – AWS Lightsail setup

Hosting Service Initial Settings (2) – SSH Remote Connection

Manage Local Computer and Remote Server Simultaneously

Tips for Managing Local Development and Remote Production Environment

Hosting Service Initial Settings (3) – Clone Project Directory with GitHub

Production Database Setup

Django Production Settings (1) – Settings.py for Development and Production

Django Production Settings (2) – Production Settings

Django Production Settings (3) – django-environ and .env file

Static File Settings

Django and Dependency Installation on Production Server

Web Server and Application Server in Django

Application Server Setup – Gunicorn

Web Server Setup – Nginx

Domain Setup

SSL Setup – Certbot

Email Setting – SendGrid

Social Login for Production

Manage Local Development and Remote Production Environment

Chapter 1. Django Key Concepts

Web Framework and Django

Websites vs. Django Web Apps

How Django Handles HTTP Request and HTTP Response

Django's MVT Framework

Django Templates vs. Django APIs

Chapter 2. Django Quick Start Guide

Install Python

Install Visual Studio Code

Create Project Directory

Set Up Virtual Environment

Install Django

Start Django Project

Run Server

Database Migration

URL dispatcher – urls.py

Create Superuser and Log In to Django Admin

Start App

Create HTML Templates

Create Views

Add URL Patterns

Project vs. App

Chapter 3. Django Models and Databases

Create a Database in Django

Relational Database

Create Django Models

Makemigrations and Migrate

Add Models in Django Admin – admin.py

Change Display Name of Record Objects

Django Models – Data Field Type

Django Models – Field Options

Django Models – Help Text Option

Django Models – Choices Option

Django Models – DateField with datetime Module

Django Models – Relationship Fields

Django Models – ID

Django Models – ForeignKey (OneToMany Relationship)

Django Models – OneToOneField

Django Models – ManyToManyField

Chapter 4. Create CRUD Web Application

CRUD Web Application

Basic CRUD Structure in Django

Django Generic Views

How To Write Class-Based Views with Generic Views

Generic View Basic Attributes

URL Dispatcher for CRUD Views

Django Templates for CRUD Views

Django Template Language (DTL)

Template for List Page

get_FOO_display method

Template for Detail Page

Template with Model Relations

Template for Create and Update Page

Template for Delete Page

Add Links – {% url %} tag

Extend Templates – {% extends %} tag

Check Developing App UI on Mobile Device

Django Templates with Bootstrap

Crispy Forms

Customize Views (1) – Change List Order

Customizing Views (2) – Filter Lists

Context

Customize Views (3) – Add Extra Context

Modularize Templates – {% include %} tag

Static Files in Development Environment – {% static %} tag

STATIC_URL and STATICFILES_DIRS

Create Index HTML

Chapter 5. User Management

User Authentication

Overview of User Management Functions

User Management Function Development with Django

Approaches to Building User Management Functions in Django

Django Allauth (1) – Introduction

Django Allauth (2) – Installation and Initial Settings

Django Allauth (3) – Email Verification via Console

Django Allauth (4) – Email Verification via Gmail

Django Allauth (5) – Social Login with GitHub

Django Allauth (6) – Social Login with Google

Django Allauth (7) – Allauth Template File Setup

Django Allauth (8) – Add Basic Styling with Bootstrap and Crispy Forms

Django Allauth (9) – Customize Sign-in and Sign-up Pages

User Models

Login Required – LoginRequiredMixin

User Login Status Icon on Navigation Bar

Chapter 6. Deploy Django App

Overview of Django App Deployment (1)

Overview of Django App Deployment (2)

Key Steps of Django App Deployment

Hosting Service Initial Settings (1) – AWS Lightsail setup

Hosting Service Initial Settings (2) – SSH Remote Connection

Manage Local Computer and Remote Server Simultaneously

Tips for Managing Local Development and Remote Production Environment

Hosting Service Initial Settings (3) – Clone Project Directory with GitHub

Production Database Setup

Django Production Settings (1) – Settings.py for Development and Production

Django Production Settings (2) – Production Settings

Django Production Settings (3) – django-environ and .env file

Static File Settings

Django and Dependency Installation on Production Server

Web Server and Application Server in Django

Application Server Setup – Gunicorn

Web Server Setup – Nginx

Domain Setup

SSL Setup – Certbot

Email Setting – SendGrid

Social Login for Production

Manage Local Development and Remote Production Environment