apache2 und mod-wsgi : Ziel WSGI-Skript nicht geladen werden kann als Python-Modul
Ich versuche zu installieren mod_wsgi auf apache2 auf ubuntu.
So ich install libapache2-mod-wsgi-Paket, aktiviere ich ihn mit a2enmod.
Bekam ich eine web-site (languageAnalyz), dass ich bin versucht, mit mod_wsgi.
Wenn ich localhost/languageAnalyz, bekam ich einen Fehler 500.
Im apache2-log kann ich sehen :
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] mod_wsgi (pid=4993): Target WSGI script '/var/www/languageAnalyz/test-wsgi.py' cannot be loaded as Python module.
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] mod_wsgi (pid=4993): SystemExit exception raised by WSGI script '/var/www/languageAnalyz/test-wsgi.py' ignored.
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] File "/var/www/languageAnalyz/test-wsgi.py", line 10, in <module>
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] WSGIServer(app).run()
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi.py", line 112, in run
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] sock = self._setupSocket()
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 997, in _setupSocket
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] req.run()
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 572, in run
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] self._end(appStatus, protocolStatus)
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 601, in _end
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] sys.exit(appStatus)
[Sun Aug 25 11:28:21 2013] [error] [client 127.0.0.1] SystemExit: 0
Habe ich gegoogelt dieser Fehler, und ich finde viele Lösungen (die meisten der Zeit für Django-Projekt).
Was ich undsertand, ist, dass ich die Notwendigkeit der Schaffung eines __init__.py
- Datei.
Was ich getan habe, hier ist mein __init__.py
Datei :
__all__ = ['app','get_size_dir','get_nbrf_dir','getStats'] #name of my functions
import index # my three python files
import analyz
import test-wsgi
In der __all__
Liste, dies ist der name der Funktionen, die in den drei Dateien.
Ich bin gerade versucht zu starten test-wsgi.py und bekomme den gleichen Fehler 500.
Hier ist meine test-wsgi.py Datei :
import os,sys
sys.path.append(os.path.dirname(__file__))
from cgi import escape,parse_qs
from flup.server.fcgi import WSGIServer
def app(environ, start_response):
start_response('200 OK',[('Content-Type','text/plain; charset=utf-8')])
yield "hello world!"
WSGIServer(app).run()
Also, was ist falsch ?
Danke,
Bearbeiten :
hier ist mein apache2 conf :
WSGIPythonPath /var/www/languageAnalyz
<VirtualHost *:80>
...
<Directory /var/www/languageAnalyz/>
Options +Indexes ExecCGI FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index.py
SetHandler wsgi-script
</Directory>
...
</VirtualHost>
Edit_bis :
Also versuche ich zu tun, wie ich gelesen habe auf django doc.
Ich mein apache2 conf :
WSGIPythonPath /var/www/languageAnalyz
<VirtualHost *:80>
...
WSGIScriptAlias /IPA /var/www/languageAnalyz/testwsgi.py
<Directory /var/www/languageAnalyz/>
Options +Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex testwsgi.py
</Directory>
...
</VirtualHost>
Ich starten Sie apache2 neu und ich habe den gleichen Fehler, und eine weitere vor :
[Sun Aug 25 12:47:18 2013] [notice] caught SIGTERM, shutting down
[Sun Aug 25 12:47:19 2013] [notice] FastCGI: wrapper mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Sun Aug 25 12:47:19 2013] [notice] FastCGI: process manager initialized (pid 7879)
[Sun Aug 25 12:47:19 2013] [notice] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
[Sun Aug 25 12:47:19 2013] [notice] mod_python: using mutex_directory /tmp
[Sun Aug 25 12:47:19 2013] [warn] mod_wsgi: Compiled for Python/2.7.3.
[Sun Aug 25 12:47:19 2013] [warn] mod_wsgi: Runtime using Python/2.7.4.
[Sun Aug 25 12:47:19 2013] [notice] Apache/2.2.22 (Ubuntu) mod_fastcgi/mod_fastcgi-SNAP-0910052141 PHP/5.4.9-4ubuntu2.2 mod_python/3.3.1 Python/2.7.4 mod_ruby/1.2.6 Ruby/1.8.7(2012-02-08) mod_wsgi/3.4 configured$
[Sun Aug 25 12:47:19 2013] [error] WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
[Sun Aug 25 12:47:19 2013] [error] WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
[Sun Aug 25 12:47:19 2013] [error] WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
[Sun Aug 25 12:47:19 2013] [error] WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
[Sun Aug 25 12:47:19 2013] [error] Status: 200 OK\r
[Sun Aug 25 12:47:19 2013] [error] Content-Type: text/plain; charset=utf-8\r
[Sun Aug 25 12:47:19 2013] [error] \r
[Sun Aug 25 12:47:19 2013] [error] hello world!
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] mod_wsgi (pid=7884): Target WSGI script '/var/www/languageAnalyz/testwsgi.py' cannot be loaded as Python module.
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] mod_wsgi (pid=7884): SystemExit exception raised by WSGI script '/var/www/languageAnalyz/testwsgi.py' ignored.
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] File "/var/www/languageAnalyz/testwsgi.py", line 10, in <module>
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] WSGIServer(app).run()
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi.py", line 112, in run
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] sock = self._setupSocket()
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 997, in _setupSocket
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] req.run()
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 572, in run
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] self._end(appStatus, protocolStatus)
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 601, in _end
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] sys.exit(appStatus)
[Sun Aug 25 12:47:19 2013] [error] [client 127.0.0.1] SystemExit: 0
Edit_ter :
Ok, ich habe gerade erfolgreich starten testwsgi.py. Ich mein app-Funktion in der Anwendung, und ich fügen Sie einige Zeilen am Ende :
if __name__ == '__main__':
from wsgiref.simple_server import make_server
server = make_server('localhost', 8080, application)
server.serve_forever()
Ich Falle weiß nicht, warum es funktioniert, warum es nicht vor der Arbeit. ... Und nun habe ich ein problem Dateien zu öffnen, deren Pfad (config-Dateien, Vorlagen oder Dateien ...)
[Sun Aug 25 13:10:51 2013] [error] [client 127.0.0.1] File "/var/www/languageAnalyz/analyz.py", line 22, in getStats
[Sun Aug 25 13:10:51 2013] [error] [client 127.0.0.1] flangs=open('config/languages.yml')
Ich versuche mit absoluten Pfad, es hat nicht zu arbeiten ...
InformationsquelleAutor vekah | 2013-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie zu verfolgen scheinen, die falsche Dokumentation für den Anfang. Für mod_wsgi verwenden:
Sie zu sein scheinen, mithilfe der Dokumentation für die FASTCGI-Implementierung.
Können Sie auch tun:
Ein Python-Modul namens kann nicht haben ' -'.
Zusammenfassend, gehen, Lesen (oder Lesen) der Django-Dokumentation über den Einsatz.
Ok, ich habe gerade erfolgreich starten testwsgi.py. Ich mein app-Funktion in der Anwendung, und ich fügen Sie einige Zeilen am Ende :
if __name__ == '__main__': from wsgiref.simple_server import make_server server = make_server('localhost', 8080, application) server.serve_forever()
ich Falle weiß nicht, warum es funktioniert, warum es nicht vor der Arbeit. ... Und nun habe ich ein problem Dateien zu öffnen, deren Pfad (config-Dateien, Vorlagen oder Dateien ...)Sie cant verwenden Sie relative Pfadnamen verwenden, müssen Sie den absoluten Pfadnamen. Das aktuelle Arbeitsverzeichnis wird nicht sein, wo Sie erwarten, es zu sein. Siehe code.google.com/p/modwsgi/wiki/...
Wenn Sie mit absoluten Pfadnamen, kann es ein Problem mit Berechtigungen. Siehe code.google.com/p/modwsgi/wiki/...
InformationsquelleAutor Graham Dumpleton
Für mich war das problem wsgi python version mismatch. Ich war mit python 3, also:
InformationsquelleAutor nima
Ich hatte das gleiche problem bei einer einzelnen Datei und die Datei world ausführbaren es fest für mich. Sie würden natürlich wollen, sperren Sie es nach unten, um den gewünschten Benutzer aus, nachdem Sie eingegrenzt haben dies als Problem:
InformationsquelleAutor Gerry