我有一个 Debian 7.1 amd64 服务器,安装了 apache httpd 2.2.22 和 Python 2.7.3,以提供一个 django 应用程序,我使用 mod_wsgi 和默认 django 连接到 apachewsgi.py
脚本连接到 apache。Django 是最新的 1.5.4 版本,所有 python 包依赖项都在由pip
debian 提供的 virtualenv 中管理。
我已经chown -R www-data:www-data
在整个 django app 和 python virtualenv 目录上运行以使其工作。此虚拟主机的 Apache 配置非常少,并遵循官方 django 指南https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/上的官方 django 指南。
我已经设法让它工作,除了一些客户端得到 apache(不是 django)403 Forbidden 错误页面。此虚拟主机的 apache 错误日志文件包含如下行:
[client x.x.x.x] client denied by server configuration: /path/to/django/proj/app/wsgi.py
它对其他客户非常有效。可能出了什么问题?
编辑:这里是 apache 配置:
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
ServerAdmin myname@mydomain.com
ErrorLog ${APACHE_LOG_DIR}/error_django.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_django.log combined
Options -Indexes +FollowSymLinks +MultiViews
Alias /robots.txt /path/to/django/proj/static/robots.txt
Alias /favicon.ico /path/to/django/proj/static/img/favicon.ico
Alias /media/ /path/to/django/proj/media/
Alias /static/ /path/to/django/proj/static/
<Directory /path/to/django/proj/media>
Order allow,deny
Allow from all
</Directory>
<Directory /path/to/django/proj/static>
Order allow,deny
Allow from all
</Directory>
<Directory /path/to/django/proj/app>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mydomain.com
RewriteRule (.*) http://mydomain.com$1 [R=301,L]
</IfModule>
<IfModule mod_wsgi.c>
WSGIDaemonProcess mydomain.com processes=10 threads=15 display-name=%{GROUP} python-path=/path/to/django/proj:/path/to/virtualenv/lib/python2.7/site-packages
WSGIProcessGroup mydomain.com
WSGIPassAuthorization On
WSGIScriptAlias / /path/to/django/proj/app/wsgi.py
</IfModule>
</VirtualHost>