【问题标题】:How can I get rails/ngnix to cleanup /tmp/RackMultipart* files?如何让 rails/nginx 清理 /tmp/Rack Multipart* 文件?
【发布时间】:2010-12-01 15:13:07
【问题描述】:

当用户上传图片时,类似这样的文件会在 /tmp 中建立

RackMultipart20101130-1130-1l2q8dt-0
RackMultipart20101130-1130-1t11oa9-0
RackMultipart20101130-1130-59nrpq-0
RackMultipart20101130-1130-6jdqem-0
RackMultipart20101130-11807-1usq3d8-0  
RackMultipart20101130-11807-nns7dw-0

上传完成后如何让rails/nginx/passenger清理这些文件?

我正在使用:

  • nginx 0.8.53
  • Phusion 乘客 2.2.15 (mod_rails/mod_rack)
  • Ruby on Rails 2.3.8
  • 用于上传图片的回形针 ruby​​ gem

【问题讨论】:

  • 据我了解,Unix 系统上的 /tmp 目录会自动清除(如果我是对的,这会因系统而异)所以我不明白您为什么要手动执行此操作.你能解释一下你为什么要这样做吗?
  • 我使用的是 linux (debian)。 /tmp 已满,我没有完全的 root 访问权限来增加 /tmp 的大小。

标签: ruby-on-rails nginx passenger


【解决方案1】:

首先想到的是一个带有 crontab 的 Rake 任务,用于不时清除 /tmp 目录。

  1. lib/tasks 中创建一个新的 Rake 任务,删除 RackMultipart* 文件。
  2. 每 X 小时将 Rake 任务作为 crontab 执行一次。
  3. (可选)使用Whenever 简化第2 步(与Capistrano 结合使用非常强大)

这表示最好让 Paperclip 清除文件,因为上述方法可以删除 Paperclip 仍在使用的临时文件,但我不知道该怎么做。

【讨论】:

    【解决方案2】:

    如果您不想编写 Rake 任务,我建议为 debian/ubuntu 安装 tmpreaper 软件包。它可以配置为根据需要频繁清理/tmp(例如,删除过去一小时内未访问的文件)。

    Paperclip 3.1.0 的发布解决了基本的 Papeclip 问题 #902,之后我们不再看到有这么多 RackMultipart* 文件存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2012-04-08
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多