我正在尝试在我的 Ubuntu 机器上设置 MOD_WSGI。我发现步骤说我需要执行以下步骤,我在http://ubuntuforums.org/showthread.php?t=833766
- sudo apt-get 安装 libapache2-mod-wsgi
- sudo a2enmod mod-wsgi
- sudo /etc/init.d/apache2 重新启动
- sudo gedit /etc/apache2/sites-available/default 并更新目录
<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 重新启动
使用以下代码创建 test.wsgi
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]
第 2 步失败,因为它说找不到 mod-wsgi,尽管 apt-get 找到了它。如果我继续执行这些步骤,python 应用程序只会在浏览器中显示为纯文本。
知道我做错了什么吗?
编辑:提出问题的结果
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!
进一步编辑 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:~$
答案1
我发现这是 mod_wsgi apt-get 软件包的一个已知错误,已有一年多了!详情请见http://www.mail-archive.com/[电子邮件保护]/msg1147225.html。apt-get 包中没有 wsgi.load 文件,因此需要按照上面链接中的步骤来创建。
感谢所有提供帮助的人!
答案2
使用以下命令查看模块是否正确加载:
apache2ctl -t -D DUMP_MODULES
答案3
据我所知,您尚未将 mod_wsgi 模块加载到您的 中httpd.conf
。
我首先尝试将 wsgi 文件添加到mods-enabled
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
然后重新启动 Apache应该工作。
答案4
您是否添加了 LoadModule 行以真正导致 mod_wsgi 被加载?实际错误消息是什么?它来自哪里?请参阅:
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide
低级指令。由于您使用的是二进制包,因此您可以跳过编译,但您仍然需要加载 mod_wsgi。您可以在哪里/如何执行此操作将在一定程度上由您的 Linux 发行版决定。根据该指南,您应该运行:
sudo a2enmod mod-wsgi
sudo /etc/init.d/apache2 restart
你真这么做了吗?
编辑
再次阅读你的问题,很明显。你说带有 .wsgi 扩展名的文件由 mod_wsgi 处理,但你给文件添加了 .py 扩展名。改用 .wsgi。