【问题标题】:Rails Deployment to AWS ElasticBeanstalk/RDS failingRails 部署到 AWS ElasticBeanstalk/RDS 失败
【发布时间】:2016-08-28 13:01:41
【问题描述】:

我第一次在 AWS 上试用 ElasticBeanstalk,并设法让我的应用程序环境显示在 AWS 控制台上,但部署失败。我的应用已连接到 Postgres RDS 实例。

日志告诉我,由于应用程序的 hstore 要求,部署失败。如果此扩展不存在,我将安装它。

在我的应用程序中,我将此脚本设置为 rake 任务:

# lib/tasks/db_enhancements.rake

####### Important information ####################
# This file is used to setup a shared extensions #
# within a dedicated schema. This gives us the   #
# advantage of only needing to enable extensions #
# in one place.                                  #
#                                                #
# This task should be run AFTER db:create but    #
# BEFORE db:migrate.                             #
##################################################


namespace :db do
  desc 'Also create shared_extensions Schema'
  task :extensions => :environment  do
    # Create Schema
    ActiveRecord::Base.connection.execute 'CREATE SCHEMA IF NOT EXISTS shared_extensions;'
    # Enable triagram
    ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS pg_trgm SCHEMA shared_extensions;'
    # Enable Hstore
    ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS HSTORE SCHEMA shared_extensions;'
  end
end

Rake::Task["db:create"].enhance do
  Rake::Task["db:extensions"].invoke
end

Rake::Task["db:test:purge"].enhance do
  Rake::Task["db:extensions"].invoke
end

我还确保在我的 ebextensions 配置中包含 postgres 扩展:

# .ebextensions/packages.config
packages:
  yum:
    postgresql93-devel: []

部署日志中出现的第一个错误是这样的:

PG::UndefinedObject: ERROR:  type "hstore" does not exist

谁能帮助指导我看看我做错了什么?

*PS。我正在使用 EB CLI

【问题讨论】:

    标签: ruby-on-rails ruby postgresql amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    我遇到了类似的问题,我可以通过下一步来解决:

    确定您的 VpcSecurityGroupId

    aws rds describe-db-instances --db-instance-identifier <DBInstanceIdentifier>
    sg-xxxxxxxxx
    

    编辑您的安全组
    现在转到 AWS Console / VCP / Security Groups 并使用您的 VpcSecurityGroupId 进行搜索
    在入站规则中添加其他规则类型:所有 TCP、协议:TCP、端口范围:ALL 和来源:
    0.0.0.0/0
    连接到 RDS 控制台

    用你的终点使用这个

    psql --host=xxxxxxxxxx.xxxxxxxxxx.us-west-2.rds.amazonaws.com --port=5432 --username=dbxxxxx --dbname=ebxxx
    

    为用户 dbxxxxxx 写入密码,并且

    ebdb=>  CREATE EXTENSION hstore;
    

    这就是全部。 :)

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 2021-04-09
      • 2013-07-24
      • 2021-03-08
      • 2015-03-03
      • 2019-06-25
      • 2016-06-30
      • 2020-07-01
      • 1970-01-01
      相关资源
      最近更新 更多