2013-04-23 2 views
0

Я пытаюсь настроить два приложения Rails. Я хочу, чтобы оба они использовали одну базу данных MySQL. Моя настройка такова:Использование базы данных MySQL в двух экземплярах EC2, не работающих в одном экземпляре

С эластичным бобовым стеком Я установил два приложения Rails с двумя различными средами. Одно из этих приложений, которые я устанавливаю с базой данных MySQL. Итак, теперь у меня есть два экземпляра EC2 - по одному для каждого приложения rails и один экземпляр RDS MySQL.

Я установил группы безопасности в обоих экземплярах EC2, чтобы иметь возможность подключаться к MYSQL через port 3306.

я установка группа безопасности DB для авторизованных обоего случаев EC2 и я также настроить CIDR/IP с частным IP второго EC2 инстанции (один без базы данных MySQL устанавливается при настройке Beanstallk Application)

В обоих Rails приложений, которые я установка в database.yml как:

production: 
    adapter: mysql2 
    encoding: utf8 
    database: <%= ENV['RDS_DB_NAME'] %> 
    username: <%= ENV['RDS_USERNAME'] %> 
    password: <%= ENV['RDS_PASSWORD'] %> 
    host: <%= ENV['RDS_HOSTNAME'] %> 
    port: <%= ENV['RDS_PORT'] %> 

Я назначил значение ENV для производства на втором случае (что одно без БД MySQL) со значениями ENV из первого экземпляра EC2.

Что мне здесь не хватает?

Я также добавил IP-адрес компьютеров в группу DB Securty, и я могу подключиться к базе данных MySQL с учетными данными, которые я использую в качестве переменных var.

ответ

0

Проблема решена - вместо ENV переменных, которые я установил учетные данные БД в файле database.yml. Переменные среды были перезаписаны каждым нажатием git aws.push на эластичном бобовом стебле.

+0

Какие шаги вы предприняли для решения этой проблемы? У меня такая же проблема. –

2

Вы можете упустить это:

socket: /var/lib/mysql/mysql.sock 
+0

Thx, но это не помогло. Я добавил его в базу данных.yml в разделе «Производство», и это не сработало. База данных не находится на локальном сервере - это дополнительный экземпляр на амазонке. С этой строкой я все еще получаю сообщение об ошибке «Не удается подключиться к локальному серверу MySQL через сокет» /var/lib/mysql/mysql.sock (2) (Mysql2 :: Ошибка) ' – kabebop

+0

Попробуйте следующее: http://stackoverflow.com/questions/5499035/ruby-on-rails-3-cant-connect-to-local-mysql-server-through-socket-tmp-mysql-s –

+0

Я смотрел на это, но это не мое дело. БД MySQL находится на удаленном экземпляре, поэтому он не установлен локально ни в одном из экземпляров EC2. Я могу подключиться к нему только из одного экземпляра, и это проблема. Я думаю, что ошибка сокета связана с тем, что когда рельсы не могут найти удаленный БД, он пытается найти его на локальной машине. – kabebop

0

В моем случае это потому, что я использовал неправильные имена переменных ENV. Вы можете удвоить чек вы установили все правильно, подключив к экземпляру с eb ssh, а затем printenv | grep RDS, который должен дать вам что-то вроде:

RDS_HOSTNAME=yourhostname.amazonaws.com 
RDS_DB_NAME=ebdb 
RDS_PASSWORD=yourpassword 
RDS_USERNAME=yourusername 
RDS_PORT=3306 

убедитесь, что они отражены в вашей конфигурации/database.yml файла - либо с помощью <%= ENV['varname'] %>, либо путем их жесткого кодирования. Очевидно, что первый вариант является предпочтительным. :)

 Смежные вопросы

  • Нет связанных вопросов^_^