在为django 1.4配置mod_wsgi时,在将WSGIPythonPath添加到虚拟主机配置后,apache无法在mac osx上启动

Jam*_*nga 9 django mod-wsgi

我跟着django文档讨论了如何在mac osx lion上使用mod_wsgi https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/将django 1.4部署到apache ,当我添加WSGIPythonPath指令apache cant时重新启动.如果没有它,我的应用程序在路径中是不存在的.在日志中我收到一个错误

WSGIPythonPath不能在VirtualHost部分中出现

这是我的虚拟主机配置的样子

<VirtualHost *:80>
ServerAdmin jmured@gmail.com
DocumentRoot "/Users/jamo/code/work/projects/bfpd/fapp"
ServerName bfpd.dev
ServerAlias bfpd.dev
ErrorLog "/private/var/log/apache2/bfpd.dev-error_log"
CustomLog "/private/var/log/apache2/bfpd.dev-access_log" common
Alias /static/ /Users/jamo/code/work/projects/bfpd/fapp/fapp/static/
<Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp/static>
  Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / /Users/jamo/code/work/projects/bfpd/fapp/fapp/wsgi.py
WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/  
    <Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp>
    Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>

   </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ???

Jam*_*nga 10

我修好了它. WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/ 应该在http.conf

  • 但是,如果我在同一台服务器上安装了多个Django应用程序(每个应用程序在不同的URL中的不同VirtualHost中定义),我该怎么办? (27认同)
  • @MartinTrigaux,文档说:`如果指定了多个目录,如果使用类似UNIX的系统,则它们应该用':'分隔,或';' 如果使用Windows.如果目录路径的任何部分包含空格字符,则必须引用WSGIPythonPath的完整参数字符串 (2认同)

owe*_*nfi 6

如nemesisfixx的评论中所述,并由原始问题中的错误指定:

WSGIPythonPath不能在VirtualHost部分中出现

在VirtualHost之外移动WSGIPythonPath解决了Apache在OS X服务器上崩溃的问题.

$ cat sites/0000_any_80_mysite.com.conf
WSGIPythonPath /Library/Server/Web/Data/Sites/mysite/django-app:/Users/owen/.virtualenvs/mysite:/Users/owen/.virtualenvs/mysite/lib/python2.7/site-packages

<VirtualHost *:80>
    ServerName mysite.com
    ServerAdmin admin@example.com
    DocumentRoot "/Library/Server/Web/Data/Sites/mysite/site"
    ...
    WSGIScriptAlias /api /Library/Server/Web/Data/Sites/mysite/django-app/mysite/wsgi.wsgi
    ...
<VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我花了很多时间才能让路径正确(包括site-env的完整路径,我最初认为在添加virtualenv顶级后会自动包含它).