如何在 Ubuntu 上为 Python 设置 Mod_WSGI

Aut*_*ter 25 ubuntu python mod-wsgi apache-2.2

我正在尝试在我的 Ubuntu 机器上设置 MOD_WSGI。我找到了说我需要执行以下步骤的步骤,我在http://ubuntuforums.org/showthread.php?t=833766

  1. 须藤 apt-get 安装 libapache2-mod-wsgi
  2. 须藤 a2enmod mod-wsgi
  3. 须藤 /etc/init.d/apache2 重启
  4. 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>
Run Code Online (Sandbox Code Playgroud)
  1. 须藤 /etc/init.d/apache2 重启
  2. 创建了 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]
    
    Run Code Online (Sandbox Code Playgroud)

第 2 步失败,因为它说即使 apt-get 找到它也找不到 mod-wsgi。如果我继续执行这些步骤,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 <ubuntu-motu@lists.ubuntu.com>
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 <python-modules-team@lists.alioth.debian.org>
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!
Run Code Online (Sandbox Code Playgroud)

进一步编辑 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:~$ 
Run Code Online (Sandbox Code Playgroud)

Aut*_*ter 6

我发现这是一个存在超过一年的 mod_wsgi apt-get 软件包的已知错误!详情见http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html。apt-get 包没有 wsgi.load 文件,因此需要通过执行上面链接中的步骤来创建。

感谢所有帮助过的人!


rmy*_*tes 5

查看模块是否实际正确加载:

apache2ctl -t -D DUMP_MODULES
Run Code Online (Sandbox Code Playgroud)