【问题标题】:Permission error uploading user image via Django. The server is running as root, and the directory has 775 permissions通过 Django 上传用户图像的权限错误。服务器以root身份运行,目录有775权限
【发布时间】:2014-08-09 21:26:14
【问题描述】:

在管理界面中创建新记录时,尝试上传图片时出现以下错误。

Permission denied: '/home/jeffy/django_files/django_test/static/uploaded_files/1407616465_2016587_61DjIaZQI8L.jpg'

相关settings.py变量:

STATIC_ROOT = "/home/jeffy/django_files/django_test/static/"
MEDIA_ROOT=STATIC_ROOT

输出

ls -l /home/jeffy/django_files/django_test/static/

drwxrwxr-x 2 jeffy jeffy 4096 Aug  9 16:32 uploaded_files

服务器是以用户 jeffy 启动的:

jeffy@originaldjangster:/etc/nginx/sites-available$ sudo service nginx start
jeffy@originaldjangster:/etc/nginx/sites-available$ sudo /home/jeffy/django_files/django_test_venv/bin/gunicorn -c /home/jeffy/django_files/django_test_venv/gunicorn_config.py django_test.wsgi
root

我把这段代码放在settings.py的末尾

import getpass
print(getpass.getuser())

这就是为什么 gunicorn 服务器启动后“root”打印出来的原因。


为什么这个文件不能上传?

【问题讨论】:

    标签: python django nginx gunicorn ubuntu-14.04


    【解决方案1】:

    这是原始的 gunicorn_config.py 文件:

    command = '/home/jeffy/django_files/django_test_venv/bin/gunicorn'
    pythonpath = '/home/jeffy/django_files/django_test'
    bind = '127.0.0.1:8001'
    workers = 1
    user = 'nobody'
    

    nobody 更改为jeffy 使其工作(尽管它在静态目录和媒体目录相同时犹豫不决...我在static 旁边创建了一个media 文件夹)。

    此设置仅供我炫耀我的 Django 排骨。如果这是一个生产环境,我确实认为以 root 身份运行服务器是个坏主意。

    不确定这个设置到底有多“糟糕”,但至少到目前为止它是有效的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 2012-05-03
      • 2012-01-30
      • 2015-10-01
      相关资源
      最近更新 更多