Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Apache Redhat权限被拒绝,调用fopen()失败_Python_Linux_Django_Apache_Mod Wsgi - Fatal编程技术网

Python Django Apache Redhat权限被拒绝,调用fopen()失败

Python Django Apache Redhat权限被拒绝,调用fopen()失败,python,linux,django,apache,mod-wsgi,Python,Linux,Django,Apache,Mod Wsgi,/var/log/httpd/error\u log说 [Tue Nov 22 12:54:51.763863 2016] [mime_magic:error] AH01512: mod_mime_magic: can't read /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py', referer: http://ipaddress/Live [Tue Nov 22 12:54:51.763953 2016] [mi

/var/log/httpd/error\u log说

[Tue Nov 22 12:54:51.763863 2016] [mime_magic:error]  AH01512: mod_mime_magic: can't read /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py', referer: http://ipaddress/Live
[Tue Nov 22 12:54:51.763953 2016] [mime_magic:error]  AH01512: mod_mime_magic: can't read /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py', referer: http://ipaddress/Live
[Tue Nov 22 12:54:51.771547 2016] [:error]  (13)Permission denied: client ######## mod_wsgi (pid=39821, process='', application='omadi-trafcbi01.intranet.hdr|'): Call to fopen() failed for '/var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py'., referer: http://ipaddress/Live
为了解决权限问题,我将项目从主文件夹移到了/var/www/(无效)

下面是我添加到/etc/httpd/conf/httpd.conf的内容

WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py
WSGIPythonPath /bin/python3/site-packages:/var/www/Django_Project/cbtraffic/cbTraffic
<Directory /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

这是我第一次尝试在Redhat上启动Django。任何帮助都将不胜感激。

Appache通常将作为
httpd
用户运行。我将确保该用户至少具有该目录的读取权限。您可能想试试:

chown -R httpd:httpd /var/www/Django_Project/    

Appache通常作为
httpd
用户运行。我将确保该用户至少具有该目录的读取权限。您可能想试试:

chown -R httpd:httpd /var/www/Django_Project/    

我最初的问题是关于Selinux的。我转到/etc/selinux/config并更改了文件,以便

SELINUX=允许的

以前,我的档案上说

SELINUX=强制执行

此更改消除了权限错误

从那时起,我就出现了其他错误,要么无法导入站点,要么无法导入django.core.wsgi

我转到Django文档,添加了一个virtualenv,并在守护进程模式下使用mod_wsgi

我遇到的总体问题是apache使用Python2。我会收到一条小消息,告诉我加载mod_wsgi被跳过

"AH01574: module wsgi_module is already loaded, skipping". 
事实证明,我在机器上安装了mod_wsgi(Python2版本)。我删除了它,在运行服务httpd start时,我得到了错误

"httpd: Syntax error on line 379 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_wsgi.so into server: /etc/httpd/modules/mod_wsgi.so: cannot open shared o...file or directory"
结果是mod_wsgi没有加载。嗯,我忘了用新的virtualenv位置为python 3制作mod_wsgi

我使用这些说明让mod_wsgi在Redhat上使用Python 3

但这一次,我在virtualenv中使用了通往python3的路径。我还安装了我的pip软件包,”

这将加载您创建的mod_wsgi.so文件。如您所见,我还启用了一个站点/000默认文件。以下是这些内容:

<VirtualHost *:80>
    WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py
    <Directory "/var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic">
      Require all granted
    </Directory>


WSGIDaemonProcess cbTraffic python-path=/var/www/Django_Project:/usr/lib/python3.4/site-packages/cbenv/lib/python3.4/site-packages
    WSGIProcessGroup cbTraffic
    WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py




</VirtualHost>

WSGIScriptAlias//var/www/Django_Project/cbtraffic/cbtraffic/cbtraffic/wsgi.py
要求所有授权
WSGIDaemonProcess cbTraffic python path=/var/www/Django_Project:/usr/lib/python3.4/site-packages/cbenv/lib/python3.4/site-packages
WSGIProcessGroup cbTraffic
WSGIScriptAlias//var/www/Django_Project/cbtraffic/cbtraffic/cbtraffic/wsgi.py

我的第一个问题是Selinux。我转到/etc/Selinux/config并更改了文件,以便

SELINUX=允许的

以前,我的档案上说

SELINUX=强制执行

此更改消除了权限错误

从那时起,我就出现了其他错误,要么无法导入站点,要么无法导入django.core.wsgi

我转到Django文档,添加了一个virtualenv,并在守护进程模式下使用mod_wsgi

我遇到的总体问题是apache使用Python 2。我会收到一条小消息,告诉我正在跳过加载mod_wsgi

"AH01574: module wsgi_module is already loaded, skipping". 
事实证明,我在机器上安装了mod_wsgi(python 2的版本)。我删除了它,在运行服务httpd start时出现了错误

"httpd: Syntax error on line 379 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_wsgi.so into server: /etc/httpd/modules/mod_wsgi.so: cannot open shared o...file or directory"
原来mod_wsgi没有加载,我忘了用新的virtualenv位置为python3制作mod_wsgi

我使用这些说明让mod_wsgi在Redhat上使用Python 3

但这一次,我在virtualenv中使用了通往python3的路径。我还使用

这将加载您创建的mod_wsgi.so文件。如您所见,我还启用了sites/000默认文件。以下是这些内容:

<VirtualHost *:80>
    WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py
    <Directory "/var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic">
      Require all granted
    </Directory>


WSGIDaemonProcess cbTraffic python-path=/var/www/Django_Project:/usr/lib/python3.4/site-packages/cbenv/lib/python3.4/site-packages
    WSGIProcessGroup cbTraffic
    WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py




</VirtualHost>

WSGIScriptAlias//var/www/Django_Project/cbtraffic/cbtraffic/cbtraffic/wsgi.py
要求所有授权
WSGIDaemonProcess cbTraffic python path=/var/www/Django_Project:/usr/lib/python3.4/site-packages/cbenv/lib/python3.4/site-packages
WSGIProcessGroup cbTraffic
WSGIScriptAlias//var/www/Django_Project/cbtraffic/cbtraffic/cbtraffic/wsgi.py

不相关,但在任一Python模块搜索路径选项中都不需要
/bin/python3/site包。您甚至不需要
httpd.conf
中的任何内容,只要您修复
WSGIDaemonProcess
python路径,以获得
/var/www/Django_Project/cbtraffic/cbtraffic
的正确路径。您也不需要
wsgi.py
文件中的任何
sys.path
内容。使用默认站点的
目录
块中的
可以使安全访问更加具体,但不需要.Unrelated,但在任何Python模块搜索路径选项中都不需要
/bin/python3/site包
。您甚至不需要
httpd.conf
中的任何内容,只要您修复
WSGIDaemonProcess
python路径,以获得
/var/www/Django_Project/cbtraffic/cbtraffic
的正确路径。您也不需要
wsgi.py
文件中的任何
sys.path
内容。使用默认站点的
目录
中的
块将使安全访问更加具体,但不使用。我不确定组/用户是什么,因为chown-R httpd:httpd/var/www/Django_Project/给了我错误“无效用户”。我使用了find/-name httpd.conf | xargs grep-I“^user”要查找用户,请查找/-name httpd.conf | xargs grep-i“^group”以获取组。chown-R apache:apache/var/www/Django_Project/命令成功,但我仍然遇到相同的权限问题。在/var/www上的权限是什么?我更改了/etc/selinux/config,使selinux=permissive,并通过“echo 0>/sys/fs/selinux/enforce”运行/sys/fs/selinux/enforce,这使前面的错误消失了!我现在收到错误“没有名为django.core.wsgi的模块”,错误发生在我的wsgi.py文件的第行“从django.core.wsgi导入get_wsgi_应用程序”我不确定组/用户是什么,sin
LoadModule wsgi_module /etc/httpd/modules/mod_wsgi.so
Include /etc/httpd/sites-enabled/000-default
IncludeOptional conf.d/*.conf
<VirtualHost *:80>
    WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py
    <Directory "/var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic">
      Require all granted
    </Directory>


WSGIDaemonProcess cbTraffic python-path=/var/www/Django_Project:/usr/lib/python3.4/site-packages/cbenv/lib/python3.4/site-packages
    WSGIProcessGroup cbTraffic
    WSGIScriptAlias / /var/www/Django_Project/cbtraffic/cbTraffic/cbTraffic/wsgi.py




</VirtualHost>