Rails 部署到 AWS ElasticBeanstalk/RDS 失败
Posted
技术标签:
【中文标题】Rails 部署到 AWS ElasticBeanstalk/RDS 失败【英文标题】:Rails Deployment to AWS ElasticBeanstalk/RDS failing 【发布时间】: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
【问题讨论】:
【参考方案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;
这就是全部。 :)
【讨论】:
以上是关于Rails 部署到 AWS ElasticBeanstalk/RDS 失败的主要内容,如果未能解决你的问题,请参考以下文章
Rails 部署到 AWS ElasticBeanstalk/RDS 失败
为啥我的 Rails 应用程序无法部署到 AWS Elastic Beanstalk?
无法将 Rails API 应用程序部署到 AWS Elastic Beanstalk
将 rails 6 部署到 AWS Beanstalk 时,系统中未检测到 Yarn 可执行文件
Rails 4 + Capistrano + AWS Net::SSH::AuthenticationFailed: 部署