Ubuntu

如何在 Ubuntu 上為 Python 設置 Mod_WSGI

  • March 20, 2012

我正在嘗試在我的 Ubuntu 機器上設置 MOD_WSGI。我發現步驟說我需要執行我在http://ubuntuforums.org/showthread.php?t=833766找到的以下步驟

  1. sudo apt-get install libapache2-mod-wsgi
  2. sudo 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>
  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]

第 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!

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:~$ 

我發現這是 mod_wsgi apt-get 包的一個已知錯誤,已有一年多的歷史了!http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html上的詳細資訊。apt-get 包沒有 wsgi.load 文件,因此需要通過執行上面連結中的步驟來創建。

感謝所有幫助過的人!

查看模組是否實際載入正確:

apache2ctl -t -D DUMP_MODULES

引用自:https://serverfault.com/questions/91468