Full Stack Python

# Deployment

Deployment involves packaging up your web application and putting it in a production environment that can run the app.

## Why is deployment necessary?

Your web application must live somewhere other than your own desktop or laptop. A production environment is the canonical version of your current application and its associated data.

## Deployment topics map

Python web application deployments are comprised of many pieces that need to be individually configured. Here is a map that visually depicts how each deployment topic relates to each other. Click the image to pull up a PDF version.

## Deployment hosting options

There are four options for deploying and hosting a web application:

1. "Bare metal" servers

2. Virtualized servers

3. Infrastructure-as-a-service

4. Platform-as-a-service

The first three options are similar. The deployer needs to provision one or more servers with a Linux distribution. System packages, a web server, WSGI server, database and the Python environment are then installed. Finally the application can be pulled from source and installed in the environment.

Note that there are other ways of installing a Python web application through system-specific package management systems. We won't cover those in this guide as they are considered advanced deployment techniques.

## Deployment resources

- Thoughts on web application deployment walks through stages of deployment with source control, planning, continuous deployment and monitoring the results.

- Practical continuous deployment defines delivery versus deployment and walks through a continuous deployment workflow.

- If you're using Flask this detailed post on deploying it to Ubuntu is a great way to familiarize yourself with the deployment process.

## Deployment learning checklist

If you're tight on time look at the platform-as-a-service (PaaS) options. You can deploy a low traffic project web app for free or low cost. You won't have to worry about setting up the operating system and web server compared to going the traditional server route. In theory you should be able to get your application live on the web sooner with PaaS hosting.

Traditional server options are your best bet for learning how the entire Python web stack works. You'll often save money with a virtual private server instead of a platform-as-a-service as you scale up.

Read about servers, operating systems, web servers and WSGI servers to get a broad picture of what components need to be set up to run a Python web application.

### How would you like to deploy your web app?

Show me options for bare metal, virtualized servers, and infrastructure-as-a-service.

How do I use a platform-as-a-service to deploy my Python web app?

I have a server I can use. How do I set up the operating system?

#### Interested in major updates to this site or an alert when a complete Full Stack Python book with detailed example code is released? Sign up here and you'll an occasional email only when there's big news to report.