使用git和capistrano将文件从本地更新到远程

时间:2012-03-21 11:27:36

标签: ruby-on-rails git deployment capistrano

我已经使用capistrano和git在远程服务器中部署了我的应用程序。我是capistrano和git的新手,我的问题是:

e.g。

我进行了更改并在本地项目的任何文件中添加代码,例如更改控制器或模型或视图中的2行或css或js或routes.rb或devise.rb ...等。

在我使用ftp并通过ftp替换文件之前,我发现这种方式对于rails来说并不好。

我想知道如何将这些更改发送到我的vps远程服务器中的生产远程应用程序。

我试过了:

cap deploy

但非常慢,并使服务器过载。我不认为这样做是正确的

我不知道这是否必须与capistrano或git一起使用,例如我用git来表示:

git remote add origin user@ip.ip.ip.ip/~/project
git push origin master

它可以使用此代码在远程服务器中的生产应用程序中部署更改吗?或者我是否使用capistrano在生产服务器中对应用进行更改?

对不起mi无知,但我是rails和capistrano和git的新手。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用git本身或使用capistrano(与git一起)部署代码。

仅使用Git

  1. 您只需要运行一次“git remote add origin user@ip.ip.ip.ip/~/project”,之后您的设置已经保存。如果你想看到你的远程git仓库,只需输入“git remote”
  2. 即可
  3. 完成更改后运行git commit(我假设您已经知道如何执行此操作),然后运行“git push origin master”将所有更改推送到远程仓库。
  4. 现在通过SSH连接到您的远程服务器,例如“ssh myuser@mydomain.com”(适用于Mac)或使用Putty(适用于Windows)
  5. 登录到远程服务器后,导航到您的应用程序根文件夹。
    • 如果您以前从未将git repo克隆到远程服务器,则首先需要运行“git clone”
    • 否则,只需运行“git pull origin master”。这将从上面的步骤2获取并提取更改到您的远程服务器。现在你已经完成了!
  6. 优点:此方法仅将您最近的更改提取到远程服务器,因此速度更快。

    缺点:你必须手动运行很多命令到SSH到服务器和git pull。

    使用Capistrano

    1. 你提到你可以运行“cap deploy”,所以我假设你的Capistrano设置没问题。这种方法较慢,因为它在部署时会提取您的最新提交(可能还有您的整个git repo)。
    2. 如果您想加速Capistrano部署,可以将以下内容添加到deploy.rb中。这会在您的远程服务器上保留git仓库的副本,而不是在每次部署时都执行完整的git克隆。

      set:deploy_via,:remote_cache

    3. 优势:只需键入“cap deploy”并进行部署(加上部署回滚等所有capistrano优势)

      缺点:比git pull慢。