Wie man Python-Skripte mit Apache und mod_wsgi auf Ubuntu 22.04 ausführt
Wie man Python-Skripte mit Apache und mod_wsgi auf Ubuntu 22.04 ausführt
Das Apache-Modul mod_wsgi bietet eine Schnittstelle zum Hosten von Python-basierten Webanwendungen. Es ist eine gute Wahl für professionelle Hosting-Systeme, da es eine leistungsstarke Lösung bietet, funktioniert aber ebenso gut für kleine Seiten. Die Bereitstellung von Anwendungen, die mit Python-Frameworks wie Django, Web.py, Werkzeug, Cherry.py, TurboGears und Flask geschrieben wurden, ist mit mod_wsgi einfach.
In diesem Tutorial zeige ich Ihnen, wie Sie mod_wsgi mit dem Apache-Webserver auf Ubuntu 22.04 LTS installieren und konfigurieren. Dieser Leitfaden ist eine aktualisierte Version des Apache WSGI-Leitfadens für Ubuntu 20.04 von Hitesh Jethva.
Voraussetzungen
- Ubuntu 22.04 Server oder Desktop
- Sie müssen der Systemadministrator sein und entweder über Root- oder Sudo-Rechte verfügen, um diese Software zu installieren und zu konfigurieren.
Erste Schritte
Bevor Sie beginnen, ist es eine gute Idee, Ihr System mit der neuesten Version zu aktualisieren. Sie können Ihr System mit dem folgenden Befehl aktualisieren:
sudo apt update -y
sudo apt upgrade -yNachdem Sie das System aktualisiert haben, starten Sie es neu, um die Änderungen umzusetzen.
Installiere die Programmiersprache Python
Standardmäßig ist Python bereits auf Ubuntu 22.04 vorinstalliert. Falls Python noch nicht installiert ist, können Sie es mit folgendem Befehl installieren:
sudo apt install python3 libexpat1 -y
Der Screenshot unten zeigt die Ausgabe des Befehls, wenn Python bereits installiert ist.
Fahren Sie nun mit dem nächsten Schritt fort.
Installieren Sie den Apache-Webserver und das mod_wsgi-Modul
In diesem Schritt werden wir den Apache-Webserver und das mod_wsgi-Python-Modul installieren. Führen Sie den folgenden Befehl aus, um beide Anwendungen zu installieren. Die abhängigen Softwarepakete werden automatisch installiert.
sudo apt install apache2 apache2-utils ssl-cert libapache2-mod-wsgi-py3 -ySobald alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.
WSGI-Modulkonfiguration in Apache
Als nächstes müssen Sie ein neues Python-Skript im Standard-Webstammverzeichnis von Apache erstellen, um es über das WSGI-Apache-Modul bereitzustellen. Wir werden hier ein kleines 'Hello World'-Skript zu Demonstrationszwecken verwenden.
Sie können das Python-Skript mit dem folgenden Befehl erstellen:
sudo nano /var/www/html/wsgitest.pyFügen Sie die folgenden Zeilen hinzu:
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] Speichern Sie die Datei und schließen Sie sie. Ändern Sie dann mit dem folgenden Befehl den Eigentümer der Datei in www-data:
sudo chown www-data:www-data /var/www/html/wsgitest.py
sudo chmod 775 /var/www/html/wsgitest.py
Als nächstes bearbeiten Sie die Apache-Virtual-Host-Konfigurationsdatei, um diese Datei über das HTTP-Protokoll bereitzustellen.
sudo nano /etc/apache2/sites-enabled/000-default.confFügen Sie die folgende Zeile hinzu:
WSGIScriptAlias /wsgi /var/www/html/wsgitest.py
direkt vor der Linie
</VirtualHost>Die vollständige virtuelle Host-Datei sieht folgendermaßen aus:
# 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 noetÄndern Sie die Änderungen im Texteditor und schließen Sie den Editor. Der nächste Schritt besteht darin, den Apache-Webserver neu zu starten, um die Änderungen anzuwenden.
systemctl restart apache2Teste das Python 3 WSGI-Skript
Jetzt ist der Apache HTTP-Server konfiguriert, um unsere Python-Datei über das HTTP-Protokoll bereitzustellen.
Öffnen Sie einen Webbrowser und geben Sie die URL http://your-server-ip/wsgi ein. Ersetzen Sie your-server-ip mit der IP-Adresse des Servers. Sie erhalten eine weiße Seite mit den Worten „Hallo Howtoforge!“.
Das ist alles, Sie haben jetzt einen richtig konfigurierten Apache-Webserver, um Python-Anwendungen mit mod_wsgi auszuführen. Der nächste Schritt besteht darin, Ihre Python-Webanwendung in das Verzeichnis /var/www/html/ zu deployen und die WSGIScriptAlias-Zeile in der Datei /etc/apache2/sites-enabled/000-default.conf anzupassen, um dem Startskript Ihrer Anwendung zu entsprechen. Starten Sie dann Apache erneut, um die Konfigurationsänderung anzuwenden.
Als virtuelle Maschine herunterladen
Dieses Setup ist als Download einer virtuellen Maschine im OVA/OVF-Format (kompatibel mit VMWare und Virtualbox) für Howtoforge-Abonnenten verfügbar.
Anmeldeinformationen für die VM
- Das Passwort für den Benutzer 'administrator' lautet: 'howtoforge'. Der Administratorbenutzer hat Sudo-Rechte.
Bitte ändern Sie bei der ersten Anmeldung alle Passwörter.
- Die IP-Adresse der VM lautet 192.168.0.100

