Skip to content
Programmeren in Python, leer de nieuwste technieken
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen
  • Tools
    • Python Paste
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen
  • Tools
    • Python Paste

Introductie

3
  • 1.1 Wat is Python?
  • 1.2 Python installatie
  • 1.3 PyCharm Installatie

Basisprogrammering

6
  • 2.1 Python Basis: Variabelen, Datatypes en Operatoren
  • 2.2 Python if else (en elif)
  • 2.3 Python list (Array, Lijsten)
  • 2.4 Lussen: for, while, break, continue
  • 2.5 Functies: Definities, Parameters en Terugkeerwaarden
  • 2.6 Foutafhandeling: try, except, else, finally

Datatypes

13
  • 3.1 Introductie tot Geavanceerde Datatypes
  • 3.2 Python Tuple
  • 3.3 Python Set
  • 3.4 Python Dictionary
  • 3.5 Werken met Strings en String-methoden
  • 3.6 Collections Module: Krachtige Tools in Python
  • 3.7 Iterators en Generators
  • 3.8 List Comprehensions
  • 3.9 Geavanceerde Sortering
  • 3.10 Werken met Multi-dimensionale Data
  • 3.11 Typing en Datatypes
  • 3.12 Itertools voor Geavanceerde Iteraties
  • 3.13 Data Conversies

Modules

8
  • 4.1 Wat zijn Modules en Waarom zijn ze Belangrijk?
  • 4.2 Werken met Ingebouwde Modules
  • 4.3 Installeren en Gebruiken van Externe Pakketten
  • 4.4 Eigen Modules Maken
  • 4.5 Introductie tot Pakketten
  • 4.6 Importeren en Namespaces Begrijpen
  • 4.7 Geavanceerd: Relatief Importeren
  • 4.8 Organiseren van Grotere Projecten

Data Analyse

3
  • 5.1 Python Dataframe en Data Opschonen met Pandas
  • 5.2 Python Pandas Basisstatistieken en Data-analyse
  • 5.3 Python Numpy (NpArray): De Kracht van Numerieke Berekeningen

Webontwikkeling

5
  • 7.1 Inleiding tot Webontwikkeling
  • 7.2 HTTP-Verzoeken met requests: Communiceren met het Web
  • 7.3 Webscraping met BeautifulSoup: Data van het Web Halen als er geen APIs zijn
  • 7.4 Python Flask, een webserver & API tutorial
  • 7.5 WSGI & WebOb

Deploy

1
  • Deploy met Supervisor op Ubuntu
View Categories
  • Home
  • Documentatie
  • Deploy
  • Deploy met Supervisor op Ubuntu

Deploy met Supervisor op Ubuntu

8 minuten leestijd

Deze pagina gaat over het gebruik van Supervisor om je Python-applicaties continu draaiende te houden op Linux. In deze gids leggen we stap voor stap uit wat Supervisor is, waarom het zo’n waardevol hulpmiddel is, en hoe je het eenvoudig kunt inzetten in je projecten.

Doel #

Supervisor is een lichtgewicht process control system dat speciaal is ontworpen voor het betrouwbaar beheren van processen. Voor Python-applicaties betekent dit dat je niet alleen automatisch herstart wanneer er een crash optreedt, maar dat je ook eenvoudig meerdere processen kunt beheren. Dit zorgt voor een stabiele en altijd beschikbare applicatie, wat cruciaal is in productieomgevingen.

Voordelen #

  • Automatische herstart bij crashes:
    Met Supervisor hoef je je geen zorgen te maken over onverwachte stops. Zodra je applicatie faalt, start Supervisor deze direct opnieuw op. Dit minimaliseert downtime en zorgt voor een naadloze gebruikerservaring.
  • Eenvoudige configuratie en beheer van meerdere processen:
    De configuratiebestanden van Supervisor zijn overzichtelijk en intuïtief. Je kunt met slechts enkele regels instellen hoe en wanneer jouw Python-scripts moeten worden uitgevoerd. Dit maakt het beheer van meerdere processen eenvoudig en efficiënt.

Voorbeeld: Een eenvoudige Supervisor-configuratie #

Hieronder vind je een voorbeeldconfiguratie die je als basis kunt gebruiken voor je Python-applicatie:

[program:myscript]
command=/usr/bin/python3 /path/to/your/script.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myscript.err.log
stdout_logfile=/var/log/myscript.out.log
Python

