【发布时间】:2014-03-06 19:35:34
【问题描述】:
我无法让 apache 通过 virtualenv(和 virtualenvwrapper)为我的网站提供服务。我尝试按照演练here。值得注意的是,我使用的是 Ubuntu Server v13.10,我读过它还没有对 Apache v2.2 的原生支持,因此在演练中我无法安装 apache2.2-common。但是,我认为这不是问题,因为 apache 错误日志说存在权限问题。
在我的设置中,虚拟环境位于非 root 用户的主目录中,而 apache 服务器以 root 身份运行(我认为这是正常的)。我尝试使用namei 跟踪权限,并确保chmod +rw 作为root 的路径。有任何想法吗?
[Thu Mar 06 14:16:37.639031 2014] [mpm_event:notice] [pid 8771:tid 140338386122624] AH00489: Apache/2.4.6 (Ubuntu) mod_wsgi/3.4 Python/2.7.5+ configured -- resuming normal operations
[Thu Mar 06 14:16:37.639144 2014] [core:notice] [pid 8771:tid 140338386122624] AH00094: Command line: '/usr/sbin/apache2'
[Thu Mar 06 14:16:53.456622 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] mod_wsgi (pid=8775): Target WSGI script '/var/www/www.mysite.org/index.wsgi' cannot be loaded as Python module.
[Thu Mar 06 14:16:53.456735 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] mod_wsgi (pid=8775): Exception occurred processing WSGI script '/var/www/www.mysite.org/index.wsgi'.
[Thu Mar 06 14:16:53.456782 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] Traceback (most recent call last):
[Thu Mar 06 14:16:53.456830 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] File "/var/www/www.mysite.org/index.wsgi", line 16, in <module>
[Thu Mar 06 14:16:53.456918 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] execfile(activate_env, dict(__file__=activate_env))
[Thu Mar 06 14:16:53.456971 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] IOError: [Errno 13] Permission denied: '/home/nrUser/Envs/mysite/bin/activate_this.py'
(mysite)root:~# namei -m /home/nrUser/Envs/mysite/bin/activate_this.py
f: /home/nrUser/Envs/mysite/bin/activate_this.py
drwxr-xr-x /
drwxr-xr-x home
drw-r--r-- nrUser
drwxrwxr-x Envs
drwxrwxr-x mysite
drwxrwxr-x bin
-rwxrwxr-x activate_this.py
【问题讨论】:
-
@ÖzgürEroğlu:我不同意。只要 apache 用户能够读取并可能执行文件,所有者就不应该成为问题。然而,为了能够访问一个文件,你需要它上面所有目录的 x 位。 /home/nrUser 中似乎缺少 x 位。
-
@GuntramBlohm 是对的。我删除了我的错误评论。谢谢。
-
@GuntramBlohm:你已经提供了正确的答案,如果你想正式回答这个问题,你可以获得一些分数。我认为在另一个教程中它让我将权限设置为 644。我相信这删除了执行位。我不认为该目录需要执行位,但它确实是为了读取目录内容。当我注销并且无法加载我的任何个人资料设置时,这一点得到了证实!但现在已经解决了。
标签: django apache virtualenv