Próbuję skonfigurować MOD_WSGI na moim polu Ubuntu. Znalazłem kroki, które powiedziałem, że muszę wykonać następujące kroki, które znalazłem na http://ubuntuforums.org/showthread.php?t=833766
- sudo apt-get install libapache2-mod-wsgi
- sudo a2enmod mod-wsgi
- sudo /etc/init.d/apache2 restart
- sudo gedit / etc / apache2 / sites-available / default i zaktualizuj katalog
<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>
- sudo /etc/init.d/apache2 restart
Utworzono test.wsgi z
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]
Krok 2 kończy się niepowodzeniem, ponieważ mówi, że nie może znaleźć mod-wsgi, nawet jeśli apt-get go znalazł. Jeśli wykonam kolejne kroki, aplikacja python pokazuje się jako zwykły tekst w przeglądarce.
Jakieś pomysły, co zrobiłem źle?
EDYCJA: Wyniki dla zadanych pytań
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 <[email protected]>
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 <[email protected]>
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!
DALSZA EDYCJA DLA 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:~$
ubuntu
apache-2.2
python
mod-wsgi
AutomatedTester
źródło
źródło
Odpowiedzi:
Przekonałem się, że jest to znany błąd związany z pakietem mod_wsgi apt-get, który ma ponad rok! Szczegóły na stronie http://www.mail-archive.com/[email protected]/msg1147225.html . Pakiet apt-get nie miał pliku wsgi.load, więc trzeba go było utworzyć, wykonując kroki podane w powyższym odsyłaczu.
Dziękujemy wszystkim, którzy pomogli!
źródło
Sprawdź, czy moduł jest poprawnie załadowany:
źródło
O ile widzę, nie załadowałeś modułu mod_wsgi do swojego
httpd.conf
.Najpierw spróbuję dodać pliki wsgi do
mods-enabled
katalogu Apache.Następnie uruchom ponownie Apache i powinno działać.
źródło
Najpierw potwierdź, że moduł WSGI jest rzeczywiście zainstalowany:
To powinno dać ci dane wyjściowe, w tym nazwę, wersję itp. - poszukaj liter po lewej stronie nazwy, co oznacza bieżący status paczki. Aby to sprawdzić ręcznie, zajrzyj do / etc / apache2 / mods-available / i powinieneś zobaczyć zarówno wsgi.conf, jak i wsgi.load . Jeśli takie istnieją, powinny mieć odpowiednie dowiązania symboliczne w / etc / apache2 / mods-enabled / .
Jeśli któryś z tych zestawów nie istnieje, zacznij od poprawienia tego w pierwszej kolejności - nie możesz interpretować kodu Pythona przez apache, jeśli apache nie może znaleźć interpretera. Ponadto skrypt test.py nie będzie działał, biorąc pod uwagę skonfigurowane dyrektywy AddHandler - ta dyrektywa nakazuje apache przekazać pliki o określonym rozszerzeniu do odpowiedniego modułu obsługi. Utwórz skrypt test.wsgi lub zmień dyrektywę AddHandler .
źródło
Czy dodałeś wiersz LoadModule, aby faktycznie załadować mod_wsgi? Jaki jest rzeczywisty komunikat o błędzie i skąd pochodzi? Widzieć:
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide
dla instrukcji niskiego poziomu. Ponieważ używasz pakietów binarnych, możesz pominąć kompilację, ale nadal musisz spowodować załadowanie mod_wsgi. Gdzie / jak możesz to zrobić, do pewnego stopnia zależy twoja dystrybucja Linuksa. Na podstawie tego przewodnika, który masz uruchomić:
Zrobiłeś to?
EDYTOWAĆ
Ponowne czytanie pytania jest oczywiste. Powiedziałeś, że pliki z rozszerzeniem .wsgi są obsługiwane przez mod_wsgi, ale potem nadałeś temu plikowi rozszerzenie .py. Zamiast tego użyj .wsgi.
źródło
Najpierw możesz spojrzeć na składnię swojego pytona. Sprawdź, czy naprawdę masz 4 spacje po definicji funkcji. Sprawdź plik python, uruchamiając go najpierw za pomocą terminala
następnie jeśli nie pojawią się żadne błędy, uruchom go za pomocą przeglądarki internetowej.
http: // localhost / wsgi /
a tak na marginesie, wydaje się, że coś przeoczyłeś w pliku konfiguracji apache / virtualhost. Umieść to w tagach
przy okazji, apt nie ma problemów z instalacją modułu wsgi. Właśnie go przetestowałem i pomyślnie uruchomiłem skrypt Pythona w mojej przeglądarce internetowej.
źródło
Nie jestem pewien, czy jest to istotne, ale po uruchomieniu:
... następujące pliki nie istniały:
Ponowna instalacja nie zastępuje brakujących plików. Dziwne!
purge
Wydawało się jednak, że należy to zrobić:źródło