Uitleg van de configuratie:

  • command: Het pad naar de Python-interpreter gevolgd door de locatie van jouw script.
  • autostart: Zorgt ervoor dat het script automatisch gestart wordt zodra Supervisor wordt opgestart.
  • autorestart: Stelt Supervisor in staat om het script automatisch opnieuw te starten als het onverwacht stopt.
  • stderr_logfile & stdout_logfile: Logbestanden waarin respectievelijk foutmeldingen en standaarduitvoer worden opgeslagen, wat het debuggen vergemakkelijkt.

Installatie van Python & Supervisor #

Welkom op deze pagina waar we stap voor stap uitleggen hoe je Python en Supervisor installeert op een Linux-systeem. Deze gids helpt je een solide basis op te zetten voor het beheren en automatisch herstarten van je Python-applicaties. Laten we aan de slag gaan!

1. Installatie van Python #

Voor de meeste moderne Linux-distributies is Python 3 standaard beschikbaar. Toch kan het handig zijn om zeker te weten dat je de juiste versie en bijbehorende tools hebt.

Voorbeeldstappen op Debian/Ubuntu:

sudo apt-get update
sudo apt-get install python3 python3-pip
Python

Deze commando’s zorgen ervoor dat zowel Python 3 als pip geïnstalleerd zijn. Pip is essentieel voor het installeren en beheren van Python-pakketten.

2. Installatie van Supervisor #

Supervisor is een krachtige tool voor het beheren van processen. Het biedt de mogelijkheid om jouw Python-applicatie automatisch opnieuw op te starten bij een crash en het eenvoudig beheren van meerdere processen.

Stappen om Supervisor te installeren: #

  1. Update je pakketlijsten:
    Begin met het updaten van je pakketbronnen:
sudo apt-get update
Python

  1. Installeer Supervisor:
    Installeer vervolgens Supervisor met:
sudo apt-get install supervisor
Python

Deze commando’s downloaden en installeren Supervisor op je systeem, zodat je meteen aan de slag kunt met het beheren van je applicaties.

3. Controle van de Installatie #

Na de installatie is het belangrijk om te bevestigen dat alles correct is geïnstalleerd.

Controleer de Supervisor-versie:

Voer in de terminal het volgende commando uit:

supervisord --version
Python

Best Practices #

  • Systeemonderhoud:
    Houd je systeem up-to-date met:
sudo apt-get update && sudo apt-get upgrade
Python

Dit helpt om beveiligingsproblemen te voorkomen en zorgt voor een stabiele omgeving.

  • Lees de Officiële Documentatie:
    Zowel Python als Supervisor hebben uitgebreide documentatie. Deze bronnen kunnen nuttig zijn bij het oplossen van specifieke problemen of bij het opzetten van geavanceerde configuraties.
  • Test je Installatie:
    Maak na de installatie een eenvoudige Supervisor-configuratie en start een klein testscript om zeker te zijn dat alles naar behoren werkt.

Configuratie van Supervisor voor je Python-applicatie #

Welkom! In deze sectie laten we zien hoe je Supervisor configureert om je Python-applicatie soepel en betrouwbaar te draaien op Linux. We behandelen onder andere het opzetten van een configuratiebestand, het binnenhalen van je project met Git en het instellen van log management.

1. Opzetten van een configuratiebestand #

Voordat je begint, is het belangrijk om je project op de server te halen. Dit doe je bijvoorbeeld met Git:

cd /opt
git clone https://github.com/jouw-gebruikersnaam/jouw-project.git
Python

Plaats vervolgens het Supervisor-configuratiebestand in de map /etc/supervisor/conf.d/. Dit zorgt ervoor dat Supervisor de configuratie automatisch oppikt.

2. Voorbeeldconfiguratie voor je applicatie #

Maak een nieuw bestand, bijvoorbeeld /etc/supervisor/conf.d/myapp.conf, en voeg de volgende inhoud toe:

[program:myapp]
command=/usr/bin/python3 /opt/jouw-project/app.py
directory=/opt/jouw-project
autostart=true
autorestart=true
numprocs=1
stdout_logfile=/var/log/myapp.out.log
stderr_logfile=/var/log/myapp.err.log
Python

