基于Flash的文件上传(swfupload)在Apache/mod-wsgi中失败
这个问题已经重新命名和标记,以便其他人更容易找到解决方案。
我正在尝试把一个项目从Django开发服务器迁移到Apache/mod-wsgi环境。如果你昨天问我,我会说这个过程进行得很顺利。我的网站已经上线,可以访问,速度也很快等等。然而,网站的一部分依赖文件上传,在这方面我遇到了一个非常奇怪和令人抓狂的问题。具体来说,有一个页面使用swfupload来上传文件和相关的元数据到一个网址,这个网址会接收文件并启动一些服务器端的处理。在开发服务器上这一切都运行得很好,但每当我在Apache上向这个网址发送请求时,Django的请求对象却是空的——没有GET、POST或FILES数据。
我通过使用Wireshark排除了客户端的问题。根据我的观察,根本原因似乎是某种Apache配置问题,可能与我尝试访问的临时文件目录有关。我对Apache配置还比较陌生,已经为此绞尽脑汁好几个小时了。
我的Apache配置:
<VirtualHost *:80>
ServerAdmin user@sitename.com
ServerName sitename.com
ServerAlias www.sitename.com
LogLevel warn
WSGIDaemonProcess sitename processes=2 maximum-requests=500 threads=1
WSGIProcessGroup sitename
WSGIScriptAlias / /home/user/src/sitename/apache/django.wsgi
Alias /static /home/user/src/sitename/static
Alias /media /usr/share/python-support/python-django/django/contrib/admin/media
</VirtualHost>
我直觉觉得这可能与我在Django的settings.py中指定的文件上传目录的权限有关('/home/sk/src/sitename/uploads/'
),不过我的Apache错误日志并没有显示出任何相关的提示,即使我把日志级别调到调试模式。
有没有建议我该如何调试这个问题?
2 个回答
通常情况下,Apache这个服务器程序是以“www-data”这个用户身份运行的。如果它没有读取或写入的权限,可能会出现问题。不过,从你的设置来看,似乎并不是通过Apache来访问'/home/sk/src/sitename/uploads'这个路径。根据这个配置文件的内容,我理解是,除非请求的是/static或/media这两个路径,否则Apache会把请求交给WGSI处理。所以,检查一下这些权限和日志可能会更有帮助,而不是去看Apache的日志。