Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Nginx和django提供媒体文件?_Django_Nginx_Configuration_Gunicorn - Fatal编程技术网

如何使用Nginx和django提供媒体文件?

如何使用Nginx和django提供媒体文件?,django,nginx,configuration,gunicorn,Django,Nginx,Configuration,Gunicorn,晚上好, 我目前面临一个关于我的家庭项目的问题 我与gunicorn和nginx建立了一个django项目 Nginx似乎正常地为我的静态服务,但当涉及到媒体文件时,它不起作用,我的错误日志中显示以下消息:failed(2:没有这样的文件或目录) 我尝试为nginx.conf使用不同的用户,但仍然是一样的 我在某处遗漏了一些东西,但我找不到 我附上我的nginx文件(已更新): 更新: 我删除了以下部分: location ~ ^/(images|javascript|js|css|flash|

晚上好,

我目前面临一个关于我的家庭项目的问题

我与gunicorn和nginx建立了一个django项目

Nginx似乎正常地为我的静态服务,但当涉及到媒体文件时,它不起作用,我的错误日志中显示以下消息:
failed(2:没有这样的文件或目录)

我尝试为nginx.conf使用不同的用户,但仍然是一样的

我在某处遗漏了一些东西,但我找不到

我附上我的nginx文件(已更新):

更新: 我删除了以下部分:

location ~ ^/(images|javascript|js|css|flash|media|static)/  {
  root   /home/user/project/test;
  expires 30d;
}
并补充说:

    location /media {
      root /home/user/project/test/media/;
      expires 1d;
      autoindex on;
    }

    location /static {
      root /home/user/project/test/static/;
      expires 1d;
      autoindex on;
    }
以下是my settings.py的示例:

ALLOWED_HOST = my_server_ip
PROJECT_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/'
更新:

以下是我的nginx错误日志示例:


[错误]11475#11475:*1 open()“/home/user/project/test/media/media/size/products/picture.JPG”失败(2:没有这样的文件或目录),客户端:一些客户端ip,服务器:我的服务器ip,请求:“GET/media/size
你知道它是从哪里来的吗?(我很确定这是件愚蠢的事=/)

您忘记了为Nginx conf文件指定媒体部分,您也应该为静态文件指定媒体部分

server {
        ....
        # There is for media, Put your path here :)
        location /media {
            autoindex on;
            alias /home/myusername/myproject/media/;
        }
        ....
    }

嗨,UserGraund,我用你提到的解决方案更新了我的conf文件。Nginx仍然不提供媒体文件(例如,我的媒体文件夹中的图像)/home/user/project/test/media/media/sized/products/picture.JPG-您可以发送更新的Nginx conf吗?我更新了我的Nginx conf,如下所示。它显示在我的问题中。请尝试从路径中删除媒体,因为它正在这里查看
/home/user/project/test/media/media/
,并且应该在
/home/user/project/test/media/
中查看。我发现了真正的问题。首先我在看nginx,因为当我在媒体目录中查看时,一切都很好。我很高兴知道我的错误在哪里。所以我设置DEBUG=True,我看到了需要看到的内容。。。呃,13号。我设置了一个有足够权限的用户,它工作了。。。结论DEBUG=True即使在生产环境中也有帮助(我以前没有为生产环境设置服务器,我比以前更笨…)
server {
        ....
        # There is for media, Put your path here :)
        location /media {
            autoindex on;
            alias /home/myusername/myproject/media/;
        }
        ....
    }