Uitleg van de configuratie:

  • command: Geeft het pad naar de Python-interpreter en je script aan. Zorg ervoor dat dit pad klopt voor jouw omgeving.
  • directory: Dit is de werkdirectory waarin je applicatie draait. Hierdoor worden relatieve paden correct geïnterpreteerd.
  • autostart: Met deze optie wordt je applicatie automatisch gestart wanneer Supervisor opstart.
  • autorestart: Als je applicatie onverwacht stopt, zorgt deze instelling ervoor dat Supervisor de applicatie automatisch herstart.
  • numprocs: Hiermee kun je aangeven hoeveel instanties (of workers) je wilt draaien. Stel dit in op het aantal processen dat je nodig hebt.
  • stdout_logfile en stderr_logfile: Deze opties zorgen ervoor dat de standaard uitvoer en foutmeldingen in aparte logbestanden worden weggeschreven, zodat je makkelijk kunt debuggen.

3. Log Management #

Logbestanden zijn essentieel voor het monitoren en oplossen van problemen. Hieronder enkele tips om je logbeheer optimaal in te richten:

  • Logbestanden configureren:
    Door stdout_logfile en stderr_logfile in te stellen, zorg je voor een duidelijk overzicht van de normale output en eventuele foutmeldingen.
  • Logrotatie:
    Grote logbestanden kunnen snel groeien. Het is daarom handig om een tool zoals logrotate in te stellen. Hieronder een voorbeeldconfiguratie:
/var/log/myapp*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 root adm
}
Python

Deze configuratie roteert je logbestanden dagelijks, houdt de logs van de afgelopen 7 dagen bij en comprimeert oudere logs automatisch. Dit voorkomt dat de logbestanden te groot worden en zorgt voor overzichtelijkheid.

Inzet en Monitoring #

Nu je Supervisor hebt geconfigureerd om je Python-applicatie te beheren, is het tijd om te leren hoe je de service inzet en monitort. Dit helpt je om ervoor te zorgen dat je applicatie altijd draait zoals bedoeld en dat eventuele problemen snel worden opgespoord en opgelost.

Starten en Beheren #

Supervisor maakt het beheer van je processen bijzonder eenvoudig. Hieronder vind je een aantal commando’s en tips om de service te starten, de status te controleren en indien nodig herstarten:

  • Supervisor starten:
    Hoewel Supervisor vaak automatisch opstart na installatie, kun je het handmatig starten met:
sudo service supervisor start
Python

  • Status controleren:
    Met het volgende commando krijg je een overzicht van alle processen die door Supervisor worden beheerd:
supervisorctl status
Python

Hier zie je per applicatie of deze actief is (RUNNING) of niet. Dit overzicht helpt je om in één oogopslag te zien of alles naar behoren functioneert.

  • Applicatie herstarten:
    Mocht je wijzigingen hebben doorgevoerd of een probleem willen verhelpen, dan kun je een specifieke applicatie herstarten:
supervisorctl restart myapp
Python

Hierbij wordt ‘myapp’ (de naam die je in je configuratie hebt opgegeven) opnieuw opgestart, wat handig is bij updates of wanneer je een probleem hebt opgelost.

Troubleshooting #

Ondanks een goed ingerichte setup kunnen er altijd incidentele problemen optreden. Gelukkig biedt Supervisor uitgebreide mogelijkheden om snel inzicht te krijgen in wat er misgaat en hoe je het kunt verhelpen.

  • Logbestanden analyseren:
    Supervisor schrijft zowel de standaard output als foutmeldingen weg in de logbestanden die je hebt ingesteld (stdout_logfile en stderr_logfile). Om snel een idee te krijgen van wat er speelt, kun je bijvoorbeeld de foutlogs in real-time bekijken:
tail -f /var/log/myapp.err.log
Python

Dit commando toont continu de laatste regels van het foutlogbestand, zodat je direct kunt zien of er fouten optreden.

  • Veelvoorkomende problemen en oplossingen:
    • Applicatie crasht regelmatig:
      Controleer de foutlogs op aanwijzingen. Vaak wijzen resourceproblemen (zoals onvoldoende geheugen) of specifieke codefouten hierop. Het kan helpen om de applicatie tijdelijk in een debugging-modus te draaien voor meer gedetailleerde informatie.
    • Configuratiefouten:
      Kleine typefouten of onjuiste paden in je Supervisor-configuratie kunnen ervoor zorgen dat je applicatie niet opstart. Dubbelcheck je configuratiebestand en zorg dat alle instellingen correct zijn.
    • Netwerk- of verbindingsproblemen:
      Als je applicatie afhankelijk is van externe services of databases, controleer dan of de netwerkverbindingen en firewall-instellingen goed zijn geconfigureerd.
    • Te frequente herstarts:
      Als een applicatie te vaak crasht en herstart, kan dit wijzen op een structureel probleem in de code. In dat geval is het verstandig om de applicatie grondig te testen en de logs te analyseren om de oorzaak te achterhalen.

