我是一个菜鸟但我使用python manage.py runserver
使我的应用程序工作得非常漂亮但是当我把它带到Apache + mod_wsgi时,我不断收到此错误。调试消息没有多大帮助。以下是整个调试映像的屏幕截图:http://img694.imageshack.us/img694/6723/screenshotfb.png
这是我的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”,并且工作正常。这不是。
提前致谢!关于我应该做什么的任何建议?
答案 0 :(得分:4)
在Apache / mod_wsgi下,您的代码将以Apache用户身份运行,并且通常不具有写入您作为用户的目录的访问权限。读:
http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Access_Rights_Of_Apache_User
最简单的方法就是让守护程序进程以与手动运行代码相同的用户运行。为此,请使用WSGIDaemonProcess的“用户/组”选项。读:
http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
另一个问题可能是您在代码中使用了相对路径名。这在Apache下不起作用,因为当前的工作目录可以是任何东西。你应该总是使用绝对路径名,或者至少相对于__file__的os.path.dirname()来计算它们正在完成的代码文件。
如果您真的不想处理它,可以使用WSGIDaemonProcess的'home'选项将守护进程的当前工作目录设置为您手动运行服务器的同一目录。请参阅上面引用的WSGIDaemonProcess的相同文档。
答案 1 :(得分:0)
当你使用'python manage.py runserver'时,你以root身份登录,这就是为什么允许它写入该导向器但是当apache启动你的wsgi脚本时,它将在其用户名下面,不允许写入你有python脚本的目录。
假设您使用的是ubuntu服务器,我遇到了同样的问题。我用
修复了它chown www-data:www-data -R media
我将所有py脚本保存在/ var / pyproj /中。媒体文件夹位于/ var / pyproj // pysrc(我的pinax安装导演)/ site_media /
我将wsgi脚本,nginx conf和vhost.conf保存在/ var / pyproj // server中。
祝你好运django用户。我希望这会有所帮助。