Estou tentando configurar o MOD_WSGI na minha caixa do Ubuntu. Encontrei etapas que diziam que precisava executar as seguintes etapas encontradas em 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 e atualize o diretório
<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
Criado test.wsgi com
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]
O passo 2 falha porque diz que não é possível encontrar o mod-wsgi mesmo que o apt-get o tenha encontrado. Se eu continuar com as etapas, o aplicativo python será exibido como texto sem formatação em um navegador.
Alguma idéia do que eu fiz de errado?
EDIT: Resultados para as perguntas feitas
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!
EDIÇÃO ADICIONAL PARA 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
fonte
fonte
Respostas:
Eu descobri que este é um bug conhecido do pacote apt-get mod_wsgi com mais de um ano de idade! Detalhes em http://www.mail-archive.com/[email protected]/msg1147225.html . O pacote apt-get não tinha o arquivo wsgi.load, portanto, ele precisava ser criado seguindo as etapas no link acima.
Obrigado a todos que ajudaram!
fonte
Veja se o módulo está realmente carregado corretamente com:
fonte
Até onde eu sei, você não carregou o módulo mod_wsgi no seu
httpd.conf
.Eu tentaria primeiro adicionar os arquivos wsgi ao
mods-enabled
diretório do Apache.Em seguida, reinicie o Apache e ele deve funcionar.
fonte
Primeiro confirme se o módulo WSGI está realmente instalado:
Isso deve fornecer uma saída, incluindo nome, versão etc. - procure as letras à esquerda do nome, isso indica o status atual do pacote. Para verificar manualmente, consulte / etc / apache2 / mods-available / e você verá wsgi.conf e wsgi.load . Se existirem, eles devem ter links simbólicos correspondentes em / etc / apache2 / mods-enabled / .
Caso um dos conjuntos não exista, comece corrigindo isso primeiro - você não pode interpretar o código python via apache se o apache não conseguir encontrar o intérprete. Além disso, seu script test.py não funcionará, considerando as diretivas AddHandler que você configurou - essa diretiva diz ao apache para passar arquivos de uma certa extensão para o manipulador relevante. Faça seu script test.wsgi ou altere a diretiva AddHandler .
fonte
Você adicionou a linha LoadModule para realmente fazer com que o mod_wsgi seja carregado? Qual é a mensagem de erro real e de onde ela vem? Vejo:
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide
para instruções de baixo nível. Como você está usando pacotes binários, você pode pular a compilação, mas ainda precisa fazer com que o mod_wsgi seja carregado. Onde / como você pode fazer isso será determinado até certo ponto pela sua distribuição Linux. Com base nesse guia, você deve executar:
Você realmente fez isso?
EDITAR
Lendo sua pergunta novamente, é óbvio. Você disse que os arquivos com extensão .wsgi são manipulados por mod_wsgi, mas depois deu uma extensão .py ao arquivo. Use .wsgi em vez disso.
fonte
Você pode observar primeiro a sintaxe do seu python. Verifique se você realmente tem 4 espaços após a definição da função. Verifique o arquivo python executando-o primeiro via terminal
se nenhum erro aparecer, execute-o pelo navegador da web.
http: // localhost / wsgi /
e, a propósito, você parece ter perdido algo no seu arquivo de configuração / virtualhost do apache. Coloque isso dentro das tags
a propósito, o apt não tem problemas ao instalar o módulo wsgi. Eu testei agora e executei com êxito um script python no meu navegador.
fonte
Não tenho certeza se isso é relevante, mas após a execução:
... os seguintes arquivos não existiam:
A reinstalação não pareceu substituir os arquivos ausentes. Esquisito! No entanto,
purge
parecia fazer o truque:fonte