0

我正在使用 capistrano 将我的 rails 应用程序部署到我的 ec2 服务器中,但是部署大约需要 10 分钟,并且在 95% 的情况下会在一个步骤中卡住近 9 分钟,我不知道原因......

这是日志

  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote . HEAD"
    command finished in 6ms
  * getting (via checkout) revision 3100b6f25e4551fadaa64c11852e3839ff1eafc1 to /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840
    executing locally: git clone -q . /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840 && cd /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840 && git checkout -q -b deploy 3100b6f25e4551fadaa64c11852e3839ff1eafc1
    command finished in 18422ms
  * Compressing /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840 to /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840.tar.gz
    executing locally: tar czf 20120801082840.tar.gz 20120801082840
    command finished in 2662ms
    servers: ["50.112.250.177"]
 ** sftp upload /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840.tar.gz -> /tmp/20120801082840.tar.gz
    [50.112.250.177] /tmp/20120801082840.tar.gz

因此,正如您在最后一行看到的那样,执行此 .tar.gz 需要花费太多时间……我猜它的 gzip 压缩但为什么需要太多时间?

在另一个新项目中,部署几乎需要 1 分钟或更短的时间......这个项目只有几个控制器,不应该那么慢......

*我在Mac上并部署到ubuntu

4

1 回答 1

2

10 分钟的部署绝对是您可以优化的。我认为连接速度很低。

一项改进可能是使用不同的部署策略。如果您的存储库可以从应用服务器访问(例如 GitHub、私有存储库),您可以通过远程缓存进行部署。将以下设置添加到config/deploy.rb

set :deploy_via, :remote_cache

capistrano 不是在本地签出 repo,而是将其压缩并通过 sftp 发送,而是直接在应用服务器上签出存储库,然后仅提取更改。

如果您使用的是私有存储库,则必须使用设置部署 ssh 密钥。

在GitHub 的 capistrano 页面上查找更多信息(不仅与 GitHub 相关)。

于 2012-08-07T07:21:39.693 回答