【问题标题】:Nginx, gunicorn, django, ubuntu - not displaying imagesNginx、gunicorn、django、ubuntu - 不显示图像
【发布时间】:2018-01-01 21:54:55
【问题描述】:

人类同胞

我刚刚在 digitalocean 上设置了一个服务器并部署了我的应用程序。其他一切都很好,包括我的 javascript 和 css。但由于某些超出我的原因,用户上传的图片没有显示

我想我找到了线索,但仍然不知道该去哪里。

如果您能指出正确的方向,将不胜感激

这是我的图像模型(upload_to)

class Image(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                         related_name='images_created')
    title = models.CharField(max_length=2000)
    slug = models.SlugField(max_length=200,
                        blank=True)
    url = models.URLField()
    image = models.ImageField(upload_to='images/%Y/%m/%d')
    description = models.TextField(blank=True, null=True)
    created = models.DateField(auto_now_add=True,
                                            db_index=True)
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
    related_name='images_liked', blank=True)

这是我的 nginx 配置文件

server {
    listen 80;
    server_name 67.207.87.22;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        alias /home/kingiyk/stylplus/static/;
    }

    location /media/ {
    alias /home/kingiyk/stylplus/media/;
    }




    location / {
    include proxy_params;
    proxy_pass http://unix:/home/kingiyk/stylplus/stylplus.sock;
}
}

当我上传图片时,它会保存到 /home/kingiyk/stylplus/images/2017/07/26

stylplus/images 是图片应用

我认为 '2017/07/26' 部分是由于我的 upload_to 是 'images/%Y/%m/%d (year/month/day)。 p>

虽然上传成功,但是图片不显示 我的 css 和 javascript 没有问题。

现在我猜我的 nginx conf 和存储图像的路径之间存在冲突。请伸出援助之手。干杯

【问题讨论】:

  • 你是说你的图片上传到/home/kingiyk/stylplus/images/但是你的nginx/media/指向/home/kingiyk/stylplus/media/
  • 您必须使用 nginx 提供图像文件。您应该将上传位置更改为 /home/kingiyk/stylplus/media/ (或静态)。或者在 nginx 配置中添加一个新路径(images/)。
  • 嘿@Tico。我确实将我的设置附加到服务器 { listen 80; server_name 67.207.87.22;位置 = /favicon.ico { access_log off; log_not_found 关闭; } 位置 /static/ { 别名 /home/kingiyk/stylplus/static/; } 位置 /media/ { 别名 /home/kingiyk/stylplus/media/; } 位置 / { 包括 proxy_params; proxy_pass unix:/home/kingiyk/stylplus/stylplus.sock; } } upload_to--'/home/kingiyk/stylplus/media/' 但仍然无法查看上传的图片。您可以分享更多见解
  • 嗯。对于此解决方案,您还需要在 settings.py 上配置此路径。基本上,您必须将图像文件视为静态文件或媒体文件。查看文档docs.djangoproject.com/en/1.11/howto/static-files/deployment
  • 尝试将图像保存在 css 和 ser 的同一文件夹中,如果 ir Works。然后根据静态部署文档制定解决方案来更改路径

标签: django ubuntu nginx gunicorn


【解决方案1】:

它的工作原理是这样的:Django Dev server 让我们的开发变得非常容易。您只需在 settings.py 上放置一个文件夹,Django 开发服务器就会从该文件夹中提供文件,默认情况下该文件夹是“静态”的。从内部 Django 工作中收集静态文件并放在这个静态文件夹中(如管理页面 css)。您不需要在 dev 上使用它,因为 Django 服务器会查看 Django lib 文件夹,而 nginx 不需要。所以……不相关。对于您的问题,我真的建议您将图像上传的文件夹更改为您的 css 所在的同一文件夹(“静态”)。检查它是否有效。如果可行,您可以在 Settings.py 和 nginx 上配置一个新文件夹,以静态为例。在此链接上查看如何在 Django 上配置“媒体”文件:https://docs.djangoproject.com/en/1.11/howto/static-files/。 “媒体文件”是您应该在 Django 用语中寻找的表达方式。

【讨论】:

  • 我认为问题出在我的模板 当我用 {% static "rango.jpg" %} 替换 "{{ image.image }}" 时,图像显示但 img src=" {{ image.image }} 不显示图像。我有一个名为 image 的类模型,它带有一个 upload_to 属性,它将我的文件上传到 /home/kingiyk/stylplus/static/ 并且在我的 settings.py 中,我有 STATIC_ROOT = '/home/kingiyk/stylplus/static/' STATIC_URL= '/static/'。知道我哪里出错了吗?
猜你喜欢
  • 2018-01-03
  • 2017-12-31
  • 2016-04-16
  • 1970-01-01
  • 2013-03-25
  • 2013-03-01
  • 2012-05-27
  • 1970-01-01
  • 2018-01-17
相关资源
最近更新 更多