CentOS的7阿帕奇WSGI写入文件权限被拒绝 [英] centos 7 Apache wsgi writing files permission denied

查看:329
本文介绍了CentOS的7阿帕奇WSGI写入文件权限被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的站点2 Django应用的Apache WSGI没有写在/ var / WWW / SITE2文件的访问,即使:

  • 我有CHOWN-ED apache和所有文件在/ var /网络/站点2目录

  • 我给所有的权限(CHMOD -R 777)。

  • 和SELinux的是禁用的。
  • 以下是发布会的状态:

      [根@ NUC WWW]#httpd的-v
    服务器版本:阿帕奇/ 2.4.6(CentOS的)
    Server内置:2015年11月19日21点43分13秒[根@ NUC WWW]#ls -l命令
    共有4个
    drwxr-XR-X。 2根根19年11月6日23:43 cgi-bin目录
    drwxr-XR-X。 2根根4月6日15:02 2 HTML
    drwxrwxrwx。 6阿帕奇阿帕奇4096 4月3日16:14站点2[根@ NUC站点2]#ls -l命令
    ...
    drwxrwxrwx。 5阿帕奇阿帕奇4096 4月2日15:23博客
    -rwxrwxrwx。 1阿帕奇阿帕奇95232 4月3日16:09 db.sqlite3
    drwxrwxrwx。 5阿帕奇阿帕奇4096 4月2日16:54主场
    -rwxrwxrwx。 1阿帕奇阿帕奇248 03月19日13:56 manage.py
    drwxrwxrwx。 5阿帕奇阿帕奇4096 4月3日16:13麻子
    drwxrwxrwx。 2阿帕奇阿帕奇4096 4月3日14:45站点2
    [根@ NUC WWW]#sestatus
    SELinux状态:禁用httpd.conf中...
    #-------------------------------------------------
    WSGIScriptAlias​​ / /var/www/site2/site2/wsgi.py
    WSGIPythonPath在/ var / WWW /站点2 /别名/静态/的/ var / WWW /站点2 /博客/静态/
    别名/ static2 /在/ var / WWW /站点2 /家庭/静态/
    别名/ static3 /在/ var / WWW /站点2 /痘疤/静态/<目录/ var / WWW /站点2 /博客/静态/>
    要求所有批准
    < /目录>
    <目录/ var / WWW /站点2 /家庭/静态/>
    要求所有批准
    < /目录>
    <目录/ var / WWW /站点2 /痘疤/静态/>
    要求所有批准
    < /目录><目录/ var / WWW /站点2 /站点2 />
    <文件wsgi.py>
    #Order拒绝,允许
    所有允许
    要求所有批准
    < /文件>
    < /目录>
    #-------------------------------------------------

    和仍然在/ var /日志/的httpd / error_log中:

      [太阳13年4月3日:43:17.389404 2016年] [:错误] [PID 4753]在/ var / WWW /站点2
    [太阳13年4月3日:43:17.390560 2016年] [:错误] [PID 4753]内部服务器错误:/痘疤/测试/
    [太阳13年4月3日:43:17.390593 2016年] [:错误] [PID 4753]回溯(最近通话最后一个):
    [太阳13年4月3日:43:17.390602 2016年] [:错误] [PID 4753]文件/usr/lib/python2.7/site-packages/django/core/handlers/base.py,149线,在get_response
    [太阳13年4月3日:43:17.390609 2016年] [:错误] [PID 4753]响应= self.process_exception_by_middleware(即要求)
    [太阳13年4月3日:43:17.390634 2016年] [:错误] [PID 4753]文件/usr/lib/python2.7/site-packages/django/core/handlers/base.py,147线,在get_response
    [太阳13年4月3日:43:17.390643 2016年] [:错误] [PID 4753]响应= wrapped_callback(请求,* callback_args,** callback_kwargs)
    [太阳13年4月3日:43:17.390650 2016年] [:错误] [PID 4753]文件/var/www/site2/pock/views.py57行,测试
    [太阳13年4月3日:43:17.390656 2016年] [:错误] [PID 4753] F =开放('test.txt的','W')
    [太阳13年4月3日:43:17.390662 2016年] [:错误] [PID 4753] IO错误:[错误13]权限被拒绝:'test.txt的

    解决

    由于弗拉基米尔的建议,我没有更多的挖掘,我发现finnaly的​​方式。

    来自Apache得到禁止

    移动项目/ home目录不是为我工作。

    文件我想写需要绝对路径:

      F =开放('/无功/网络/站点2 / test.txt的','W')

    否则WSGI蟒蛇会尽量把它写在/根文件系统,因此上述错误解释

    在我到底CHOWN -R 744 /无功/网络/站点2和它的工作,写文件和数据库。

    看来,我已经做了其他的错误,但是,不管怎么说,现在的工作。


    解决方案

    尝试:

      CHOWN -R根:阿帕奇/路径/要/你/ WebSitePackage

    我不得不用的时候在CentOS 7 httpd的部署Django的我选择了另一种方式这个问题:创建在家庭/用户/目录网站上的软件包,然后

      CHOWN R的阿帕奇:阿帕奇路径/要/ WEBSITEPackage
    搭配chmod -R 770路径/要/ WEBSITEPackage

    在你可以试试:

      CHOWN -R用户:根路径/要/ WEBSITEPackage
    搭配chmod -R 770路径/要/ WEBSITEPackageCHOWN R的阿帕奇:根路径/要/ WEBSITEPackage
    搭配chmod -R 770路径/要/ WEBSITEPackage

    其他的单词阿帕奇在CentOS 7需要root privelegies

    In my site2 Django application Apache wsgi don't have writing access for files in /var/www/site2, even if:

  • I have chown-ed to apache all files from /var/www/site2 directory
  • I give all rights (chmod -R 777).
  • and SELinux is disabled.
  • Below is a briefing state:

    [root@nuc www]# httpd -v
    Server version: Apache/2.4.6 (CentOS)
    Server built:   Nov 19 2015 21:43:13
    
    [root@nuc www]# ls -l
    total 4
    drwxr-xr-x. 2 root   root      6 Nov 19 23:43 cgi-bin
    drwxr-xr-x. 2 root   root      6 Apr  2 15:02 html
    drwxrwxrwx. 6 apache apache 4096 Apr  3 16:14 site2
    
    [root@nuc site2]# ls -l
    ...
    drwxrwxrwx. 5 apache apache  4096 Apr  2 15:23 blog
    -rwxrwxrwx. 1 apache apache 95232 Apr  3 16:09 db.sqlite3
    drwxrwxrwx. 5 apache apache  4096 Apr  2 16:54 home
    -rwxrwxrwx. 1 apache apache   248 Mar 19 13:56 manage.py
    drwxrwxrwx. 5 apache apache  4096 Apr  3 16:13 pock
    drwxrwxrwx. 2 apache apache  4096 Apr  3 14:45 site2
    
    
    [root@nuc www]# sestatus
    SELinux status:                 disabled
    
    httpd.conf ...
    #-------------------------------------------------
    WSGIScriptAlias / /var/www/site2/site2/wsgi.py
    WSGIPythonPath /var/www/site2/
    
    Alias /static/ /var/www/site2/blog/static/
    Alias /static2/ /var/www/site2/home/static/
    Alias /static3/ /var/www/site2/pock/static/
    
    <Directory /var/www/site2/blog/static/>
    Require all granted
    </Directory>
    <Directory /var/www/site2/home/static/>
    Require all granted
    </Directory>
    <Directory /var/www/site2/pock/static/>
    Require all granted
    </Directory>
    
    <Directory /var/www/site2/site2/>
    <Files wsgi.py>
    #Order deny,allow
    Allow from all
    Require all granted
    </Files>
    </Directory>
    #-------------------------------------------------
    

    And still in /var/log/httpd/error_log:

    [Sun Apr 03 13:43:17.389404 2016] [:error] [pid 4753] /var/www/site2
    [Sun Apr 03 13:43:17.390560 2016] [:error] [pid 4753] Internal Server Error: /pock/test/
    [Sun Apr 03 13:43:17.390593 2016] [:error] [pid 4753] Traceback (most recent call last):
    [Sun Apr 03 13:43:17.390602 2016] [:error] [pid 4753]   File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
    [Sun Apr 03 13:43:17.390609 2016] [:error] [pid 4753]     response = self.process_exception_by_middleware(e, request)
    [Sun Apr 03 13:43:17.390634 2016] [:error] [pid 4753]   File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
    [Sun Apr 03 13:43:17.390643 2016] [:error] [pid 4753]     response = wrapped_callback(request, *callback_args, **callback_kwargs)
    [Sun Apr 03 13:43:17.390650 2016] [:error] [pid 4753]   File "/var/www/site2/pock/views.py", line 57, in test
    [Sun Apr 03 13:43:17.390656 2016] [:error] [pid 4753]     f = open('test.txt', 'w')
    [Sun Apr 03 13:43:17.390662 2016] [:error] [pid 4753] IOError: [Errno 13] Permission denied: 'test.txt'
    

    SOLVED

    Thanks to suggestions of Volodymyr I did more digging and I find the way finnaly.

    Moving project in /home directory was not working for me: getting "Forbidden" from Apache.

    The file I was trying to write need absolute path:

    f = open('/var/www/site2/test.txt', 'w')
    

    Otherwise wsgi python would try to write it in "/" root file system, so the error above is explained

    In the end I did chown -R 744 /var/www/site2 and it worked, writing to files and database.

    Seems that I have done other error but, anyway, it works now.

    解决方案

    Try to :

    chown -R root:apache /Path/To/You/WebSitePackage
    

    I had this problem when deploy Django with httpd on Centos 7. I chose other way : Create WEBSITE Package in home/user/ directory, then

    chown -R apache:apache Path/To/WEBSITEPackage
    chmod -R 770 Path/To/WEBSITEPackage
    

    After You can try :

    chown -R user:root Path/To/WEBSITEPackage
    chmod -R 770 Path/To/WEBSITEPackage
    
    chown -R apache:root Path/To/WEBSITEPackage
    chmod -R 770 Path/To/WEBSITEPackage
    

    Other words apache on centos 7 need root privelegies

    这篇关于CentOS的7阿帕奇WSGI写入文件权限被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