我正在使用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
答案 0 :(得分:2)
10分钟的部署肯定是你可以优化的。我认为连接速度很低。
一项改进可能是使用不同的部署策略。如果可以从应用服务器(例如GitHub,私人仓库)访问您的存储库,则可以通过远程缓存进行部署。将以下设置添加到config/deploy.rb
set :deploy_via, :remote_cache
不是在本地签出repo,压缩它并通过sftp发送,capistrano直接在应用服务器上检出存储库,然后仅提取更改。
如果您使用私有存储库,则必须使用设置部署ssh密钥。
查找有关GitHub's capistrano page的更多信息(不仅与GitHub相关)。