Ricerca nel sito web

Come eseguire script Python con Apache e mod_wsgi su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa il linguaggio di programmazione Python
  4. Installa il server web Apache e il modulo mod_wsgi
  5. Configurazione del modulo WSGI in Apache
  6. Testare lo script WSGI di Python 3
  7. Scarica come macchina virtuale
    1. Dettagli di accesso per la VM

    Il modulo Apache mod_wsgi fornisce un'interfaccia per l'hosting di applicazioni Web basate su Python. È una buona scelta per i sistemi di hosting professionali in quanto fornisce una soluzione ad alte prestazioni, ma funziona altrettanto bene per i siti di piccole dimensioni. La distribuzione di applicazioni scritte con framework Python come Django, Web.py, Werkzug, Chery.py, TurboGears e Flask è facile con mod_wsgi.

    In questo tutorial, ti mostrerò come installare e configurare mod_wsgi usando il web server Apache su Ubuntu 22.04 LTS. Questa guida è una versione aggiornata della guida Apache WSGI per Ubuntu 20.04 di Hitesh Jethva.

    Prerequisiti

    • Ubuntu 22.04 Server o desktop
    • Devi essere l'amministratore di sistema e disporre dell'autorizzazione root o sudo per installare e configurare questo software.

    Iniziare

    Prima di iniziare, è una buona idea aggiornare il sistema con l'ultima versione. Puoi aggiornare il tuo sistema con il seguente comando:

    sudo apt update -y
    sudo apt upgrade -y

    Dopo aver aggiornato il sistema, riavviarlo per implementare le modifiche.

    Installa il linguaggio di programmazione Python

    Per impostazione predefinita, Python è preinstallato su Ubuntu 22.04. nel caso in cui Python non sia ancora installato, puoi installarlo con questo comando:

    sudo apt install python3 libexpat1 -y

    Lo screenshot seguente mostra l'output del comando quando python è già installato.

    Ora procedi con il passaggio successivo.

    Installa il web server Apache e il modulo mod_wsgi

    In questo passaggio, installeremo il server web Apache e il modulo Python mod_wsgi. Eseguire il seguente comando per installare entrambe le applicazioni. I pacchetti software dipendenti verranno installati automaticamente.

    sudo apt install apache2 apache2-utils ssl-cert libapache2-mod-wsgi-py3 -y

    Una volta installati tutti i pacchetti, puoi procedere al passaggio successivo.

    Configurazione del modulo WSGI in Apache

    Successivamente, è necessario creare un nuovo script Python all'interno della directory principale Web predefinita di Apache per servirlo tramite il modulo Apache WSGI. Useremo un piccolo script Hello World qui a scopo dimostrativo.

    Puoi creare lo script python con il seguente comando:

    sudo nano /var/www/html/wsgitest.py

    Aggiungi le seguenti righe:

    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]

    Salva e chiudi il file. Quindi, modifica la proprietà del file in www-data con il seguente comando:

    sudo chown www-data:www-data /var/www/html/wsgitest.py
    sudo chmod 775 /var/www/html/wsgitest.py

    Successivamente, modifica il file di configurazione dell'host virtuale Apache per servire questo file tramite il protocollo HTTP.

    sudo nano /etc/apache2/sites-enabled/000-default.conf

    Aggiungi la seguente riga:

    WSGIScriptAlias /wsgi /var/www/html/wsgitest.py
    

    subito prima della linea

    </VirtualHost>

    Il file host virtuale completo ha questo aspetto:

    
            # 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 
            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

    Salva le modifiche nell'editor di testo e chiudi l'editor. Il passaggio successivo consiste nel riavviare il server Web Apache per applicare le modifiche.

    systemctl restart apache2

    Prova lo script WSGI di Python 3

    Ora il server Apache HTTP è configurato per servire il nostro file Python tramite il protocollo HTTP.

    Apri un browser web e inserisci l'URL http://your-server-ip/wsgi. sostituire your-server-ip con l'indirizzo IP del server. Otterrai una pagina bianca con le parole \Hello Howtoforge!\.

    Questo è tutto, ora hai un server web Apache correttamente configurato per eseguire applicazioni Python usando mod_wsgi. Il passaggio successivo consiste nel distribuire l'applicazione Web Python nella directory /var/www/html/ e modificare la riga WSGIScriptAlias nel file /etc/apache2/sites-enabled/000-default.conf in modo che corrisponda allo script di avvio dell'applicazione . Quindi riavvia nuovamente Apache per applicare la modifica alla configurazione.

    Scarica come macchina virtuale

    Questa configurazione è disponibile come download di una macchina virtuale in formato ova/ovf (compatibile con VMWare e Virtualbox) per gli abbonati howtoforge.

    Dettagli di accesso per la VM

    • La password per l'amministratore utente è: howtoforge. L'utente amministratore dispone delle autorizzazioni sudo.

    Si prega di cambiare tutte le password al primo accesso.

    • L'indirizzo IP della VM è 192.168.0.100