在EC2和RDS上设置Rails

时间:2013-02-22 06:40:39

标签: mysql ruby-on-rails amazon-ec2 amazon-rds

我有一个带有我的Rails代码的EC2实例,我正在尝试将其设置为与Amazon RDS对话,但是当我尝试启动我不知道如何启动rails服务器时出现错误纠正:

/opt/bitnami/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error)

在我的database.yml文件中,我有:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: development
  pool: 5
  username: root
  password: secret
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  database: mydbname
  username: myusername
  password: mypassword
  host: mypublicdnsformydb
  port: 3306

我将RDS实例分配给与我的EC2相同的安全组,其中包含:

22 (SSH)    0.0.0.0/0
80 (HTTP)   0.0.0.0/0   
443 (HTTPS) 0.0.0.0/0

当我添加我的PC的CIDR时,我可以很好地连接到实例,所以我很确定我的用户名,密码和主机是正确的。

3 个答案:

答案 0 :(得分:1)

为了解决这个问题,我在我的database.yml中添加了这行用于生产

socket: /opt/bitnami/mysql/tmp/mysql.sock

我运行了我的rails服务器,将生产指定为环境:

rails s -e production

答案 1 :(得分:0)

我认为问题在于您的开发环境指向本地的mysql,而不是RDS。 默认情况下,Rails运行开发环境而不是生产环境,所以我会尝试在开发中添加相同的生产配置:

 development:
  adapter: mysql2
  encoding: utf8
  database: mydbname
  username: myusername
  password: mypassword
  host: mypublicdnsformydb
  port: 3306

答案 2 :(得分:0)

这对我来说很好,添加到Gemfile的第一行

if RUBY_VERSION =~ /1.9/
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
end

来源:Alan Ho评论: http://www.a.rnaud.net/2011/10/how-to-fix-invalid-byte-sequence-in-us-ascii-in-bundler-installation/