Naast PHP bieden we ook Python webhosting aan om dynamische webapplicaties te draaien op je domein. Deze handleiding legt uit hoe je hiermee aan de slag kunt gaan.
Python backend activeren
- Log in op je klantenpaneel
- Ga naar je domein
- Open het tabblad Software
- Kies Apache + Python als backend
- Sla de wijzigingen op
Het kan enkele minuten duren voordat de wijziging actief is.
Hoe werkt het?
Python webhosting maakt gebruik van WSGI (Web Server Gateway Interface), de standaard interface tussen webservers en Python applicaties. Apache communiceert via mod_wsgi met je Python code. Wanneer een request binnenkomt, roept mod_wsgi de application functie in je wsgi.py aan. Deze functie ontvangt de request gegevens en retourneert een response. Vrijwel alle Python webframeworks zoals Flask en Django zijn WSGI-compatibel en bieden een kant-en-klare application object die je kunt gebruiken.
Je eerste Python applicatie
Maak in de HTML/ map van je domein een bestand genaamd wsgi.py aan met de volgende inhoud:
def application(environ, start_response):
status = '200 OK'
headers = [('Content-Type', 'text/html; charset=utf-8')]
start_response(status, headers)
return [b'<h1>Hello from Python!</h1>']
De application functie is het verplichte entry point. De parameter environ bevat request informatie zoals headers, URL en query parameters. Via start_response stel je de HTTP status en headers in.
Je Python applicatie is nu bereikbaar via je domeinnaam.
Frameworks gebruiken
Je kunt frameworks zoals Flask of Django gebruiken. Hier is een eenvoudig voorbeeld met Flask:
from flask import Flask
app = Flask(__name__)
app.url_map.strict_slashes = False
@app.route('/')
def home():
return '<h1>Welkom</h1>'
@app.route('/about')
def about():
return '<h1>Over ons</h1>'
application = app
Statische bestanden
Bestanden die direct in je HTML/ map staan (zoals robots.txt of favicon.ico) worden automatisch door Apache geserveerd, buiten je Python-applicatie om. Dit is efficiënter en sneller. Voor CSS, JavaScript en afbeeldingen raden we aan een static/ map te gebruiken.
Voorbeeld van een typische Python applicatie directory structuur:
/
├── requirements.txt
├── myapp/
│ ├── __init__.py
│ ├── models.py
│ └── utils.py
└── HTML/
├── wsgi.py
└── static/
Dependencies installeren
Om externe packages te gebruiken:
- Maak een
requirements.txtbestand in de hoofdmap van je domein, bijvoorbeeld:# Python dependencies for this application flask==3.0.0
- Verbind via SSH met je account en installeer met:
$ pip install --user -r requirements.txt
De packages worden geïnstalleerd in je persoonlijke omgeving en zijn direct beschikbaar voor je applicatie.
Applicatie herladen
Na wijzigingen in je Python code moet je de applicatie herladen. Dit doe je via SSH:
$ touch HTML/wsgi.py
Dit past de modificatiedatum aan, wat fungeert als reload trigger en ervoor zorgt dat de applicatie automatisch wordt herladen.
Foutmeldingen bekijken
Als je applicatie niet werkt zoals verwacht, kun je de Apache error log raadplegen. Deze vind je in de logs/ map van je account:
$ cat ~/logs/error.log
Of volg de log live tijdens het testen:
$ tail -f ~/logs/error.log
Veelvoorkomende problemen
500 error na wijziging
Controleer de error log in logs/error.log voor details. Vaak gaat het om een syntax fout of ontbrekende module.
Module not found
Controleer of je $ pip install --user -r requirements.txt hebt uitgevoerd via SSH.
Wijzigingen niet zichtbaar
Vergeet niet $ touch HTML/wsgi.py uit te voeren na codewijzigingen.