我已在Digital Ocean VPS上部署了我的网站 - Ubuntu 14.04。我在我的一个模型中有ImageField
我在Django admin中选择(浏览电脑并上传图像)。问题是此图片无法保存到/media/categories/
。它的提升:
[Errno 13]许可被拒绝: ' /home/django/project/media/categories/television_d3q3EM0.png'
我认为是,因为Nginx没有向/media/
目录写权限所以我运行这些命令:
sudo chown -R www-data /media/
没有帮助
sudo chown -R django /media/
没有任何帮助
我是Linux权利的新手,所以我无法弄清楚我做错了什么。
媒体文件夹位于/project/
目录(manage.py
所在的位置)。
以下是/media/
文件夹的权限。
所有者拥有权利,所以我不知道为什么sudo chown -R www-data /media/
没有工作。
GUNICORN OWNER
ps aux | grep gunicorn
django 16636 0.3 2.7 66040 13616 ? Ss 08:16 0:00 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
django 16642 1.1 7.8 174800 39164 ? S 08:16 0:00 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
django 16643 1.9 10.5 214244 52808 ? S 08:16 0:01 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
django 16644 2.3 10.4 209232 52224 ? S 08:16 0:01 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
root 16667 0.0 0.1 11744 932 pts/0 S+ 08:17 0:00 grep --color=auto gunicorn
答案 0 :(得分:2)
假设您使用的是gunicorn,请确保运行gunicorn的用户具有写入指定路径的权限。查看gunicorn deployment docs以了解如何控制哪个用户正在运行gunicorn。
答案 1 :(得分:1)
问题在于chown
命令。
sudo chown -R django /media/
因为有/ media /目录而工作 - 它是树底部media
文件夹的绝对路径。
我应该这样做:
sudo chown -R django media/
这是一个相对路径(我在项目目录中)。
django
用户正在处理gunicorn
,因此django
必须是media/
所有者(或必须拥有适当的权利)。