Comment exécuter des scripts Python avec Apache et mod_wsgi sur Ubuntu 22.04
Comment exécuter des scripts Python avec Apache et mod_wsgi sur Ubuntu 22.04
Le module Apache mod_wsgi fournit une interface pour héberger des applications web basées sur Python. C'est un bon choix pour les systèmes d'hébergement professionnels car il offre une solution haute performance, mais fonctionne également très bien pour les petits sites. Le déploiement d'applications écrites avec des cadres Python comme Django, Web.py, Werkzug, Chery.py, TurboGears et Flask est facile avec mod_wsgi.
Dans ce tutoriel, je vais vous montrer comment installer et configurer mod_wsgi en utilisant le serveur web Apache sur Ubuntu 22.04 LTS. Ce guide est une version mise à jour du guide Apache WSGI pour Ubuntu 20.04 de Hitesh Jethva.
Conditions préalables
- Ubuntu 22.04 Serveur ou Bureau
- Vous devez être l'administrateur système et avoir des droits root ou sudo pour installer et configurer ce logiciel.
Commencer
Avant de commencer, il est conseillé de mettre à jour votre système avec la dernière version. Vous pouvez mettre à jour votre système avec la commande suivante :
sudo apt update -y
sudo apt upgrade -yAprès avoir mis à jour le système, redémarrez-le pour appliquer les changements.
Installer le langage de programmation Python
Par défaut, Python est préinstallé sur Ubuntu 22.04. Dans le cas où Python n'est pas encore installé, vous pouvez l'installer avec cette commande :
sudo apt install python3 libexpat1 -yLa capture d'écran ci-dessous montre la sortie de la commande lorsque Python est déjà installé.
Maintenant, passez à l'étape suivante.
Installer le serveur web Apache et le module mod_wsgi
Dans cette étape, nous allons installer le serveur web Apache et le module Python mod_wsgi. Exécutez la commande suivante pour installer les deux applications. Les paquets logiciels dépendants seront installés automatiquement.
sudo apt install apache2 apache2-utils ssl-cert libapache2-mod-wsgi-py3 -yUne fois tous les packages installés, vous pouvez passer à l'étape suivante.
Configuration du module WSGI dans Apache
Ensuite, vous devez créer un nouveau script Python dans le répertoire racine par défaut d'Apache pour le servir via le module WSGI d'Apache. Nous utiliserons un petit script 'Hello World' ici à des fins de démonstration.
Vous pouvez créer le script Python avec la commande suivante :
sudo nano /var/www/html/wsgitest.pyAjoutez les lignes suivantes :
def application(environ, start_response):
status = '200 OK'
output = b'Hello Howtoforge!\n'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output] Enregistrez et fermez le fichier. Ensuite, changez la propriété du fichier à www-data avec la commande suivante :
sudo chown www-data:www-data /var/www/html/wsgitest.py
sudo chmod 775 /var/www/html/wsgitest.pyEnsuite, modifiez le fichier de configuration de l'hôte virtuel Apache pour servir ce fichier via le protocole HTTP.
sudo nano /etc/apache2/sites-enabled/000-default.confAjoutez la ligne suivante :
WSGIScriptAlias /wsgi /var/www/html/wsgitest.py
juste avant la ligne
</VirtualHost>Le fichier d'hôte virtuel complet ressemble à ceci :
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
WSGIScriptAlias /wsgi /var/www/html/wsgitest.py
vim: syntax=apache ts=4 sw=4 sts=4 sr noetEnregistrez les modifications dans l'éditeur de texte et fermez l'éditeur. L'étape suivante consiste à redémarrer le serveur web Apache pour appliquer les modifications.
systemctl restart apache2Tester le script WSGI Python 3
Maintenant, le serveur HTTP Apache est configuré pour servir notre fichier Python via le protocole HTTP.
Ouvrez un navigateur web et entrez l'URL http://votre-ip-de-serveur/wsgi. Remplacez votre-ip-de-serveur par l'adresse IP du serveur. Vous obtiendrez une page blanche avec les mots « Bonjour Howtoforge ! ».
C'est tout, vous avez maintenant un serveur web Apache correctement configuré pour exécuter des applications Python en utilisant mod_wsgi. La prochaine étape consiste à déployer votre application web Python dans le répertoire /var/www/html/ et à modifier la ligne WSGIScriptAlias dans le fichier /etc/apache2/sites-enabled/000-default.conf pour correspondre au script de démarrage de votre application. Ensuite, redémarrez Apache pour appliquer le changement de configuration.
Télécharger en tant que machine virtuelle
Cette configuration est disponible en tant que téléchargement de machine virtuelle au format ova/ovf (compatible avec VMWare et Virtualbox) pour les abonnés de howtoforge.
Détails de connexion pour la VM
- Le mot de passe pour l'utilisateur 'administrateur' est : 'howtoforge'. L'utilisateur administrateur a des permissions sudo.
Veuillez changer tous les mots de passe lors de la première connexion.
- L'adresse IP de la VM est 192.168.0.100

