gpt4 book ai didi

ruby-on-rails - 部署为 .war 文件时如何处理 Rails 中的上传和日志?

转载 作者:行者123 更新时间:2023-12-02 01:41:10 25 4
gpt4 key购买 nike

我正在尝试在 Warbler (Tomcat) 和/或 Torquebox 4 (Wildfly) 的帮助下使用 .war 文件在 jRuby 上部署 Rails。我面临的问题是,在这种情况下,我不知道如何使用 Carrierwave 或 Paperclip 处理上传。理想情况下,上传应存储在 war 之外,因为它可能随时被更新版本的应用程序替换。在将应用程序作为 war 文件打包到/home/username/uploads(权限设置为 777)目录之前,我尝试在公共(public)目录中创建一个符号链接(symbolic link)(上传),但这不起作用(我收到 500 错误) .

另外,我如何在部署 war 文件后访问 production.log?或者我应该把日志放在哪里?

更新我想出了如何配置 Carrierwave 以将上传存储在 war 文件之外:

if Rails.env.development?
CarrierWave.configure do |config|
config.root = "/Users/Username/username_uploads/uploads"
end
elsif Rails.env.production?
CarrierWave.configure do |config|
config.root = "/home/username/username_uploads/uploads"
end
end

现在 Carrierwave 可以毫无问题地上传文件,但是当我尝试查看它们时出现 404 错误。我试图在 war 文件中包含一个指向上传文件夹的符号链接(symbolic link),但没有成功。我尝试在运行 warble war 之前以及在将应用程序部署到 Tomcat(在 app_name 文件夹内)之后创建它。

知道如何解决这个问题吗?

更新 2我在这里找到了一个可行的解决方案: Configure Symlinks for single directory in Tomcat

简而言之:cd 进入 tomcat 创建的 exploded war 目录(你可以在 tomcat/webapps 下找到它)(如果上传的 war 文件的名称是 yourapp.war 那么目录名称将是 Tomcat 8 中的 yourapp )。使用 sudo mkdir uploads 创建上传文件夹创建挂载点:sudo mount --bind/path/to/actual/upload/directory/uploads uploads

我还没有用 Wildfly 测试过这个,但我会在今天晚些时候或明天进行测试。如果我没记错的话默认情况下它不会自动爆破war文件。

不过,我仍然想知道针对该问题的其他、更简单、不同的解决方案,以及对我找到的解决方案的看法。

最佳答案

只是对不同方法的思考......

使用“基于云”的存储服务将使 Assets 的上传和服务问题消失,如果您需要第二个节点,它还可以更简单地扩展应用程序,

它还会减少扩展应用程序的需要,因为您可以有效地将 ruby​​ 传统上处理不当的大数据操作委托(delegate)给不同的服务

Amazon S3是一个明显的选择,but check out Riak too

关于ruby-on-rails - 部署为 .war 文件时如何处理 Rails 中的上传和日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28535802/

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