我有一段时间的服务器错误,听起来有一个明显的解决方案,但是没有这样做:
[:error] [pid 10979] (13)Permission denied: [remote xxx.xx.xxx.xxx:20] mod_wsgi (pid=10979, process='testsite', application='xxx.xxx.xx.xx|/testsite'): Call to fopen() failed for '/home/jnett/testsite/testsite/wsgi.py'.
出于显而易见的原因,我拿出了实际的服务器地址。我在RedHat,早期的CentOS发行版,OSX,甚至Ubuntu中都设置了很多django站点,并且在所有情况下都记录了很多笔记。不过,我似乎无法正确配置此配置。
所以这是:
1。 我的apache配置是
VirtualHost *:80>
ServerName xxx.xxx.xx.xx
ServerAlias *.xxx.xxx.xx.xx
WSGIDaemonProcess testsite python-path=/home/jnett/testsite:/home/jnett/airview_env/lib/python2.7/site-packages
WSGIScriptAlias /testsite /home/jnett/testsite/testsite/wsgi.py process-group=testsite
Alias /static /home/jnett/testsite/static
<Directory /home/jnett/testsite/testsite>
Require all granted
</Directory>
<Location /home/jnett/testsite/static>
Options -Indexes
</Location>
/VirtualHost>
(我故意写了&#34;&lt; VirtualHost&gt;&#34; as&#34; VirtualHost&gt;&#34;格式化问题。)
2。
我的wsgi.py
文件位于应该根据上述apache配置的位置,并包含:
import os, sys
sys.path.append( '/home/jnett/airview_env/lib/python2.7/site-packages' )
sys.path.append( '' )
from django.core.wsgi import get_wsgi_application
os.environ["DJANGO_SETTINGS_MODULE"] = "testsite.settings"
application = get_wsgi_application()
3。 我的用户目录具有权限755。
4。
我的项目目录testsite
在父目录上有777个权限(就像在这里进行健全性检查一样,这可以解决这个问题),并递归内部的所有内容。
此外,apache也拥有所有权。
~ ]$ls -all
drwxrwxrwx. 4 jnett apache 50 Jan 4 22:23 testsite
~ ]$cd testsite/
~/testsite ]$ls -all
total 8
drwxrwxrwx. 4 jnett apache 50 Jan 4 22:23 .
drwxr-xr-x. 9 jnett jnett 4096 Jan 4 23:56 ..
-rwxrwxrwx. 1 jnett apache 251 Dec 30 16:52 manage.py
drwxrwxrwx. 2 jnett apache 6 Jan 4 22:23 static
drwxrwxrwx. 2 jnett apache 70 Jan 4 23:56 testsite
~/testsite ]$cd testsite/
~/testsite/testsite ]$ls -all
total 12
drwxrwxrwx. 2 jnett apache 70 Jan 4 23:56 .
drwxrwxrwx. 4 jnett apache 50 Jan 4 22:23 ..
-rwxrwxrwx. 1 jnett apache 0 Dec 30 16:52 __init__.py
-rwxrwxrwx. 1 jnett apache 2644 Dec 30 16:52 settings.py
-rwxrwxrwx. 1 jnett apache 758 Dec 30 16:52 urls.py
-rwxrwxrwx. 1 jnett apache 554 Jan 4 22:48 wsgi.py
5。 django版本为1.8,apache版本为2.4。
6。
selinux设置为permissive
,因为我知道有时会导致问题。
我已经尝试过对上述设置及其指向的所有内容的所有可能的小调整,但我仍然无法获得除上述以外的任何结果&#34;权限被拒绝&#34 ;错误。是的,我已经尽可能地搜索了这个错误;不,我找到的任何东西都没有产生解决方案。是的,我还搜索了django和mod_wsgi文档,所以除非你注意到明显的差异,否则请不要发布任何其他链接。
我已经盯着它看了很长一段时间,所以我希望一双新鲜的眼睛能够捕捉到我还没有想到的东西。
答案 0 :(得分:0)
这确实是一个selinux问题 - 我误解了如何将其设置为permissive
。将/etc/selinux/config
中的值更改为permissive
实际上并不会将selinux置于permissive
状态,直到服务器重新启动。