[英]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.