【问题标题】:sorl-thumbnail ThumbnailException Error After Cloning EC2 Instance克隆 EC2 实例后 sorl-thumbnail ThumbnailException 错误
【发布时间】:2013-04-23 12:55:28
【问题描述】:

我克隆了一个正常工作的 EC2 实例来创建一个辅助登台服务器。除了 sorl-thumbnail 之外,一切都正常工作。

在描述我收到的错误之前,我认为描述一下我正在使用的堆栈可能会有所帮助。它涉及3个EC2实例;结合 Nginx 和 Gunicorn 运行 django 的应用服务器;一个运行 MySQL 和 Redis 的数据库;和一个运行 Nginx 的媒体服务器。应用服务器使用 NFS 从媒体服务器本地挂载媒体目录。 AWS 中所有适当的端口都已打开,并且应用程序服务器已添加到媒体服务器上的 /etc/exports。

关于我看到的问题...应该由 sorl-thumbnail 生成的所有图像的 img src 属性为空。当我查看我的 django 应用程序的日志时,我会为每个丢失的图像看到这样的条目:

[04/29/2013 13:11:54] DEBUG   : Could not find thumbnail image for rendering </media/images/12345.jpg>
ThumbnailException: Source file: '/images/12345.jpg' does not exist.
[04/29/2013 13:11:54] DEBUG   : Could not retrieve image for </media/images/12345.jpg>

但是,12345.jpg 确实存在于 /media/images/ 中。

我在周五的大部分时间里都试图解决这个问题,但无济于事。有没有人遇到过这样的事情?

【问题讨论】:

    标签: python django amazon-ec2 sorl-thumbnail


    【解决方案1】:

    图像缩略图等生成的数据通常存储在(相对而言)临时文件系统位置,How sorl-thumbnail operates 建议相同:

    当您使用缩略图模板标签时,sorl-thumbnail 会查找 键值存储中的缩略图。生成缩略图的密钥 从它的文件名和存储。 [...] 值得注意的是,sorl-thumbnail 不检查是否 如果在 Key 中找到缩略图键,则源或缩略图存在 价值商店。

    注意:这意味着如果您更改或删除源文件或删除 缩略图,sorl-thumbnail 仍会从键值存储中获取。 因此,如果您删除或更改源或 缩略图文件通知键值存储。

    [强调我的]

    现在,Amazon EC2 实例通常具有两种不同的存储类型,即在克隆实例时复制的持久性Amazon Elastic Block Store (Amazon EBS) 卷和Amazon EC2 Instance Store 卷(通常称为临时存储),克隆实例时丢失;有关此差异/问题的更多信息,请参阅我对 how to take backup of aws ec2 instance/ephemeral storage? 的回答。

    因此,您的缩略图可能已存储在临时卷上,现在需要相应地生成。

    【讨论】:

    • 我实际上是使用 ec2-bundle-vol AMI Tool 命令创建了这个 EC2 实例。然后,我使用 ec2-upload-bundle 命令将包上传到 S3 存储桶,并在为辅助登台服务器注册 AMI 时使用此存储桶。因此,据我了解,它是发出 ec2-bundle-vol 命令时工作暂存实例的精确副本。
    • 值得一提的是,我正在使用 Redis 进行缓存,并修改了新辅助登台服务器上的 settings_local.py 以指向与主服务器使用的不同的 Redis 键值存储登台服务器。
    猜你喜欢
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2014-12-21
    • 2011-09-05
    • 2015-08-23
    • 1970-01-01
    • 2015-09-28
    • 2023-01-31
    相关资源
    最近更新 更多