Развертывание приложения rails на отдельном сервере приложений и сервере базы данных (оба Linode)

У меня возникли проблемы с развертыванием базового приложения rails (которое работает на локальном компьютере, которое работает на героку) в распределенной архитектуре (веб-сервер на одном компьютере, сервер базы данных на другом).

Вот моя проблема. Похоже, что Capistrano не может обновить кешированную копию на моем сервере базы данных.

2013-05-12 11:32:57 executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote [email protected]:morgs32/treebook.git master"
command finished in 1658ms
* executing multiple commands in parallel
-> "else" :: "if [ -d /home/morgan/apps/treebook/shared/cached-copy ]; then cd  /home/morgan/apps/treebook/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 73b5a632d417b3a6863d542b174b30077265bc7c && git clean -q -d -x -f; else git clone -q -b master [email protected]:morgs32/treebook.git /home/morgan/apps/treebook/shared/cached-copy && cd /home/morgan/apps/treebook/shared/cached-copy && git checkout -q -b deploy 73b5a632d417b3a6863d542b174b30077265bc7c; fi"
-> "else" :: "if [ -d /home/morgan/apps/treebook/shared/cached-copy ]; then cd /home/morgan/apps/treebook/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 73b5a632d417b3a6863d542b174b30077265bc7c && git clean -q -d -x -f; else git clone -q -b master [email protected]:morgs32/treebook.git /home/morgan/apps/treebook/shared/cached-copy && cd /home/morgan/apps/treebook/shared/cached-copy && git checkout -q -b deploy 73b5a632d417b3a6863d542b174b30077265bc7c; fi"
servers: ["*app server ip*", "*database ip*"]
[*app server ip*] executing command
[*database ip*] executing command
** [*database ip* :: out] sh: 1: git: not found
command finished in 3072ms
*** [deploy:update_code] rolling back
* executing multiple commands in parallel
-> "else" :: "rm -rf /home/morgan/apps/treebook/releases/20130512183302; true"
-> "else" :: "rm -rf /home/morgan/apps/treebook/releases/20130512183302; true"
servers: ["*app server ip*", "*database ip*"]
[*app server ip*] executing command
[*database ip*] executing command
command finished in 201ms
failed: "sh -c 'if [ -d /home/morgan/apps/treebook/shared/cached-copy ]; then cd /home/morgan/apps/treebook/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 73b5a632d417b3a6863d542b174b30077265bc7c && git clean -q -d -x -f; else git clone -q -b master [email protected]:morgs32/treebook.git /home/morgan/apps/treebook/shared/cached-copy && cd /home/morgan/apps/treebook/shared/cached-copy && git checkout -q -b deploy 73b5a632d417b3a6863d542b174b30077265bc7c; fi'" on *database ip*

Конечно, везде, где вы видите IP-адрес сервера приложений или IP-адрес базы данных, у меня есть фактические IP-адреса для этих серверов. Есть идеи?


person morgs32    schedule 12.05.2013    source источник
comment
Вашему развертыванию capistrano, вероятно, не нужно разговаривать с вашей базой данных, вы можете запускать миграцию из приложения rails на веб-сервере (при условии, что database.yml настроен правильно)   -  person house9    schedule 12.05.2013
comment
См. stackoverflow.com/questions/9781767/ для получения дополнительной информации о роли db   -  person house9    schedule 12.05.2013
comment
Я думаю, что попробовал это слишком рано. Сначала я собираюсь убедиться, что он работает на одной машине, используя capistrano, nginx, postgres и railscast #335. Как только это сработает, я снова займусь этим (пару дней). Спасибо за предложения.   -  person morgs32    schedule 15.05.2013


Ответы (1)


Если серверы расположены в одном центре обработки данных, вы можете использовать частные IP-адреса, указанные в Linode Manager, для связи между двумя серверами без затрат на пропускную способность. В зависимости от вашей операционной системы у вас может быть программный брандмауэр, с помощью которого вам нужно открыть порты, чтобы разрешить связь.

Взгляните на https://library.linode.com/remote-access#sph_adding-private-ip-addresses, в котором содержится дополнительная информация о том, как добавить IP-адрес, если он еще не настроен.

person Steven V    schedule 12.05.2013