How to deploy your Python Django project

Django is a top Python web-framework known for its features, scalability, and flexibility.

In this guide, we’ll walk through how you can deploy your Django projects with Cleavr.io.

Prerequisites

Before proceeding, you’ll need to have an ac…


This content originally appeared on DEV Community and was authored by Adam Miedema

Django is a top Python web-framework known for its features, scalability, and flexibility.

In this guide, we'll walk through how you can deploy your Django projects with Cleavr.io.

Prerequisites

Before proceeding, you'll need to have an active Cleavr.io account and have a server provisioned and ready-to-go.

Step 1 - Add a NodeJS SSR app

Add a new NodeJS SSR site to your server in Cleavr.

We're using NodeJS SSR as the site's app type as it will install Node AND PM2 to the server. PM2 manages more than just node applications, so we'll take advantage of this to serve our Django app and keep it alive.

Step 2 - Configure allowed hosts

In the Django project, locate the settings.py file, or wherever you have ALLOWED_HOSTS defined, and add the domain used in the previous step to the list of allowed hosts.

For example, this is what our example looks like:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'c2lbzu22oxujfgnr2848.cleaver.rocks']

Push your changes to your GIT repo.

Step 3 - Configure app repo

Once the site has successfully been added to the server, click the Setup and deploy link to configure the web app.

On the settings > repo tab, add armgitaar/django-helloworld to the repo and keep branch as master.

In this example, we're using a Django repo originally by Django Venezuela that I've modified a bit to make the port number use the one automatically assigned by Cleavr. View the example repo here.

To view the modification, open the manage.py file and take note of the following lines:

from django.core.management.commands.runserver import Command as runserver
runserver.default_port = os.environ.get('PORT', 8000)

Django apps default to run on port 8000 and the above configuration will first check what the environment port is and will select that port if available.

Step 4 - Configure entry and PM2 ecosystem

On the Build tab, set Entry Point to manage.py and Arguments to runserver.

In the PM2 ecosystem, we'll need to set the interpreter to Python3 as well as remove a couple of configs that aren't compatible with Python apps.

Add interpreter:

"interpreter": "/usr/bin/python3",

Remove the following lines:

 "instances": "max",
 "exec_mode": "cluster_mode",

The ecosystem should look similar to the following:

{
  "name": "your.domain.com",
  "script": "manage.py",
  "args": "runserver",
  "log_type": "json",
  "cwd": "/home/cleavr/your.domain.com/current",
  "interpreter": "/usr/bin/python3",
  "env": {
    "PORT": assigned port number,
    "CI": 1,
  }
}

Step 5 - Configure deployment hooks

On the deployment hooks page,

  • Disable Install NPM Packages hook
  • Disable Build Assets hook

Add a new hook to install Python dependencies:

pip install -r requirements.txt

Add a new hook for migration:

python3 manage.py migrate

Order the above hooks to run before the activation deployment hook.

Step 6 - deploy!

Once all of the above is complete, deploy the app!

For this example, there is one more thing we need to do, which is create an admin. The easiest way is to SSH into the server and run the following command:

python3 manage.py createsuperuser --username admin --email admin@mail.com

You will be prompted to add and confirm a password.

Once completed, you should now see 'Hello World' render on the app's domain.


This content originally appeared on DEV Community and was authored by Adam Miedema


Print Share Comment Cite Upload Translate Updates
APA

Adam Miedema | Sciencx (2021-11-18T20:37:27+00:00) How to deploy your Python Django project. Retrieved from https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/

MLA
" » How to deploy your Python Django project." Adam Miedema | Sciencx - Thursday November 18, 2021, https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/
HARVARD
Adam Miedema | Sciencx Thursday November 18, 2021 » How to deploy your Python Django project., viewed ,<https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/>
VANCOUVER
Adam Miedema | Sciencx - » How to deploy your Python Django project. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/
CHICAGO
" » How to deploy your Python Django project." Adam Miedema | Sciencx - Accessed . https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/
IEEE
" » How to deploy your Python Django project." Adam Miedema | Sciencx [Online]. Available: https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/. [Accessed: ]
rf:citation
» How to deploy your Python Django project | Adam Miedema | Sciencx | https://www.scien.cx/2021/11/18/how-to-deploy-your-python-django-project/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.