2013-05-12 19 views
0

我在將基本rails應用程序(適用於heroku的本地計算機)上部署到分佈式體系結構時遇到問題(一個框中的web服務器,數據庫服務器在另一個)。在單獨的應用程序服務器和數據庫服務器(都是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我有這些服務器的實際IPS。有任何想法嗎?

+1

您的capistrano部署可能不需要與您的數據庫框交談,您可以從Web服務器上的rails應用程序運行遷移(只要database.yml設置正確) – house9 2013-05-12 19:19:28

+0

請參閱http://stackoverflow.com/questions/9781767/capistrano-db-role-whats-it-for更多關於數據庫角色 – house9 2013-05-12 19:20:51

+0

我想我太早試過了。首先我要確保它可以在一個盒子上使用capistrano,nginx,postgres和railscast#335。一旦有效,我會再次解決這個問題(幾天)。感謝您的建議。 – morgs32 2013-05-15 15:41:09

回答

1

如果服務器位於同一個數據中心中,則可以使用Linode管理器中列出的私有IP地址在兩個服務器之間進行通信,而無需帶寬成本。根據您的操作系統,您可能有一個軟件防火牆,您需要打開端口以允許通信。

看看https://library.linode.com/remote-access#sph_adding-private-ip-addresses有更多關於如何添加IP地址的信息,如果你還沒有設置它。

相關問題