Frage Wie man Mod_WSGI für Python auf Ubuntu einrichtet


Ich versuche, MOD_WSGI auf meiner Ubuntu-Box einzurichten. Ich habe Schritte gefunden, die besagen, dass ich die folgenden Schritte, die ich gefunden habe, machen musste http://ubuntuforums.org/showthread.php?t=833766

  1. sudo apt-get installieren libapache2-mod-wsgi
  2. sudo a2enmod mod-wsgi
  3. sudo /etc/init.d/apache2 neustarten
  4. sudo gedit / etc / apache2 / sites-available / default und aktualisiere das Verzeichnis
<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews ExecCGI

  AddHandler cgi-script .cgi
  AddHandler wsgi-script .wsgi

  AllowOverride None
  Order allow,deny
  allow from all
</Directory>
  1. sudo /etc/init.d/apache2 neustarten
  2. Erstellt test.wsgi mit

    def application(environ, start_response):
        status = '200 OK' 
        output = 'Hello World!'    
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
    
        return [output]
    

Schritt 2 schlägt fehl, weil es besagt, dass es mod-wsgi nicht finden kann, obwohl apt-get es gefunden hat. Wenn ich mit den Schritten fortfahre, wird die Python-App nur als reiner Text in einem Browser angezeigt.

Irgendwelche Ideen, was ich falsch gemacht habe?


EDIT: Ergebnisse für Fragen gestellt

automatedtester@ubuntu:~$ dpkg -l libapache2-mod-wsgi
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                   Version                                Description
+++-======================================-======================================-============================================================================================
ii  libapache2-mod-wsgi                    2.5-1                                  Python WSGI adapter module for Apache
automatedtester@ubuntu:~$ dpkg -s libapache2-mod-wsgi
Package: libapache2-mod-wsgi
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 376
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Architecture: i386
Source: mod-wsgi
Version: 2.5-1
Depends: apache2, apache2.2-common, libc6 (>= 2.4), libpython2.6 (>= 2.6), python (>= 2.5), python (<< 2.7)
Suggests: apache2-mpm-worker | apache2-mpm-event
Conffiles:
 /etc/apache2/mods-available/wsgi.load 06d2b4d2c95b28720f324bd650b7cbd6
 /etc/apache2/mods-available/wsgi.conf 408487581dfe024e8475d2fbf993a15c
Description: Python WSGI adapter module for Apache
 The mod_wsgi adapter is an Apache module that provides a WSGI (Web Server
 Gateway Interface, a standard interface between web server software and
 web applications written in Python) compliant interface for hosting Python
 based web applications within Apache. The adapter provides significantly
 better performance than using existing WSGI adapters for mod_python or CGI.
Original-Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
Homepage: http://www.modwsgi.org/
automatedtester@ubuntu:~$ sudo a2enmod libapache2-mod-wsgi
ERROR: Module libapache2-mod-wsgi does not exist!
automatedtester@ubuntu:~$ sudo a2enmod mod-wsgi
ERROR: Module mod-wsgi does not exist!

WEITER EDIT FÜR RMYates

automatedtester@ubuntu:~$ apache2ctl -t -D DUMP_MODULES
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgid_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 python_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK
automatedtester@ubuntu:~$ 

23
2017-12-06 14:46


Ursprung


Was kann mod_wsgi, Apache oder Python nicht finden? - Dana the Sane
Der a2enmod-Befehl konnte mod_wsgi nicht finden - AutomatedTester


Antworten:


Prüfen Sie, ob das Modul tatsächlich korrekt geladen ist mit:

apache2ctl -t -D DUMP_MODULES

5
2017-12-08 10:40



es sieht nicht so aus, als wäre es richtig geladen - AutomatedTester


Ich habe festgestellt, dass dies ein bekannter Bug mit dem mod_wsgi apt-get-Paket ist, das über ein Jahr alt ist! Details unter http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html. Das apt-get-Paket enthielt nicht die wsgi.load-Datei, daher mussten die Schritte im obigen Link ausgeführt werden.

Danke an alle die geholfen haben!


5
2017-12-15 20:09





Soweit ich sehen kann, hast du das Modul mod_wsgi nicht in dein geladen httpd.conf.

Ich würde zuerst versuchen, die WSGI-Dateien zum mods-enabled Verzeichnis von Apache.

sudo ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled

Dann starte Apache und es neu sollte Arbeit.


4
2017-12-08 20:57





Bestätigen Sie zuerst, dass das WSGI-Modul ist tatsächlich Eingerichtet:

dpkg -l libapache2-mod-wsgi

