繁体   English   中英

Django + apache2 错误:[Errno 13] 权限被拒绝:'/photos'

[英]Django + apache2 error: [Errno 13] Permission denied: '/photos'

我有一个托管我的应用程序的 ubuntu 服务器,它由一个用 angular 制作的前端和一个用 ZAD2ZB15AFB89ACA8ACC105 制作的 API 组成

当我尝试通过 API 上传图片时,出现错误: [Errno 13] Permission denied: '/photos'

我尝试将权限设置为 644/755,对目录的完全读写权限,我还尝试创建组并将 www-data 控制权授予目录......但到目前为止没有任何效果。

我正在使用 Apache2 和 mod_wsgi 来为我的 django 应用程序提供服务。 这是文件夹结构:

/var/www/html/api
│   manage.py
│   passenger.wsgi
│   requirements.txt 
│
│───photos (this is the related directory)
│
└───apiX
│   │   serializers.py
│   │   views.py
│   │   ........
│   │
└───apiMain
    │   asgi.py
    │   settings.py
    │   wsgi.py

这是我的/etc/apache2/apache2.conf设置:

# Django app config!
WSGIScriptAlias /api /var/www/html/api/apiMain/wsgi.py

WSGIPythonHome /var/www/html/api/venv

WSGIPythonPath /var/www/html/api/venv/lib64/python3.8/site-packages

WSGIDaemonProcess x_api python-home=/var/www/html/api/venv python-path=/var/www/html/api
WSGIProcessGroup x_api

<Directory /var/www/html/api>

<Files apiMain/wsgi.py>

Require all granted

</Files>

</Directory>

Alias /photos/ /var/www/html/api/photos
Alias /photos /var/www/html/api/photos
<Directory /var/www/html/api/photos>

Require all granted

</Directory>

谢谢!

Apache 服务需要读取目标目录/文件的整个路径的权限,因此您需要向 Apache 用户提供此类权限。

要模拟用户写入,您可以模拟和模拟用户(我假设 apache 服务名为www-data ):

sudo -u www-data ls -al /var/www/html/api/photos

如果您收到Permission denied则需要逐个文件夹检查:

sudo -u www-data ls -al /var/
sudo -u www-data ls -al /var/www/
sudo -u www-data ls -al /var/www/html/
sudo -u www-data ls -al /var/www/html/api/
sudo -u www-data ls -al /var/www/html/api/photos

无论哪个文件夹缺少读取权限,然后设置正确的权限,例如:

chmod o+r /var/www/html ...

(or chgrp www-data /var/www... + chmod g+r ...)

但是有一个安全问题——允许所有用户拥有这样的用户权限是否安全? 有时将文件夹放在系统中的深度较浅是更好的解决方案,例如将照片和设置权限放在:

/srv/photos

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM