CentOS 7 上的 Django 1.8、mod_wsgi、apache 2.4 安装程序不工作

Django 1.8, mod_wsgi, apache 2.4 setup on CentOS 7 Not Working

我遇到了一个服务器错误,这听起来很明显,但不是那样解决的:

[: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>

(为了这里的格式问题,我特意把“”写成了"VirtualHost >"。)

2。 根据上述 apache 配置,我的 wsgi.py 文件位于应有的位置并包含:

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,因为我知道这有时会导致问题。

我已尝试对上述设置及其指向的所有内容的权限进行所有可能的小调整,但除了上述 "permission denied" 错误之外,我仍然无法得到任何结果。是的,我已经尽可能多地搜索这个错误;不,none 我找到的东西产生了解决方案。是的,我还搜索了 django 和 mod_wsgi 文档,所以请不要只是 post 一个 link 和其他任何东西,除非你注意到一个特定的明显差异。

我已经盯着这个看了很长时间了,所以我希望新的眼睛能捕捉到我还没有想到的东西。

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