Amazon ec2 使用beanstalk在EC2上部署ruby 2.0和rails 4.0
我用beanstalk在EC2上部署了rails 4应用程序。由于目前没有可用的ruby 2.0和rails 4.0容器,我只是在下面的文章中的实例上安装了ruby 2.0和rails 4.0: 但还是从乘客那里得到了错误:Amazon ec2 使用beanstalk在EC2上部署ruby 2.0和rails 4.0,amazon-ec2,amazon-elastic-beanstalk,ruby-on-rails-4,ruby-2.0,Amazon Ec2,Amazon Elastic Beanstalk,Ruby On Rails 4,Ruby 2.0,我用beanstalk在EC2上部署了rails 4应用程序。由于目前没有可用的ruby 2.0和rails 4.0容器,我只是在下面的文章中的实例上安装了ruby 2.0和rails 4.0: 但还是从乘客那里得到了错误: Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 (Bundler::RubyVersionMismatch) 将cd插入/var/app/current,运行 $ ruby -v ruby 2.0
Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 (Bundler::RubyVersionMismatch)
将cd插入/var/app/current,运行
$ ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]
有什么我错过的吗
谢谢
一些信息更新:
$ which bundle
/usr/local/rvm/gems/ruby-2.0.0-p195/bin/bundle
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.3
- RUBY VERSION: 2.0.0 (2013-05-14 patchlevel 195) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.0.0-p195
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.0.0-p195/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.0.0-p195/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/rvm/gems/ruby-2.0.0-p195
- /usr/local/rvm/gems/ruby-2.0.0-p195@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
您的乘客配置是指向ruby 1.8还是ruby 2.0? 另外,您是否有与ruby 2.0配合使用的passenger预发布版本 试着跑步
gem install passenger-pre
和passenger-install-apache2-module
不带sudo,确保乘客配置行指向2.0,而不是1.8或1.9Elastic Beanstalk使用/etc/init.d/passenger
处的脚本启动乘客,我认为它不会获得与bash用户相同的环境变量。要了解我的意思,请转到/etc/init.d/passenger
,并将环境变量输出到日志文件,如下所示:
#/etc/init.d/passenger
. /opt/elasticbeanstalk/support/envvars
env>/var/log/debug-rvm.log
然后,执行
$>sudo服务乘客重启
$>cat/var/log/debug-rvm.log
查看乘客流程开始时可用的所有环境变量
启动脚本还为我们提供了一些关于如何初始化这些变量的线索。特别是,我了解到您可以编辑/opt/elasticbeanstalk/support/envvars.d/appenv
来添加您自己的自定义环境变量。您可以编辑路径
变量并使用此文件加载rvm
我为您引用的问题添加了一个答案,这可能对您的目的有用
可供替代的
或者,您可以将/usr/bin/ruby
符号链接到ruby 2.0,但我认为正确的链接可能非常棘手,因为您绕过了rvm。希望这有帮助
$> ls -l /usr/bin/ruby
lrwxrwxrwx 1 root root 16 Jun 7 14:57 /usr/bin/ruby -> /usr/bin/ruby1.9
您可以运行:
哪个bundle
和gem env
并发布结果吗?在阅读更多内容后,我相信使用.ebextensions
可能是设置rvm的正确方法(而不是黑客攻击/envvars.d/appenv
)。