Rails应用程序不能在AWS弹性魔豆运行,sqlite3的错误(Rails app doesn&#

2019-10-20 06:53发布

我一直在试图开始使用AWS的弹性魔豆的运转轨道,但我已经在一个看似难以逾越的障碍跑:虽然我能够旋转了一个新的弹性魔豆运行示例应用程序,我似乎无法得到EB实例成功运行自己的代码。

下面是我所采取的步骤:

  1. 在OSX 10.9.3本地运行红宝石1.9.3p545
  2. 安装AWS-EB客户端工具。
  3. 严格遵循从Amazon以下教程: 部署一个Rails应用到AWS弹性豆茎 (TL; DNR:使用“导轨新”来创建新的轨道的应用程序,提交与git,然后使用“EB INIT”创建的一个EB实例键入“64位Linux的亚马逊V1.0.3 2014.03红宝石运行1.9.3”,然后运行“EB开始”)
  4. 等待似乎永远为将要创建的EB实例后,我浏览到的URL Amazon提供。
  5. 而不是看到我的Rails应用程序(其中,顺便说一句,在本地运行正常)的,我得到了可怕的“很抱歉,但出事了”页面:

我尝试了这些步骤多次,具有相同的结果。 我曾尝试使用不同的环境中尝试(使用Ruby 2.0.0彪马和客运的,例如,根据需要通过RVM更新我的红宝石)。

在此之前,被标记为重复,请允许我马上,我看着下面的问题,发现他们并没有解决我的问题:

AWS弹性魔豆:启动一个新的Rails应用程序

部署现有的Rails应用到AWS弹性魔豆

继在问题的意见“AWS弹性魔豆:启动一个新的Rails应用程序”,这似乎非常相似,我的问题,我让过夜的应用程序运行,我仍然得到错误。

我SSH方式登录到实例。 有趣的是,production.log和development.log显示为空(在/ var /应用/支持/日志,反正那些)。 不过,我觉得在passenger.log如下:

********* *********剪断

[2014年6月12日21:42:38.8400 5133 / 7fe66aee4700剂/ HelperAgent / RequestHandler.h:2210]:[客户端20]无法检出会话。 错误页:无法加载这样的文件- sqlite3的/ sqlite3_native(LoadError)/usr/local/share/gems1.9/gems/sqlite3-1.3.9/lib/sqlite3.rb:6:in require' /usr/local/share/gems1.9/gems/sqlite3-1.3.9/lib/sqlite3.rb:6:in在'/usr/local/share/gems1.9/gems/sqlite3-1.3.9/lib/sqlite3.rb救援:2:在<top (required)>' /usr/local/share/gems1.9/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in需要'的/ usr /本地/共享/ gems1.9 /宝石/捆绑-1.6.2 / LIB /捆绑/ runtime.rb:76:在block (2 levels) in require' /usr/local/share/gems1.9/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in每个'/usr/local/share/gems1.9/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in block in require' /usr/local/share/gems1.9/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in每个” /usr/local/share/gems1.9/gems/bundler-1.6.2/lib/捆绑/ runtime.rb:61:在require' /usr/local/share/gems1.9/gems/bundler-1.6.2/lib/bundler.rb:132:in需要'的/ var /应用/电流/配置/ application.rb中:7:在<top (required)>' /var/app/current/config/environment.rb:2:in ř equire '/var/app/current/config/environment.rb:2:in <top (required)>' config.ru:3:in需要'config.ru:3:in block in <main>' /usr/local/share/gems1.9/gems/rack-1.5.2/lib/rack/builder.rb:55:in instance_eval的” /usr/local/share/gems1.9/gems/rack-1.5.2/lib/架/ builder.rb:55:在initialize' config.ru:1:in新' config.ru:1:in <main>' /usr/local/share/gems1.9/gems/passenger-4.0.41/helper-scripts/rack-preloader.rb:112:in EVAL '/usr/local/share/gems1.9/gems/passenger-4.0.41/helper-scripts/rack-preloader.rb:112:in preload_app' /usr/local/share/gems1.9/gems/passenger-4.0.41/helper-scripts/rack-preloader.rb:158:in “/usr/local/share/gems1.9/gems/passenger-4.0.41 /helper-scripts/rack-preloader.rb:29:in <module:PhusionPassenger>' /usr/local/share/gems1.9/gems/passenger-4.0.41/helper-scripts/rack-preloader.rb:28:in

应用程序5241标准输出:应用程序5241标准输出:[2014年6月12日21:45:26.2512 5133 / 7fe66d1ef700池2 / Implementation.cpp:883]:无法产卵组的/ var /应用/电流#默认过程:发生错误而启动日在 '空客:: ApplicationPool2 :: SmartSpawner :: handleErrorResponse(客运:: ApplicationPool2 :: SmartSpawner :: StartupDetails&)' $(SmartSpawner.h:455)在“的std :: string ::客运:: ApplicationPool2 SmartSpawner :: negotiatePreloaderStartup(乘客:: ApplicationPool2 :: SmartSpawner :: StartupDetails&) '(SmartSpawner.h:566)在 '无效客运:: ApplicationPool2 :: SmartSpawner :: startPreloader()'(SmartSpawner.h:206)中的' 虚拟乘客:: ApplicationPool2 :: ProcessPtr乘客:: ApplicationPool2 :: SmartSpawner ::菌种(常量乘客:: ApplicationPool2 ::选项和) '(SmartSpawner.h:752)在' 无效客运:: ApplicationPool2 ::组:: spawnThreadRealMain(常量乘客:: ApplicationPool2 :: SpawnerPtr&,const的乘客:: ApplicationPool2 ::选项与在$无符号

********结束SNIP ********

不知道是否是sqlite3的问题或没有,但它似乎要在实例安装。 为以防万一,我又安装了sqlite3的宝石。

这里是乘客状态的输出:

Version : 4.0.41
Date    : 2014-06-13 13:25:52 +0000
Instance: 5148
----------- General information -----------
Max pool size : 6
Processes     : 0
Requests in top-level queue : 0

----------- Application groups -----------
/var/app/current#default:
App root: /var/app/current
Requests in queue: 0

我不是专家,但它似乎是乘客没有运行(进程== 0)。

我在想什么? 有没有办法,我已经忘了设置为true的一些“JUST_WORK_DARNIT”配置?

如果,事实上,有一个与sqlite3的一个问题安装,如下的建议,我能做些什么来解决这个问题?

Answer 1:

你可以尝试通过运行安装的sqlite-devel的yum install sqlite-devel

您可能需要使用ebextensions尝试了这一点上豆茎。 尝试建立与路径的文件.ebextensions/00-myfile.config部署到青苗之前在您的应用程序源代码目录。

packages:
    yum:
        sqlite-devel: []

听起来类似的问题在这里讨论我为什么不能安装SQLite的宝石?

让我知道是否可行。

更新

有一件事是使用Rails 4.可能你打这个问题改变。 看到这里的讨论: https://github.com/rails/rails/pull/8468由轨道4生成的默认示例应用程序不会在生产模式下工作,因为上述变化。 但是你可以把它通过修改示例应用程序,包括非默认的网页的工作。

我试过如下:运行后“轨道新应用程序的名字”,“混帐初始化”,“EB初始化”尝试以下步骤。 (基于这个答案)。

  1. 编辑配置/ routes.rb中,以便它包含root :to => 'proto#index'
  2. 创建一个包含以下内容的应用程序/控制器/ proto_controller.rb

     class ProtoController < ApplicationController def index end end 
  3. 创建文件app /视图/原/ index.html.erb,写在文件...“的Hello World”的东西。

然后启动你的环境。 这应该工作。 当我尝试不按上述三个步骤,然后我还得到一个错误页面。 但是,这些变化我没有看到一个错误页面。

我会建议你在一个新的环境中执行一个新的目录上面的步骤。 我使用最新的Ruby溶液堆叠“64位Linux的亚马逊2014.03 v1.0.4运行红宝石2.0(PUMA)”进行测试。

此外,在当你对第6步某些时候这个教程中,你可能最终与创业板mysql2“更换宝石“的sqlite3”但是这是你得到的示例应用程序运行后的下一个步骤。



Answer 2:

是的,sqlite3的宝石的问题。 它安装,但安装不正确 。 密钥文件(即sqlite3_native库文件)丢失。



文章来源: Rails app doesn't run on AWS Elastic Beanstalk, sqlite3 error