Deploying Python Webapps
How To Take Code That Works On Your Machine And Make It Live On The Internet
If you have a portfolio project you want to showcase…
Or a side project you have been thinking about for years…
Maybe even an idea for a SaaS business you want to launch…
This Innovative Professional Course Is For You.
The problem is that once you have your app working on "localhost", that is not enough.
In order for the outside world to see it, you must deploy.
And while that is not easy on your own, this one-of-a-kind course for technology professionals shows you how.
This is a valuable and empowering skillset that will benefit you for the rest of your career.
You will learn to deploy your apps in a way that is optimized for you to launch, update and maintain your personal project…
But is also effective, secure, and robust enough for teams working together on a corporate product as well.
I am sure this sounds good to you so far. But it raises TWO questions.
The first one being:
What Will You Deploy?
In this course, you will deploy a Django web application. Already written and provided for you.
This is the perfect starting point for several reasons.
To be clear, what you learn in this course applies to deploying MANY kinds of apps.
It applies to web applications that are not built on Django. Even applications which are not webapps at all.
But we want to start with something concrete and build a strong foundation.
So you can build on that foundation, and extend it to deploying apps such as:
- Python webapps using non-Django frameworks like Flask or FastAPI
- Applications in other languages, such as Java or NodeJS or PHP
- Microservices and API web servers
- Non-webapps like an LLM chat server
- Non-web applications speaking protocols such as RPC instead of HTTP
- Even internet-connected apps without any outside interface at all, such as a persistently online stock or crypto trading bot
Even though our project in this course is a Django webapp, over 90% of what you learn applies to every kind of app listed above, and more.
You are learning a generic framework that applies to nearly anything you might want to deploy...
Now, Or In The Future.
On top of all that, Django is useful.
When you learn how to deploy a Django app, you are instantly more valuable to yourself and to employers.
Django is the most popular backend Python web framework, and is full stack with powerful batteries.
Many of those side projects you have been dreaming about can be done most easily by deploying Django.
So that is the answer to the first question. Leading us to the second:
How Will You Deploy It?
If your goal is simply to get your app deployed, you have countless approaches to choose from.
You have paid platforms that make it easy (but not cheap) to deploy specific narrow kinds of web application.
You have entire cloud infrastructure solutions like AWS or GCP.
You have highly scalable platforms like Kubernetes that require a whole team of devops and site-reliability engineers to make it run.
And since you have a nearly infinite number of possibilities to choose from...
In designing this course, the deployment approach you learn must:
Meet Three Criteria.
First, it must be understandable.
Meaning the components are simple enough you can grok them in a reasonable amount of time...
And important functionality is not buried under layers of baffling abstraction.
This is important for many reasons...
But one is debugging. So if and when something goes wrong, you can decipher the problem more easily, and fix it faster.
The second criteria is that it must be flexible.
Meaning the deployment method you learn is NOT limited to specific narrow types of application.
It is not limited by programming language, by framework, or even by purpose.
So even though you will deploy a Python Django web application...
Nearly EVERYTHING you learn will transfer to any kind of application you will deploy now or in the future.
And third, it must be future-proof.
As much as possible. So it empowers you to deploy ANY application you might want in the coming years, and will work with new kinds of application we cannot even imagine yet.
I considered over a dozen additional criteria as well, in addition to these three...
Leading to a particular specific stack you will learn in this course:
The Stack
In this course, you will deploy a Django web application on this technology stack:
- Linode VPS ($5/month) for hosting
- Ansible for infrastructure-as-code
- Ubuntu Linux LTS for the OS
- Vagrant for local development
- Caddy web server for hassle-free HTTPS
- PostgreSQL for database
I have specific reasons for every one of these...
But the bottom line is this stack meets the criteria of understandable, flexible, future proof, and more - and does so better than any other stack I have found.
The best thing is that each of these can be "swapped out" for anything you prefer.
Want to use AWS Lightsail or Digital Ocean instead of Linode? That's relatively easy, once you have gone through the course and deployed our Django app on this stack.
Want to use RHEL or Fedora? Again, relatively easy, once you have ramped up on Ubuntu.
Want to use Nginx, Apache, or some other web server? Or MySQL or MongoDB instead of Postgres? Again, all relatively easy to swap out.
What about extensibility? What if you want to add a Redis data store, or a Celery task queue, or something else? Again, with this stack, that is all relatively easy to do.
This is the stack you want to learn first. It is a great foundation for almost any variation or extension you want.
And it has longevity. In this course, by mastering this stack, you are learning foundations that will potentially serve you for DECADES.
As a bonus: everything in this stack is mature, stable, and tremendously well documented.
That means AI chat tools and online info can help you with any issue you encounter, regardless of what kind of application you may wish to deploy in the future.
The prerequisites and requirements:
- Your computer must be able to use Vagrant + VirtualBox to run a virtual machine. Nearly all modern computers can do this.
- You must own a domain name. If you have a spare domain you have not been using, that will work fine.
- You must be willing to work on the Linux command line, and to learn a few simple commands. You don't have to be a Linux wizard; just the basics are enough, and you can learn them in 1-2 hours (I'll show you how in the course).
- You must know the basics of command-line Git, or be willing to learn quickly. Not wizard level; just basic commands.
What's Included
Your Deployment Tool Box
- Set up with Vagrant and become familiar with the Linux command line
- Understand SSH keys and how they will be used in the deploy process
- Download the sample Django webapp, configure and run it locally
- Creating Your Deployment VM
Ansible For Infrastructure As Code
- Overview Of Ansible
- Deploying simple playbooks on the Development VM
- Publishing updates from a GitHub repository
- Orchestrating your production VM
The Web Server
- Using the Caddy webserver
- Configuring HTTPS (for free!)
- Deploying a static website
- Updating your website through GitHub
Django And Databases
- Using the provided sample Django webapp
- Configuring GUnicorn for Python's WSGI interface
- Integrating GUnicorn and Caddy for the best of all worlds
- Installing and configuring the PostgreSQL database server
- Automating Django database migrations
Rave Reviews
Architect Mila Ignatova says:
"I also wanted to let you know that I am really enjoying the deployment workshop, thank you for sharing your knowledge with us. I truly appreciate how clearly you explain complex topics. It reflects not only your deep understanding of the material and genuine passion for the subject, but also excellent teaching skills, something not many technical experts possess."
Senior Systems Engineer Roe McBurnett enthusiastically says:
"BTW, I'm having a BLAST doing this course!!! Yes, this is VERY COOL!!! Aaaand I have finished the second part, setting up postgresql..... All of the stuff we have been doing in these classes make it SOOO EASY! I'm very impressed and happy! Thanks!!"
Software Engineer Tipton Cole says:
"I have to say that I like the way this class is working out. You've blazed a direct path to handle this narrow set of needs... I've worked with VMs quite a bit, but have never built a clean way of managing them like this. I really appreciate just how much you have distilled into a very short time."
Questions And Answers
If you have a question not answered here, send an email to service@powerfulpython.com and we will respond promptly.
- How long is the course?
The course includes over 15 hours of recorded video. It was originally made from a 4-week live training. with students expected to invest a minimum of 5 hours per week for lectures and hands-on exercises.
- How much time does this take?
This will vary, but most students should expect to invest about 20 focused hours to complete the entire course.
- Do I need to write the Django app before I deploy it?
No, you will not need to write the code of the app you deploy in this course. Everything is provided for you, so you can focus on the actual deployment process.
- I don't know Django, is that a problem?
No, you do not need to know how to write Django applications in order to deploy them. You will need to learn a few details, but those are taught as part of the course.
- What kind of computer do I need?
You need a computer that can run VirtualBox and Vagrant. Most modern computers can do this.
16 GB RAM is recommended. 8 GB will also work, but the VM will run more slowly, so you will have to be more patient.
- How well do I need to know Python?
You need to know how to create Python virtual environments. Aside from that, you only need to be able to write simple Python programs; this does not require a high level of Python skill.
- Which operating systems are supported?
-
It can be macOS, Windows or Linux.
- Do I just need to own the domain name? Or does it need to be hosted somewhere?
-
Just owned. You'll set up hosting on the VPS; I'll instruct you how to do that in the training.
The reason you'll need to use a domain name, instead of just using the IP address, is that I'll teach you how to set up a real secure cert for it (at no extra cost). That requires an actual domain name. It's just for learning purposes, so it can be literally any domain you own.
- I have another question.
-
Email us at service@powerfulpython.com and we will reply as quickly as possible.