python manage.py runserver 0.0.0.0:8000 weergegeven op internet met DEBUG=True. De SQLite-database in productie. Uploadt naar de repository. Drie fouten die een veelbelovend Django-project tot een pending datalek maken. Het minimale pad naar een schone implementatie is bekend; verkort het alleen niet uit vermoeidheid.
Django is in productie niet complexer dan enig ander webframework. Het is vooral een kwestie van discipline: aparte omgevingen, bestanden uitbesteden, en nooit verwarren wat lokaal werkte met wat voor het publiek acceptabel is.
Minimale reis in zeven stappen
| Stap | Commando/actie | Vaak vergeten |
|---|---|---|
| Productinstellingen | Module settings/production.py, DEBUG=False | Toegezegde geheime sleutel |
| Basis | PostgreSQL of MySQL | SQLite in productie |
| Statisch | collectstatisch → nginx/CDN | Statisch bediend door Django |
| Media | Objectopslag of speciaal volume | Media in git |
| WSGI | Gunicorn + stopcontact of poort | hardloper |
| Proxy | nginx TLS + headers | Geen HTTPS-omleiding |
| Migratie | migreren met back-up | migreren zonder test terugdraaien |
Django in productie betekent niet langer doen wat lokaal praktisch was.
Stapeltype
Internet → nginx (TLS, statisch) → Gunicorn (werknemers) → Django
↓
PostgreSQL
↓
Redis (optionele cache/Celery)
Gunicorn-werkers: regel (2 × CPU) + 1 als uitgangspunt - pas aan op basis van geheugen en zware zoekopdrachten.
Variabelen en geheimen
Stel DJANGO_SETTINGS_MODULE in op productieconfiguratie. Gebruik een unieke SECRET_KEY per omgeving. Vermeld expliciet ALLOWED_HOSTS — geen * jokerteken. Configureer de e-mailbackend (SMTP of transactionele API). Voeg CSRF_TRUSTED_ORIGINS toe als u meerdere domeinen bedient. Injecteer de variabelen via de host of een bestand buiten de repository.
Selderij en asynchrone taken
Als u e-mails verzendt, exports start of zware webhooks verwerkt, plan dan een Redis- of RabbitMQ-makelaar, een begeleide medewerker, monitoring van mislukte taken en scheid webwerker en batchwerker als de belasting dit rechtvaardigt.
Zonder Celery zal een CSV-export van tienduizend regels een Gunicorn-werknemer blokkeren voor de duur van de verwerking – andere bezoekers wachten. Bij Celery retourneert het HTTP-verzoek onmiddellijk een taak-ID; de batchwerker verwerkt op de achtergrond. Het is niet verplicht op de eerste dag, maar vanaf het begin plannen voor Redis kost minder dan refactoring onder belasting.
Hosting: criteria voor Django
Een geloofwaardige Django-host maakt op zijn minst het volgende mogelijk: Python 3.x met virtualenv of container, toegankelijke PostgreSQL (idealiter beheerd), SSH- of Git-implementatie, en voldoende RAM voor Gunicorn plus Celery-werknemers indien nodig. Vermijd multitenancy zonder WSGI-toegang: u heeft geen controle over Gunicorn- of omgevingsvariabelen.
Python PaaS (alwaysdata, Clever Cloud, Platform.sh) vereenvoudigt de eerste implementatie door Gunicorn, TLS en soms beheerde PostgreSQL in te kapselen. Een VPS vereist meer initiële installatie, maar biedt meer controle: architectuurkeuze, geen intrinsieke kwaliteit.
Controlelijst na de implementatie
Controleer na ingebruikname het volgende: geforceerde HTTPS-omleiding, beveiligingsheaders (HSTS). Deze checklist duurt dertig minuten - het vermijdt incidenten die weekenden duren.
De top: Django-producten zijn saai van opzet
Zie Hosting Node.js voor de cultuur van lange processen: de principes van proxy en worker zijn vergelijkbaar.
Beslis en ga vooruit zonder blinde vlek
Maak een aparte instellingenprod-module en sta DEBUG=True niet toe in productie. Upgrade naar PostgreSQL met regelmatig geteste back-ups. Configureer nginx plus Gunicorn onder systemd of gelijkwaardig. Integreer collectstatic in de implementatiepijplijn. Monitor 5xx-fouten en mediaschijfruimte. Blader door Python-hosts in de overzicht.
Veelgestelde vragen
Kan Django rennen zonder Gunicorn?
Niet in productie: Gunicorn, uWSGI of ASGI achter een reverse proxy. De geïntegreerde ontwikkelingsserver is niet ontworpen voor openbaar verkeer.
Waar kan ik static en media bedienen?
Statisch via nginx of CDN na collectstatic; media via objectopslag of een speciaal back-upvolume.
Moet selderij vanaf het begin nodig zijn?
Van asynchrone taken - anders uitstellen met Redis gepland als u weet dat het gebeurt.
Welke host voor een eerste Django-app?
PaaS Python of VPS met beheerde PostgreSQL. Vermijd multitenant zonder WSGI-controle.
Een Django in productie kan niet worden herkend aan de URL; hij kan worden herkend aan de afwezigheid van runserver in ps aux.
