2016-04-03 150 views
0

在我的站點2 Django應用程序Apache wsgi沒有對/ var/www/site2中文件的寫入訪問權限,即使: centos 7 Apache wsgi寫入文件權限被拒絕

  • 我有chown-ed將apache所有文件從/ var/www/site2目錄
  • 我給予所有權利(chmod -R 777)。
  • 並且SELinux被禁用。
  • 以下是發佈會狀態:

    [[email protected] www]# httpd -v 
    Server version: Apache/2.4.6 (CentOS) 
    Server built: Nov 19 2015 21:43:13 
    
    [[email protected] 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 
    
    [[email protected] 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 
    
    
    [[email protected] 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> 
    #------------------------------------------------- 
    

    並且仍然在/ var /日誌/的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' 
    

    解決

    感謝我做了更多弗拉基米爾的建議挖掘,我發現finnaly的方式。

    在/ home目錄中移動項目不適用於我:從Apache獲取「Forbidden」。

    的文件,我想寫需要絕對路徑:

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

    否則WSGI蟒蛇會盡量把它寫在「/」根文件系統,所以上面的錯誤解釋

    在結束我做了CH - R 744/var/www/site2和它的工作,寫入文件和數據庫。

    似乎我已經做了其他錯誤,但無論如何,它現在起作用。

    +0

    在此線程中無法看到Volodymyr,因此不確定這些建議是什麼。如果你回答自己的問題,最好把這個答案。 – intotecho

    回答

    0

    嘗試:

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

    我有這個問題時,與在CentOS 7 httpd的部署Django的我選擇了另一種方式:創建家庭/用戶/目錄網站上的軟件包,然後

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

    之後您可以嘗試:

    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 
    

    其他詞語apache on centos 7需要root privelegies