Deploy A Django Web App With Apache, Amazon Ec2 And Ci/Cd
Published 1/2025
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 3.25 GB | Duration: 8h 33m
Published 1/2025
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 3.25 GB | Duration: 8h 33m
Master Django Deployment: Apache and CI/CD Integration on Amazon EC2 | Theory and hands-on demonstrations
What you'll learn
Deploy your Django app to an Amazon EC2 instance, configuring Apache and mod_wsgi
How to securely connect to your Amazon EC2 Instance via SSH keys in GitHub
Learn how to setup an Apache web server with mod_wsgi
How to access and utilise Amazon EC2 Instance connect
Learn how to integrate various AWS services within Django
Deploy your Django application by following an IaaS approach
Learn various Linux-based commands and issue them within an Ubuntu environment
Provision and configure a PostgreSQL database on Amazon RDS
How to update and manage static files with cache busting
Set up Git and GitHub for version control
Learn how to secure your environment variables with Apache and AWS Secrets Manager
Learn how to manage the basic CI/CD process in AWS
Design an architecture in AWS that is well-structured and designed
Orchestrate a CI/CD pipeline with GitHub, CodeBuild and CodeDeploy
Learn how to register a domain name (Amazon Route53) and provision an SSL certificate (Certbot)
Requirements
Fundamental knowledge of Django and AWS is required
You should also know the basics of HTML/CSS and JavaScript
Knowledge of Linux-based commands and/or DevOps would be advantageous
A strong and stable internet connection with no network configuration issues in terms of restrictions or limitations
Description
Welcome! I'm here to guide you in deploying your Django web applications with Apache on Amazon EC2 and automating your deployment process using CI/CD pipelines.– Please read carefully –In this course we will learn a variety of new concepts, manners of deploying a lot of extra technologies along the way._________________________What you'll learn (In-depth):_________________________Django setup & development:Learn the essentials of building and configuring a Django application for deployment.Set up your development environment for a seamless workflow, focusing on local development environments and ensuring smooth transitions to production.Master Django configuration for production, including setting allowed hosts, static files, and environment variables.Amazon EC2 deployment:Deploy a Django app on an EC2 instance with Apache and mod_wsgi, focusing on the basics of server management.Configure the EC2 instance using Linux-based commands, including managing updates, installing dependencies, and ensuring smooth operation.Secure your EC2 instance, including setting up SSH keys, managing server security groups, and configuring Apache virtual hosts for a reliable production environment.Troubleshoot and test your Apache configuration to ensure it serves your Django app correctly.Linux-Based Commands on EC2 (Ubuntu):Use common Linux commands to manage your EC2 instance (Ubuntu AMI), such as updating the system, installing dependencies, managing files, and monitoring resources.Learn to navigate the terminal for remote access and file management, including SSH into the EC2 instance and basic system administration tasks.Get comfortable using the command line to handle server tasks like starting/stopping services, viewing logs, and debugging errors in production.CI/CD automation:Implement CI/CD pipelines using AWS CodePipeline, CodeBuild, and CodeDeploy to automate your deployment process.Set up and configure each stage of the pipeline to integrate with your GitHub repository, build code, and deploy it automatically to your EC2 instance.Learn the AWS CLI commands and use them to test and manage your CI/CD pipeline directly from the terminal.Ensure fast, reliable, and secure updates to your Django app, reducing manual intervention.Cloud Infrastructure:Work with core AWS services such as EC2 (Elastic Compute Cloud), RDS (Relational Database Service), and IAM (Identity and Access Management) to build and manage a secure, scalable cloud infrastructure for your Django application.Set up a PostgreSQL production database with Amazon RDS and ensure your Django app connects to it securely.Understand IAM roles, security groups, and how to secure sensitive data and access within your AWS environment.Secure environment variables with AWS Secrets Manager:Learn to use AWS Secrets Manager to store and retrieve sensitive data such as database credentials, API keys, and other environment variables securely.Programmatically integrate AWS Secrets Manager with your Django application to dynamically load environment variables, reducing the risk of exposing sensitive information in the codebase.Configure IAM roles and policies to control access to secrets, ensuring that only the necessary services and users can retrieve them.Register a domain name with Amazon Route53 and setup SSL certification with Certbot:Register a domain name with Amazon Route53 and then use Certbot to obtain and install SSL certificates for your domain name, securing the connection to your Django app with HTTPS.Integrate the SSL certificate with Apache to enforce secure communications and protect user data.Simplified IaaS Approach:Focus on an Infrastructure as a Service (IaaS) model where you're working with a single EC2 instance, without the complexity of load balancing or auto-scaling.Learn how to configure and deploy Django on a simple, single EC2 instance, focusing on scalability at the application level and managing the server environment efficiently.Get hands-on experience working with a minimal, cost-effective setup that is easy to manage and scale manually as your application grows.This course is designed to give you a comprehensive understanding of deploying Django apps on AWS using EC2 with a hands-on, practical approach. You’ll build the foundational skills to manage servers, automate deployments, secure your application, and work with cloud infrastructure, all within a simplified and focused environment.I want to help YOU master the fundamentals of deploying your Django web apps to Apache on Amazon EC2 with CI/CD!The Deploy a Django web app with Apache, Amazon EC2 and CI/CD course has been structured in a simple and logical order. Everything that has been designed from the styling to the graphics and topics covered is crafted with the absolute duty of care towards the student.The Deploy a Django web app with Apache, Amazon EC2 and CI/CD course is a highly practical course and allows you to apply your knowledge:There is a wealth of hands-on lectures throughout this course.Your instructor:My name is Arno Pretorius. I'm a qualified IT teacher who has taught programming both in-person and online. My main passions are teaching and technology, so I thought why not just combine the best of both worlds to create something truly amazing and valuable. Over the years, I have created and deployed many real-world Django-based applications, including a job portal for university graduates and an exclusive social network.I'm a Software developer, an AWS Solutions Architect and Developer associate. I have a keen interest in cloud computing, web development and everything that relates to programming and technology.Trust me you are in good hands!This course also comes with:- 8+ hours of on-demand video- Full lifetime access- A Udemy certificate of completion- Downloadable resources- Articles- Access on mobile and TVJoin me in this course if you want to master the fundamentals of deploying your Django web app with Apache, Amazon EC2 and CI/CD!
Overview
Section 1: Course Introduction
Lecture 1 Course welcome!
Lecture 2 Course prerequisites
Lecture 3 Course overview
Lecture 4 Course support
Lecture 5 Thought process
Section 2: Final project resources
Lecture 6 Install and run the final project source code - Windows
Lecture 7 Install and run the final project source code - MacOS
Section 3: Environment setup: Python and VS Code Installation
Lecture 8 Python and Visual Studio Code - Installation - Windows
Lecture 9 Python and Visual Studio Code - Installation - MacOS
Section 4: Build a simple Django starter project - [Recommended]
Lecture 10 Django project setup - Windows
Lecture 11 Django project setup - MacOS
Lecture 12 Django default migration and app setup
Lecture 13 Create a base template, url and view
Lecture 14 Create and register a Django model - [DailyNote]
Lecture 15 Accessing the Django Admin
Lecture 16 Build a basic form for submitting notes - Part 1
Lecture 17 Build a basic form for submitting notes - Part 2
Lecture 18 Configure static files
Lecture 19 Setup our CSS and JavaScript files and test our application
Lecture 20 Apply styling to our form - [Optional]
Section 5: Getting started with AWS
Lecture 21 Create an AWS account
Lecture 22 Explore the AWS management console
Lecture 23 AWS Budgets - [Theory]
Lecture 24 Create and set a designated budget with AWS Budgets
Lecture 25 AWS account free tier - Explained
Lecture 26 Amazon IAM - [Theory]
Lecture 27 IAM - Create a user and a group
Lecture 28 IAM - Utilise our unique URL
Lecture 29 IAM - Secure your AWS accounts with MFA
Section 6: Production database setup
Lecture 30 Amazon RDS - [Theory]
Lecture 31 Provisioning a PostgreSQL database with Amazon RDS - Part 1
Lecture 32 Provisioning a PostgreSQL database with Amazon RDS - Part 2
Lecture 33 Generate sample data for production testing
Section 7: GitHub and Git Integration
Lecture 34 Create a GitHub account
Lecture 35 Install and setup Git
Lecture 36 Generate a requirements.txt file
Lecture 37 Configure our environment variables
Lecture 38 How will we keep our sensitive information secure? - [Theory]
Lecture 39 Prepare our static files for production
Lecture 40 Deployment preparation
Lecture 41 Generate a GitHub personal access token
Lecture 42 Push source code to GitHub with Git
Section 8: Deploy a Django web app with Apache and Amazon EC2
Lecture 43 Amazon EC2 - [Theory]
Lecture 44 Launch our first EC2 Instance with Ubuntu
Lecture 45 SSH configuration to clone a private repo to EC2
Lecture 46 Environment setup: Python, Git and a virtual environment
Lecture 47 Install and enable Apache with mod_wsgi
Lecture 48 Apache site virtual host configuration
Lecture 49 Testing and restarting Apache configuration
Lecture 50 Configuring allowed hosts and loading environment variables
Lecture 51 Testing and fixing form styling Issues - Part 1
Lecture 52 Testing and fixing form styling Issues - Part 2
Lecture 53 Manual redeployment with Git
Lecture 54 Command guide list - [Reference]
Lecture 55 What to expect in the next section? - [Important]
Section 9: Automating deployment with CI/CD for Amazon EC2
Lecture 56 What is the definition of DevOps? - [Theory]
Lecture 57 What is CI/CD and how can we utilise It? - [Theory]
Lecture 58 CI/CD pipeline architecture - [Theory]
Lecture 59 AWS CodeBuild - [Theory]
Lecture 60 Create a CodeBuild project
Lecture 61 AWS CodeDeploy - [Theory]
Lecture 62 CodeDeploy setup and process overview - [Theory]
Lecture 63 Setup a CodeDeploy role, application and deployment group
Lecture 64 Create and attach an IAM role to an EC2 Instance
Lecture 65 Installing and setting up the CodeDeploy agent on EC2
Lecture 66 AWS Secrets Manager - [Theory]
Lecture 67 Protecting sensitive data in AWS Secrets Manager
Lecture 68 Granting IAM role permissions for AWS Secrets Manager access
Lecture 69 Installing the AWS CLI for AWS Secrets Manager
Lecture 70 Dynamically load environment variables - Part 1
Lecture 71 Dynamically load environment variables - Part 2
Lecture 72 AWS CodePipeline - [Theory]
Lecture 73 Setting up build, deploy and start scripts for automation
Lecture 74 Grant IAM role permissions for AWS CodeBuild to retrieve an AWS Secret
Lecture 75 Pushing our scripts to GitHub and testing the BuildSpec process
Lecture 76 Integrating source, build and deploy stages with CodePipeline
Lecture 77 Invoking the CodePipeline process
Lecture 78 Managing and updating static files with cache busting
Section 10: Domain name and SSL certification
Lecture 79 Amazon Route53 - [Theory]
Lecture 80 Register a domain name with Amazon Route53
Lecture 81 Amazon Route53 - Domain name issues
Lecture 82 Certbot - [Theory]
Lecture 83 Map your server IP address to a domain name
Lecture 84 Configure our security group for HTTPS
Lecture 85 Installing and configuring an SSL certificate with Certbot
Lecture 86 Resource cleanup
Section 11: Additional functionality - [Optional]
Lecture 87 Renewing SSL certificates with Certbot - [Optional]
Lecture 88 Adding and associating an Elastic IP with EC2 - [Optional]
Section 12: Thank you!
Lecture 89 Thank you! - A final message
Lecture 90 Bonus lecture
Intermediate or advanced Django developers who want to learn about deploying their Django applications with Apache on Amazon EC2 whilst following CI-CD principles,Junior DevOps developers looking to expand their skills,Django developers who want to learn how to make use of various AWS services