在CentOS 7上运行Django 1.8,mod_wsgi,apache 2.4

时间:2016-01-05 00:10:39

标签: django apache mod-wsgi centos7

我有一段时间的服务器错误,听起来有一个明显的解决方案,但是没有这样做:

[: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文档,所以除非你注意到明显的差异,否则请不要发布任何其他链接。

我已经盯着它看了很长一段时间,所以我希望一双新鲜的眼睛能够捕捉到我还没有想到的东西。

1 个答案:

答案 0 :(得分:0)

这确实是一个selinux问题 - 我误解了如何将其设置为permissive。将/etc/selinux/config中的值更改为permissive实际上并不会将selinux置于permissive状态,直到服务器重新启动。