2010-02-17 193 views
0

我是小白,但我做了我的申请工作中使用python manage.py runserver漂亮,但是当我把它到Apache + mod_wsgi的,我不断收到此错误。调试消息没有多大帮助。这里是整个调试图像的截图:http://img694.imageshack.us/img694/6723/screenshotfb.pngPinax(13“权限被拒绝”)

这里是我的http.conf文件的转储。

WWSGIDaemonProcess cloud-tester python-path=/home/ubuntu/.virtualenvs/pinax-env/lib/python2.6/site-packages 
WSGIProcessGroup cloud-tester 

WSGIScriptAlias /cloudrunner /home/ubuntu/projects/cloudfly/deploy/pinax.wsgi 
<Directory /home/ubuntu/projects/cloudfly/deploy> 
    Order deny,allow 
    Allow from all 
</Directory> 

pinax.wsgi的内容是Pinax的内容。我没有改变任何东西。

我创建了一个样本“basic_project”,并且工作正常。这不是。

在此先感谢!有关我应该做什么的建议?

回答

4

下的Apache/mod_wsgi的代码将运行Apache的用户通常不会有访问权限写信给你作为一个用户目录。阅读:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Access_Rights_Of_Apache_User

各地的最简单的方法是运行make运行为相同的用户手动运行该代码的守护进程。为此,使用WSGIDaemonProcess的'user/group'选项。阅读:

http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

的另一个问题可能是你已经在你的代码中使用相对路径。这在Apache下不起作用,因为当前的工作目录可能是任何东西。你应该总是使用绝对路径名,或者至少计算它们相对于__file__的os.path.dirname()来计算它正在执行的代码文件。

如果你真的不想要要处理它,就是使用WSGIDaemonProcess的'home'选项将守护进程的当前工作目录设置为手动运行服务器的同一目录。请参阅上面引用的WSGIDaemonProcess的相同文档。

+0

我尝试了你说的两条建议。没有运气。 这里是我的pinax.wsgi文件:http://www.copypastecode.com/22518/ 这里是我的httpd.conf:http://www.copypastecode.com/22522/ 我的项目位于/家用/ Ubuntu的/项目/ cloudfly。 感谢您的帮助! –

+0

试试'home =/home/ubuntu/projects/cloudfly'。这是运行服务器用作当前工作目录的目录,而不是您的部署子目录。 –

0

当您使用'python manage.py runserver'时,您正在以root身份登录,这就是为什么允许写入该导向器的原因,但是当Apache启动您的wsgi脚本时,它将在其不允许写入的用户名下在目录中你有你的Python脚本中。

假设你正在使用Ubuntu的服务器,我有同样的问题。我固定它使用

CHOWN WWW的数据:WWW的数据-R媒体

我一直在/ var/pyproj /我所有的PY脚本。媒体文件夹将位于/ var/pyproj // pysrc(我的pinax安装目录)/ site_media/

我将我的wsgi脚本,nginx conf和vhost.conf保存在/ var/pyproj //服务器中。

祝您好运同胞的Django的用户。我希望这有帮助。