What Django needs from a host
Django needs a supported Python version, pip and a virtual environment, a WSGI or ASGI entry point that stays running, a database, and a place to serve static files. Storage size and control-panel branding do not decide whether the app works.
| Requirement | Why it matters | What to check before buying |
|---|---|---|
| Python version | The Django release pins a minimum | A version you can select, not just an interpreter on the box |
| pip and virtualenv | Dependencies must install and stay isolated | SSH, or a panel that builds the environment for you |
| WSGI or ASGI | Connects the web server to your app | Gunicorn on a VPS, or an application manager on cPanel |
| Database | Holds the data, and migrations need write access | PostgreSQL or MySQL, with a user allowed to create tables |
| Static and media files | collectstatic writes files the web server must serve | A writable path and a server alias |
| Persistent processes | Celery and Redis must keep running | Only a VPS or a dedicated server offers this |
A feature list that says "Python supported" answers only the first row. The other five are what fail on launch day.
Shared cPanel Python or a VPS
Choose shared Linux hosting when the app is one Django project, one database and a handful of cron jobs. Choose a VPS when you need root access, Celery workers, Redis, several projects, or resources that do not change when a neighbour gets busy.
| Item | Linux shared with Python | VPS with root |
|---|---|---|
| Control | cPanel only, no root | Full root over SSH |
| Process manager | Panel-managed application | systemd with Gunicorn |
| Celery and Redis | Not practical | Yes |
| Memory | Shared, capped by the plan | Reserved for your server |
| Maintenance | Host handles the stack | You handle updates and backups |
| Entry price at WebJi® | ₹300 a month, before 18% GST | ₹499 a month, before 18% GST |
The VPS is not automatically faster. It is more controllable, and you also own the patching.
Match the Django version to the Python version first
The most common deployment failure is a mismatch that pip reports as a build error. Pin the pair before anything else.
- Django 5.2 LTS runs on Python 3.10 and newer, and is the safer pick for a long-lived project.
- Django 6.0 requires Python 3.12 or newer, so an older Ubuntu release will not have it in the default repositories.
- Check the installed version with
python3 --versionbefore you create the virtual environment. - Keep the same version on your laptop and the server, or a package that builds locally can fail remotely.
A requirements file with unpinned versions will pick up a new Django release on the next deploy. Pin the versions you tested.
Deploy Django on a WebJi® VPS
The sequence below is for Ubuntu with root access. Every step has an output you can check, so a failure is visible where it happens.
- Connect over SSH and run
python3 --version. Install the version your Django release needs if it is missing. - Clone the project into /var/www, then create the environment:
python3 -m venv venvandsource venv/bin/activate. - Install dependencies with
pip install -r requirements.txt, then runpython manage.py migrate. - Set SECRET_KEY, DEBUG=False and the database credentials as environment variables, not in the repository.
- Run
python manage.py collectstaticand point Nginx at the folder it writes to. - Start Gunicorn under a systemd unit, then put Nginx in front as a reverse proxy to the Gunicorn socket.
- Issue SSL for the domain and run
python manage.py check --deploy.
You know it worked when curl -I http://127.0.0.1:8000 returns a 200 from Gunicorn, and the domain then loads the app over HTTPS rather than the Nginx welcome page.
Fix the 502 and DisallowedHost errors after deploy
Two errors account for most first deploys. Both tell you exactly where to look.
| Symptom | Check | Fix |
|---|---|---|
| 502 Bad Gateway | systemctl status gunicorn and journalctl -u gunicorn | The unit is stopped or the socket path in Nginx does not match Gunicorn's bind address. |
| 400 DisallowedHost | ALLOWED_HOSTS in settings | Add the domain and the www version, then restart Gunicorn. |
| Static files 404 | The Nginx alias and STATIC_ROOT | Re-run collectstatic and correct the alias path. |
| Works locally, fails on the server | pip freeze on both machines | A different Python or package version. Pin requirements and rebuild the environment. |
Latency, billing and support from India
Keep the application and the database in the same region. A query that takes 300 ms costs more than any difference between two Indian cities, so fix the query before you shop for a server location.
Pay in INR with GST on the invoice, and confirm support hours before you commit. Ask whether the support team will look at a Gunicorn unit file, because many hosts stop at the network.
A Delhi or Mumbai visitor reaching an Indian datacenter avoids a trip overseas, which is worth having. It is not a substitute for caching or an index.
What WebJi® offers for Python, and what it does not
WebJi® has two Python-capable products. Linux shared hosting runs Python applications on cPanel, from ₹300 a month before 18% GST. A VPS starts at ₹499 a month before 18% GST with 2 vCPU, 4 GB RAM, 60 GB NVMe, a static IPv4 and root access.
There is no managed Django product, no one-click Django installer and no Django-specific plan. The VPS is self-managed: you own updates, backups and the application. Support helps with the network, the hardware and the panel, not with your code.
Email support@webji.services, 24/7 in Hindi and English with an average first reply under 60 minutes. Tell us the Python version, the database and whether you need Celery, and we will say which of the two products fits.
Frequently Asked Questions
Can I host Django on shared hosting in India?
Yes, when the plan offers Python applications with a virtual environment and a WSGI entry point. A PHP-only plan cannot. On WebJi®, Linux shared hosting from ₹300 a month before 18% GST runs Python apps on cPanel.
Do I need a VPS for Django?
No. One project with a single process fits shared hosting. Move to a VPS when you add Celery, Redis, a second app, root access or memory the shared plan cannot promise.
Which Python version does each Django release need?
Django 5.2 LTS runs on Python 3.10 and newer. Django 6.0 requires Python 3.12 or newer. Check both versions before you create the virtual environment, because pip fails with a build error when they do not match.
How much RAM does a Django app need?
There is no fixed figure. A small app with one or two Gunicorn workers and a database is comfortable in 1 to 2 GB. Redis, Celery workers and heavy libraries add per-process memory, so measure one worker before sizing the server.
Is PostgreSQL better than MySQL for Django?
Both are supported. PostgreSQL handles complex queries and JSON fields with fewer surprises, while MySQL is often already installed. Pick one, keep it in the same region as the app, and pin the client library version.
Is a WebJi® VPS managed?
No. It is self-managed with root access, a static IPv4 and your choice of OS. Updates, backups and application debugging are yours. Support covers the network, the hardware and the panel.

