HelpWebsite

Python webhosting

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

  1. Log in op je klantenpaneel
  2. Ga naar je domein
  3. Open het tabblad Software
  4. Kies Apache + Python als backend
  5. 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:

  1. Maak een requirements.txt bestand in de hoofdmap van je domein, bijvoorbeeld:
    # Python dependencies for this application
    flask==3.0.0
    
  2. 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.

Meer informatie

Gerelateerde artikelen:
Help mijn website is gehackt
Je bent hier:
Python webhosting