Best Practices en Onderhoud #

Het onderhouden van je Python-applicatie is net zo belangrijk als het initiële opzetten ervan. In deze sectie bespreken we een aantal best practices voor updates, beveiliging en monitoring zodat je systeem betrouwbaar en veilig blijft draaien.

Updates en Wijzigingen #

Wanneer je wijzigingen aanbrengt in je configuratie of de applicatie zelf, is het cruciaal om deze updates door te voeren zonder downtime. Supervisor biedt handige commando’s om je configuratie her te lezen en toe te passen:

  • Configuratie aanpassen:
    Werk eerst je configuratiebestand bij, bijvoorbeeld /etc/supervisor/conf.d/myapp.conf.
  • Herlezen van de configuratie:
    Voer het volgende commando uit om Supervisor te laten weten dat er wijzigingen zijn:
sudo supervisorctl reread
Python

Dit commando zorgt ervoor dat Supervisor de nieuwe of gewijzigde configuratiebestanden oppikt.

  • Updaten van de processen:
    Na het herlezen, pas je de wijzigingen toe met:
sudo supervisorctl update
Python

Hierdoor worden de processen die in de gewijzigde configuratie zijn opgenomen, zonder downtime geüpdatet. Zo blijft je systeem altijd operationeel tijdens de updates.

Beveiliging #

Een goed beveiligde omgeving is essentieel voor de betrouwbaarheid van je applicatie. Hier zijn enkele belangrijke overwegingen:

  • Gebruikersrechten:
    Zorg ervoor dat je applicatie niet als root draait. Maak bij voorkeur een specifieke gebruiker aan voor je applicatie en geef deze alleen de benodigde rechten. Dit beperkt de schade als er iets misgaat.
  • Firewall gebruiken:
    Probeer alle porten dicht te zetten die je niet gebruikt. Kijk bijvoorbeeld naar de ubuntu firewall om deze te benutten of een netwerk of cloud variant als je meer dan alleen een host based firewall wilt toepassen.
  • Toegang tot logbestanden:
    Logbestanden bevatten vaak waardevolle informatie over de werking van je applicatie. Beperk de lees- en schrijfrechten tot alleen die gebruikers die deze informatie echt nodig hebben. Je kunt de toegangsrechten instellen met:
sudo chown myappuser:myappgroup /var/log/myapp*.log
sudo chmod 640 /var/log/myapp*.log
Python

Hiermee voorkom je dat onbevoegden gevoelige informatie in de logbestanden inzien.

Monitoring Tools #

Naast de ingebouwde mogelijkheden van Supervisor is het vaak nuttig om je applicatie te koppelen aan externe monitoring tools. Dit geeft je extra zekerheid dat je applicatie soepel draait:

  • Externe monitoring:
    Denk bijvoorbeeld aan tools als Prometheus, Grafana of Nagios. Deze tools kunnen de status van je applicatie en server bewaken en je direct alarmeren als er iets misgaat.
  • Integratie met Supervisor:
    Je kunt een eenvoudige monitoring setup combineren met Supervisor door regelmatig de status op te vragen met supervisorctl status. Eventuele afwijkingen kun je dan via je monitoring systeem laten melden.
  • Log aggregatie en analyse:
    Overweeg ook om log management tools zoals ELK (Elasticsearch, Logstash, Kibana) te gebruiken. Hiermee kun je de logs van je applicatie centraal verzamelen en analyseren. Dit maakt het identificeren en oplossen van problemen nog sneller en efficiënter.
Updated on februari 27, 2025
Inhoudsopgave
  • Doel
  • Voordelen
  • Voorbeeld: Een eenvoudige Supervisor-configuratie
  • Installatie van Python & Supervisor
    • 1. Installatie van Python
    • 2. Installatie van Supervisor
      • Stappen om Supervisor te installeren:
    • 3. Controle van de Installatie
    • Best Practices
  • Configuratie van Supervisor voor je Python-applicatie
    • 1. Opzetten van een configuratiebestand
    • 2. Voorbeeldconfiguratie voor je applicatie
    • 3. Log Management
  • Inzet en Monitoring
    • Starten en Beheren
    • Troubleshooting
  • Best Practices en Onderhoud
    • Updates en Wijzigingen
    • Beveiliging
    • Monitoring Tools
Programmeren in Python

Leer python op je eigen tempo met mooie interactieve hedendaagse voorbeelden.

© Copyright 2025 Programmeren in Python.
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in