gpt4 book ai didi

ruby-on-rails - 从 Elastic Beanstalk 上托管的 Rails 应用程序上传文件的问题

转载 作者:行者123 更新时间:2023-12-04 14:02:37 28 4
gpt4 key购买 nike

我有一个 Rails 3 应用程序,我正在本地开发并部署在 Amazon 的 Elastic Beanstalk 上进行生产。我的应用程序中有几个地方可以通过 HTML 表单上传图像。上传后,我将文件发送到 S3 进行存储。在本地开发时,我对这个工作流程没有任何问题,但在生产中,我在上传过程中收到 500 Internal Server Error 响应(我很确定这是在与 S3 进行任何通信之前)。

我通过 SSH 连接到我的 EC2 实例,在/var/app/support/logs/passenger.log 中发现了错误的痕迹。这是上传期间生成的行。

2013/03/30 00:58:52 [crit] 1723#0: *196227 open() "/tmp/passenger-standalone.1645/client_body_temp/0000000014"失败(2:没有这样的文件或目录),客户端:ip_address ,服务器:_,请求:“POST/admin/users/1 HTTP/1.1”,主机:“www.my_domain.com”,引用者:“https://www.my_domain.com/admin/users/1/edit

有没有人对为什么我无法从我的 Rails 将文件上传到 Elastic Beanstalk 有什么智慧的话?

在此先感谢您的帮助!

最佳答案

经过一些研究,我认为问题在于每天的 cronjob (/etc/cron.daily/tmpwatch) 正在删除对文件上传至关重要的passenger-standalone.* 目录。

通过重新启动应用程序服务器,我能够再次上传工作。为了更长期的修复,我更新了 tmpwatch 脚本以排除模式“/tmp/passenger*”(见下文)。

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' -X '/tmp/passenger*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done

是否有其他人针对此问题找到了其他解决方案?我不是系统管理员(这是我选择使用 Elastic Beanstalk 的一个重要原因),所以如果可能的话,我宁愿不使用 EC2 实例进行黑客攻击 - 特别是当我的应用程序扩展并且产生更多实例时。

关于ruby-on-rails - 从 Elastic Beanstalk 上托管的 Rails 应用程序上传文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714042/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com