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
状态,直到服务器重新启动。
我遇到了一个服务器错误,这听起来很明显,但不是那样解决的:
[: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>
(为了这里的格式问题,我特意把“
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
状态,直到服务器重新启动。