Support article
How to Run Python and Django on Your Hosting
Learn whether you can run Python apps (Django, Flask) on your hosting, what you need and when to move to a VPS.
Introduction
Python is one of the most popular programming languages in the world, and Django and Flask are its best-known web frameworks. Many startups and companies develop their applications in Python.
If you’ve created an app with Django or Flask and want to publish it, the same question arises as with Node.js: does it fit on my shared hosting or do I need a VPS? In this article I explain.
What Python needs to work on the web
Like Node.js, a Python application with Django or Flask is a server: it keeps running and listening for requests. That’s why it has the same requirements as Node:
- Python installed on the server.
- A process running continuously (your app, with Gunicorn or uWSGI).
- A reverse proxy (Nginx or Apache) to receive web requests and pass them to the app.
- Dependencies installed (with
pipandrequirements.txt).
Like Node, this clashes with shared hosting limitations.
Can Python run on shared hosting?
The short answer
On most shared hosting: not comfortably or recommendably, for the same reasons as Node.js. Even if Python is installed, you can’t have Django processes running indefinitely.
The exception: cPanel with Setup Python App
Some cPanel hosts include a feature called Setup Python App (or similar) that allows running Python apps on shared in a limited way. If your cPanel has it:
- Log in to cPanel.
- Look for Setup Python App.
- Create an application: choose the Python version, domain and entry file.
- cPanel configures everything (WSGI server, proxy) for you.
[Imagen sugerida: screenshot of Setup Python App in cPanel]
With this feature you can run modest Python apps on shared. But for serious production with traffic, a VPS is still the right option.
What you need on a VPS for Python
To host a Django or Flask app in production you need a VPS with:
- Python 3.x installed.
- A WSGI server like Gunicorn or uWSGI.
- Nginx as a reverse proxy in front of Gunicorn.
- A database (PostgreSQL, MySQL or SQLite).
- A virtual environment (
venv) to isolate dependencies.
On miHosting’s managed VPS, we configure all this for you.
How to deploy Django on a VPS
The typical Django deployment flow is:
Step 1: Upload the code
Upload your app’s files to the VPS (via Git, FTP or rsync).
Step 2: Create a virtual environment
python3 -m venv venv
source venv/bin/activate
Step 3: Install dependencies
pip install -r requirements.txt
pip install gunicorn
Step 4: Configure Gunicorn
Gunicorn is the server that executes your Django app:
gunicorn myproject.wsgi:application --bind 127.0.0.1:8000
Step 5: Configure Nginx
Nginx receives browser requests and passes them to Gunicorn. You configure a server block in Nginx:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
}
location /static/ {
alias /path/to/your/static/;
}
}
Step 6: Activate SSL
With Let’s Encrypt:
certbot --nginx -d yourdomain.com
To keep the app running, use systemd or supervisor. This way it restarts if it crashes or when the server restarts.
Django vs Flask: what each needs
| Framework | Type | What for | Deployment difficulty |
|---|---|---|---|
| Django | Full framework | Large websites, with admin panel, ORM, etc. | Medium |
| Flask | Microframework | APIs, small websites | Low |
Both deploy similarly (Gunicorn + Nginx). The difference is in how the project is structured.
Alternatives if you don’t want a VPS
If your Python app doesn’t fit on shared and you don’t want to manage a VPS, you have options:
1. PaaS platforms
Services like PythonAnywhere, Heroku, Render or Railway allow deploying Python apps without managing servers. Ideal for starting.
2. Google App Engine / AWS Elastic Beanstalk
If you already use Google Cloud or AWS, these platforms allow deploying Python apps without managing servers.
3. Serverless functions
For small Python functions, you can use AWS Lambda, Google Cloud Functions or Azure Functions.
Useful tips
- Always use a virtual environment (
venv). Avoids conflicts between projects. - Specify versions in requirements.txt. Use
pip freeze > requirements.txtto pin them. - Don’t serve static files with Django in production. Configure Nginx or a CDN to serve
/static/and/media/. - Use an appropriate database. SQLite is for development; in production, PostgreSQL or MySQL.
- Configure DEBUG=False in production. And define
ALLOWED_HOSTScorrectly.
Common problems
My Django app doesn’t load static files
You have to run python manage.py collectstatic to copy all static files to a folder, and then serve that folder with Nginx.
The server gives me 502 Bad Gateway
Gunicorn isn’t running, or Nginx can’t connect to it. Verify Gunicorn is active and the port matches.
I get “DisallowedHost”
You have DEBUG=True or ALLOWED_HOSTS doesn’t include your domain. Edit settings.py and add your domain.
My app crashes when I close the terminal
You need a process manager (systemd, supervisor or similar) to keep it running.
I don’t know if my hosting plan supports Python
If it’s shared, probably not comfortably. If it’s a VPS, yes. Open a ticket if in doubt.
Frequently asked questions
Can I run Django on miHosting’s shared hosting?
Only if your cPanel plan includes Setup Python App, and in a limited way. For production, we recommend VPS.
What’s better for Python: shared or VPS?
VPS, without a doubt. Python apps need processes running continuously.
Do I need to know Linux to host Python on a VPS?
If self-managed, yes. If it’s a miHosting managed VPS, we manage it for you.
Can I use WordPress and Python on the same VPS?
Yes. You can have Apache/Nginx serving WordPress on one domain and Gunicorn + Django on another.
Is PythonAnywhere free?
It has a very limited free plan, valid for development. For production you need a paid plan.
Choose the right environment for your Python app
Python with Django or Flask is an excellent option for modern web applications. But like Node.js, it needs the right environment: a VPS where you can have processes running and configure the web server.
If you have doubts about what you need for your Python app, open a ticket from your client panel. At miHosting we advise you honestly and, if your project fits, we configure a managed VPS to your measure.