我正在尝试在 Warbler (Tomcat) 和/或 Torquebox 4 (Wildfly) 的帮助下使用 .war 文件在 jRuby 上部署 rails。我面临的问题是,在这种情况下,我不知道如何使用 Carrierwave 或 Paperclip 处理上传。理想情况下,上传应该存储在战争之外,因为它可能随时被更新版本的应用程序替换。我尝试在公共目录中创建符号链接(上传),然后将应用程序打包为 /home/username/uploads(权限设置为 777)目录的 war 文件,但这不起作用(我收到 500 错误) .
另外,部署war文件后如何访问production.log?或者我应该把日志放在哪里?
更新 我想出了如何配置 Carrierwave 以将上传存储在战争文件之外:
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文件中包含一个指向uploads文件夹的符号链接,但没有成功。我尝试在运行 warble war 之前以及在将应用程序部署到 Tomcat(在 app_name 文件夹内)之后创建它。
知道如何解决这个问题吗?
更新 2 我在这里找到了一个可行的解决方案: Configure Symlinks for single directory in Tomcat
简而言之: cd 进入 tomcat 创建的已分解的 war 目录(您可以在 tomcat/webapps 下找到它)(如果上传的 war 文件的名称是 yourapp.war 那么目录名称将是 Tomcat 8 中的 yourapp )。sudo mkdir uploads
使用创建挂载点创建上传文件夹:sudo mount --bind /path/to/actual/upload/directory/uploads uploads
我还没有用 Wildfly 测试过这个,但我会在今天晚些时候或明天。如果我没记错的话,默认情况下它不会自动分解战争文件。
不过,我仍然想知道针对该问题的其他、更简单、不同的解决方案,以及对我找到的解决方案的看法。