J'essaie de configurer mod_wsgi sur ma boîte Ubuntu. J'ai trouvé des étapes qui disaient que je devais procéder à des étapes suivantes que j'ai trouvées à http://ubuntuforums.org/showthread.php?t=833766
<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>
Créé test.wsgi avec
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]
L'étape 2 échoue car il est indiqué qu'il ne peut pas trouver mod-wsgi même si l'apt-get le trouva. Si je continue avec les étapes, le python App montre simplement en tant que texte brut dans un navigateur.
Des idées ce que j'ai mal fait?
EDIT: Résultats pour les questions posées
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!
Autre édition pour 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:~$
J'ai constaté que ceci est un bug connu avec mod_wsgi apt-obtenir un package de plus d'un an! Détails à http://www.mail-archive.com/[email protected]/msg1147225.html . Le package APT-GET n'avait pas le fichier WSGI.load, de sorte que cela devait être créé en effectuant les étapes du lien ci-dessus.
Merci à tout le monde qui a aidé!
Autant que je sache, vous n'avez pas chargé le module mod_wsgi dans votre httpd.conf
.
J'essaierais d'abord ajouter les fichiers WSGI au mods-enabled
répertoire d'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
Puis redémarrez Apache et c'est devrait travail.
Confirmez d'abord que le module WSGI est en réalité installé:
dpkg -l libapache2-mod-wsgi
Cela devrait vous donner une sortie, y compris le nom, la version, etc. - recherchez les lettres à gauche du nom, cela indique l'état actuel de l'emballage. Pour vérifier manuellement, regardez-le /etc/apache2/mods-disponible/ et vous devriez voir les deux wsgi.conf et wsgi.load . Si celles-ci existent, ils doivent avoir des liens symboliques correspondants dans /etc/Apache2/Mods-compatibles/.
Devrait soit définir non existez, commencez par la correction qui ne peut pas d'abord interpréter python code via Apache si Apache ne trouve pas l'interprète. Aussi, votre test.py Le script ne fonctionnera pas compte tenu du addhandler Directives que vous avez configurées - Cette directive indique à Apache de passer des fichiers d'une certaine extension au gestionnaire concerné. Faites votre script Test.wsgi ou changer Le addhandler directive.
Avez-vous ajouté la ligne LoadModule pour faire charger Mod_WSGI? Quel est le message d'erreur réel et d'où vient-il? Voir:
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide
pour les instructions de faible niveau. Puisque vous utilisez des packages binaires, vous pouvez ignorer la compilation, mais vous devez toujours faire charger MOD_WSGI. Où/comment vous pouvez faire cela va être déterminé à un degré de votre distribution Linux. Sur la base de ce guide, vous êtes censé avoir couru:
Sudo a2enmod mod-wsgi
Sudo /etc/init.d/Apache2 restart
Avez-vous fait cela?
ÉDITER
Lire votre question à nouveau c'est évident. Vous avez dit que les fichiers avec l'extension .WSGI sont traités par MOD_WSGI, mais vous avez ensuite donné au fichier une extension .PY. Utiliser .wsgi à la place.
Vous pouvez regarder la syntaxe de votre python d'abord. Vérifiez si vous avez vraiment 4 espaces après la définition de la fonction. Vérifiez le python fichier en l'exécutant d'abord via Terminal
$ python /var/www/py/wsgi_handler.wsgi
ensuite, si aucune erreur n'apparaît, exécutez-la via un navigateur Web.
et au fait, vous semblez avoir manqué quelque chose pour votre fichier de configuration/virtualHost Apache. Mettre cela à l'intérieur des tags
WSGIScriptAlias /wsgi /var/www/py/wsgi_handler.py
au fait, APT n'a aucun problème lors de l'installation du module WSGI. Je l'ai testé juste maintenant et avez-vous exécuté avec succès A python script sur mon navigateur Web.
Je ne sais pas si cela est pertinent, mais après avoir exécuté:
apt-get install libapache2-mod-wsgi
... Les fichiers suivants ont fait non existent:
/etc/Apache2/mods-available/wsgi.conf
/etc/Apache2/mods-available/wsgi.load
La réinstallation ne semblait pas remplacer les fichiers manquants. Bizarre! Cependant, purge
semblait faire à l'astuce:
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