Dies sollte Ihnen Ausgabe einschließlich Name, Version usw. geben. Suchen Sie nach den Buchstaben auf der linken Seite des Namens, dies zeigt den aktuellen Status des Pakets an. Um manuell nachzusehen, schau rein / etc / apache2 / mods-verfügbar / und du solltest beides sehen wsgi.conf und wsgi.load. Wenn diese existieren, sollten sie entsprechende symbolische Links haben / etc / apache2 / mods-aktiviert /.

Sollte entweder eingestellt werden nicht existiere, fang an, das zuerst zu reparieren - du kannst Python-Code nicht über Apache interpretieren, wenn Apache den Interpreter nicht finden kann. Auch dein test.py Skript wird nicht funktionieren, wenn der AddHandler Anweisungen, die Sie konfiguriert haben - diese Anweisung sagt Apache, Dateien eines bestimmten zu übergeben Erweiterung an den zuständigen Handler. Mach dein Skript test.wsgi oder ändern Sie die AddHandler Richtlinie.


2
2017-12-06 20:19



Das Test.py war ein Tippfehler in der Frage. Ich wollte test.wsgi setzen. - AutomatedTester
Gut, aber haben Sie bestätigt, dass das Modul gemäß den obigen Anweisungen installiert und korrekt verbunden ist? - Zayne S Halsall
Ich habe die Informationen, um die Sie gebeten haben, in die Frage eingefügt. - AutomatedTester
Nicht alle Informationen - überprüfen Sie bitte manuell, ob die Dateien wsgi.conf und wsgi.load im / etc / apache2 / mods-verfügbar / sind symbolisch verknüpft / etc / apache2 / mods-aktiviert wie gewünscht. Eine einfache lange Liste des Verzeichnisses sollte ausreichen (d. H. ls -alh / etc / apache2 / mods-aktiviert /). - Zayne S Halsall


Hast du die LoadModule-Zeile hinzugefügt, um mod_wsgi tatsächlich zu laden? Was ist die eigentliche Fehlermeldung und wo kommt sie her? Sehen:

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

für Low-Level-Anweisungen. Da Sie Binärpakete verwenden, können Sie die Kompilierung überspringen, aber Sie müssen immer noch mod_wsgi laden. Wo / wie Sie dies tun können, wird zu einem gewissen Grad durch Ihre Linux-Distribution bestimmt. Basierend auf diesem Leitfaden sollen Sie ausgeführt haben:

sudo a2enmod mod-wsgi
sudo /etc/init.d/apache2 restart

Hast du das wirklich gemacht?


BEARBEITEN

Lesen Sie Ihre Frage erneut, es ist offensichtlich. Sie haben gesagt, dass Dateien mit der Endung .wsgi von mod_wsgi bearbeitet werden, aber Sie haben der Datei die Erweiterung .py gegeben. Verwenden Sie stattdessen .wsgi.


1
2017-12-06 20:20



Das Test.py war ein Tippfehler in der Frage. Ich wollte test.wsgi setzen. Ich habe das a2enmod ausgeführt, aber es sagte, dass es mod_wsgi nicht finden konnte, wie ich am Ende meiner Frage gestellt habe - AutomatedTester


Sie können zuerst die Syntax Ihres Pythons betrachten. Überprüfen Sie, ob nach der Funktionsdefinition wirklich 4 Leerzeichen vorhanden sind. Überprüfen Sie die Python-Datei, indem Sie sie zuerst über Terminal ausführen

$ python /var/www/py/wsgi_handler.wsgi

Wenn keine Fehler auftreten, führen Sie es über den Webbrowser aus.

http: // localhost / wsgi /

und nebenbei, Sie scheinen etwas für Ihre Apache-Konfiguration / Virtualhost-Datei verpasst haben. Setzen Sie dies in die Tags

WSGIScriptAlias /wsgi /var/www/py/wsgi_handler.py

übrigens, apt hat keine probleme bei der installation des wsgi-moduls. Ich habe es gerade getestet und habe erfolgreich ein Python-Skript in meinem Webbrowser ausgeführt.


1
2017-08-05 02:11





Nicht sicher, ob dies relevant ist, aber nach dem Ausführen:

apt-get install libapache2-mod-wsgi

... die folgenden Dateien haben nicht existieren:

/etc/apache2/mods-available/wsgi.conf
/etc/apache2/mods-available/wsgi.load

Neuinstallation schien die fehlenden Dateien nicht zu ersetzen. Seltsam! Jedoch, purge schien den Trick zu tun:

apt-get install libapache2-mod-wsgi
apt-get purge libapache2-mod-wsgi
apt-get install libapache2-mod-wsgi

# ls /etc/apache2/mods-available/ | grep wsgi
wsgi.conf
wsgi.load

0
2018-06-29 21:51