当我将应用程序部署到他们的服务时,AWS Elastic Beanstalk从不接受我的应用程序。我试图通过阅读日志来解决所有问题,但似乎没有任何效果。我的开发IDE是 Rubymine / ruby 2.4.5 / Rails 5.2.0 / Windows 10 Pro x64 / < strong> Bundler版本1.16.4 。我收到的错误如下。如何将应用程序成功部署到AWS Elastic Beanstalk? 在开发中,无论如何都不会启动应用程序。我试图以尽可能少的依赖项启动该应用程序。我清除了资产缓存。我删除了不必要的文件。似乎没有什么能满足Elastic Beanstalk。 (这是我第一次使用该服务)
一个笔记:我正在为此特定应用使用动作电缆
database.yml
production:
adapter: postgresql
encoding: utf8
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
cable.yml
development:
adapter: async
test:
adapter: async
production:
adapter: postgresql
url: <%= ENV["REDIS_URL"] %>
channel_prefix: <%= ENV['CABLE_CHANNEL_PREFIX'] %>
宝石
ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]
错误日志:
-------------------------------------
/var/log/eb-commandprocessor.log
-------------------------------------
gem 'loofah-activerecord'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'bootsnap', '>= 1.1.0', require: false
gem 'rails', '5.2.0' # '~>5.1.1' 5.1.6
# Use postgresql as the database for Active Record
#gem 'derailed_benchmarks', group: :development
gem 'pg', '~> 1.1', '>= 1.1.4'
gem 'puma', '~> 2.16'
# Use SCSS for stylesheets
gem 'sass-rails'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '~> 4.1', '>= 4.1.20'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
# gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
gem 'redis'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~>3.1.11', platforms: [:ruby, :x64_mingw, :mingw]
#gem 'bcrypt', git: 'https://github.com/codahale/bcrypt-ruby.git', require: 'bcrypt'
gem 'bcrypt', '~> 3.1', '>= 3.1.12'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :test do
gem 'capybara', '~> 2.15', '>= 2.15.4'
gem 'factory_bot_rails', '~> 4.0'
gem 'guard-rspec'
gem 'rspec-rails', '~> 3.4', '>= 3.4.2'
gem 'rubocop-rspec'
gem 'stripe-ruby-mock', '~> 2.5.4', require: 'stripe_mock'
gem 'webmock'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
platform :mswin, :mingw, :x64_mingw do
gem 'tzinfo-data'
gem 'byebug', platforms: %i[mri mingw x64_mingw], group: :development
end
gem 'rubocop', require: false
+ '[' -d /var/app/ondeck/vendor/cache ']'
+ bundle install --deployment --local
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root users on this machine.
Your bundle only supports platforms ["x64-mingw32"] but your local platforms are
["ruby", "x86_64-linux"], and there's no compatible match between those two lists. (Executor::NonZeroExitStatus)
[2019-03-03T05:36:01.585Z] ERROR [27678] : Command CMD-AppDeploy failed!
[2019-03-03T05:36:01.586Z] INFO [27678] : Command processor returning results:
{"status":"FAILURE","api_version":"1.0","results":[{"status":"FAILURE","msg":"(TRUNCATED)...ling your bundle as root will break this application for all non-root\nusers on this machine.\nYour bundle only supports platforms [\"x64-mingw32\"] but your local platforms are\n[\"ruby\", \"x86_64-linux\"], and there's no compatible match between those two\nlists. \nHook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI","returncode":16,"events":[]}],"truncated":"true"}
[2019-03-03T05:39:21.557Z] DEBUG [27906] : Reading config file: /etc/elasticbeanstalk/.aws-eb-stack.properties
[2019-03-03T05:39:21.557Z] DEBUG [27906] : Checking if the command processor should execute...
[2019-03-03T05:39:21.559Z] DEBUG [27906] : Checking whether the command is applicable to instance (i-02c427cad88fc3a3e)..
[2019-03-03T05:39:21.559Z] INFO [27906] : Command is applicable to this instance (i-02c427cad88fc3a3e)..
[2019-03-03T05:39:21.559Z] DEBUG [27906] : Checking if the received command stage is valid..
[2019-03-03T05:39:21.559Z] INFO [27906] : No stage_num in command. Valid stage..
[2019-03-03T05:39:21.560Z] INFO [27906] : Received command CMD-TailLogs: {"execution_data"=>"*", "instance_ids"=>["i-02c43eeewfefwfw"], "data"=>"betetet--reeetetetete5", "command_name"=>"CMD-TailLogs", "api_version"=>"1.0", "resource_name"=>"AWSEBAutoScalingGroup", "request_id"=>"b100000-2222-2222-2222-22222222"}
[2019-03-03T05:39:21.560Z] INFO [27906] : Command processor should execute command.
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Storing current stage..
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Stage_num does not exist. Not saving null stage. Returning..
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Reading config file: /etc/elasticbeanstalk/.aws-eb-stack.properties
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Retrieving metadata for key: AWS::ElasticBeanstalk::Ext||_ContainerConfigFileContent||commands..
[2019-03-03T05:39:21.560Z] DEBUG [27906] : Retrieving metadata for key: AWS::ElasticBeanstalk::Ext||_API||_Commands..
[2019-03-03T05:39:21.561Z] INFO [27906] : Found enabled addons:
["logstreaming", "logpublish"].
[2019-03-03T05:39:21.562Z] INFO [27906] : Updating Command definition of addon logstreaming.
[2019-03-03T05:39:21.562Z] INFO [27906] : Updating Command definition of addon logpublish.
[2019-03-03T05:39:21.562Z] DEBUG [27906] : Loaded definition of Command CMD-TailLogs.
[2019-03-03T05:39:21.562Z] INFO [27906] : Executing CMD-TailLogs
[2019-03-03T05:39:21.562Z] INFO [27906] : Executing command: CMD-TailLogs...
[2019-03-03T05:39:21.562Z] INFO [27906] : Executing command CMD-TailLogs activities...
[2019-03-03T05:39:21.562Z] DEBUG [27906] : Setting environment variables..
[2019-03-03T05:39:21.562Z] INFO [27906] : Running AddonsBefore for command CMD-TailLogs...
[2019-03-03T05:39:21.563Z] DEBUG [27906] : Running stages of Command CMD-TailLogs from stage 0 to stage 0...
[2019-03-03T05:39:21.563Z] INFO [27906] : Running stage 0 of command CMD-TailLogs...
[2019-03-03T05:39:21.563Z] DEBUG [27906] : Loaded 1 actions for stage 0.
[2019-03-03T05:39:21.563Z] INFO [27906] : Running 1 of 1 actions: TailLogs...
答案 0 :(得分:2)
您的Gemfile.lock
是在Windows(x64-mingw32
平台)上生成的,并且包含与Linux不兼容的gem版本。但是Amazon仅支持ruby
或x86_64-linux
平台。
Your bundle only supports platforms ["x64-mingw32"] but your local platforms are
["ruby", "x86_64-linux"], and there's no compatible match between those two lists.
这基本上意味着您无法在Linux计算机(或Mac)上完全使用当前的Gemfile.lock
。您将需要在该OS上运行bundle update
(而不是bundle install
),以允许捆绑程序找到一组新的匹配的gem版本。
这是有一定风险的,因为这样一来,您可能会在生产系统上而不是在开发环境中运行其他gem版本,因此建议在部署时实际切换到新版本之前再次运行测试。
当您计划定期使用Ruby on Rails应用程序时,建议您切换到Linux作为本地开发环境。您可以选择在虚拟机中或通过docker使用Linux。
答案 1 :(得分:0)
尽管您可能应该使用某种虚拟机为生产环境开发红宝石/导轨,但现在尝试在gemfile中进行更改:
group :development do
gem 'byebug'
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
gem 'web-console', '>= 3.3.0'
gem 'rubocop', require: false
end
您可以删除它以测试您的部署:
platform :mswin, :mingw, :x64_mingw do
gem 'tzinfo-data'
gem 'byebug', platforms: %i[mri mingw x64_mingw], group: :development
end
您只需要在开发中使用rubocop,因此也可以将其移动到开发块中。
然后运行
bundle install
然后再次尝试部署