Articles of capistrano

在Capistrano中,如何在/ current文件夹中创build一个.rvmrc文件?

在部署期间,我想在capistrano部署期间在/ current文件夹中创build一个.rvmrc文件。 我怎样才能做到这一点?

Rails + Nginx + Unicorn多个应用程序

我得到当前安装了两个应用程序的服务器,我需要添加另一个,这里是我的configuration。 nginx.conf user www-data www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Disable unknown domains ## server { listen 80 default; server_name _; […]

使用capistrano删除远程目录

我正在使用Capistrano将Ruby on Rails应用程序部署到服务器。 一切正在运行,直到捆绑安装被调用的时候,在这种情况下,我得到错误“一些gem似乎从你的供应商/caching目录中缺less。 这个错误是由于在Capistrano克隆的git仓库的vendor / cache目录中检查了一些gems。 我知道最好的方法是清理git仓库,但由于这不是我的select,我希望Capistrano删除git克隆之后,但在捆绑调用之前在远程服务器上的供应商/caching目录。 我已经手动运行的步骤,发现通过手动删除目录捆绑执行正确,但我似乎无法弄清楚如何让Capistrano执行删除。 这是从我的deploy.rb文件相关的片段: after "deploy:update_code" do run "rm -rf #{release_path}/vendor/cache" end after "deploy:update_code", "bundle:install" 这里是命令行输出 executing `deploy:update_code' executing locally: "git ls-remote my_git_repository HEAD" command finished in xxxms * executing "git clone [snipped for brevity] servers: ["my_server"] [my_server] executing command ** [my_server :: out] Error reading response length from […]

设置Thin,Bundler和Ubuntu

我有一个非常简单的Ruby应用程序,它使用Thin和Bundler,我需要把它粘在一个Ubuntu盒子上。 我已经尽可能在服务器上安装Ruby,Bundler等,但是在运行应用程序本身时遇到了麻烦。 本质上,我需要一个很好的方式,通过capistrano启动,停止和重新启动应用程序。 我的init.d脚本看起来很像这样: DAEMON=/home/ubuntu/apps/my_app/shared/bundle/ruby/1.8/bin/thin SCRIPT_NAME=/etc/init.d/thin CONFIG_PATH=/etc/thin # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 case "$1" in start) cd /home/ubuntu/apps/my_app/current && bundle exec thin start -d -C /etc/thin/my_app.yml ;; stop) cd /home/ubuntu/apps/my_app/current && bundle exec thin stop -d -C /etc/thin/my_app.yml ;; restart) cd /home/ubuntu/apps/my_app/current && bundle exec […]

capistrano的原型用户设置为在Linux上的tomcat部署

我对CD和DevOps主题相对比较陌生,我试图用capistrano来设置自动部署,这在我的本地特别testing环境中效果很好。 不过,我想知道如何在未来的目标环境中设置用户。 例如,Ubuntu Tomcat安装过程设置了拥有tomcat进程的tomcat(6 | 7)用户。 不过,使用这个用户不可能使用sshlogin,而对于capistrano,你需要用户使用ssh访问来运行所有的命令。 人们通常如何解决这个问题? 当然,我想到了我自己的解决scheme,但是我有兴趣听听是否有最佳做法。 最后还会有另一方build立我的目标环境,但是我可以有一个发言权,所以我想知道我在这里理想的要求。

如何正确清除与capistrano的php apccaching

我们正在使用capistrano来部署我们的PHP应用程序。 并在生产服务器上启用了php-apc,apc.stat = 0.在capistranoconfiguration中,有一个规则可以在部署后清除apccaching:update: after "deploy:update", "clear_apc_cache" caching成功清除:apc.php'查看主机统计'显示0分钟的正常运行时间,caching的文件数量和命中接近0(不是0,因为有相当多的stream量和一些文件caching之前,我们可以检查apc.php) 问题是,有时旧文件仍然被caching在apc中。 我认为这是由于在capistrano更新“当前”符号链接之前启动的HTTP请求,在我们清除apccaching后结束。 在这种情况下,在这个请求中apc清除之后包含的文件仍然来自旧的修订文件夹(我们在include中使用相对path并且需要 s)并保存在apccaching中 有没有办法来永久解决这个问题? 没有更新所有包括和要求 ? 现在我会尽量延迟“clear_apc_cache”一两秒钟,但是恐怕在延迟期间会引起别人的问题(有些请求还可能超过2秒)

使用预取更新数据延迟软件发布?

我目前正在指出一个新的项目的软件需求,这个项目将会在间歇性的networking连接的位置。 由于我们的一些地点会有间歇性的networking连接。 我们将有(几乎?)所有软件发布计划提前。 是否有可能在实际版本之前下载所需的更新数据,即使服务器没有networking连接,发布也是按计划进行的。 我们目前使用卡皮斯特拉诺发布我们的主要项目,所以我想继续使用它,如果可能在卡皮斯特拉诺。

Bootstrap和部署 – 厨师和Capistrano

我一直在网上查找人们在使用厨师/ capistrano调整网站时使用的做法,并且没有在这方面find太多的程序信息,所以我想在这里问。 我们在服务器上以有限的方式使用厨师,我们正在使用capistrano进行部署。 由于各种原因,我们不会使用厨师部署资源来部署我们的应用程序。 我们将使用厨师引导应用程序服务器来扩展我们的网站。 从我可以收集什么我会做的是引导与应用程序服务器angular色的节点,然后运行,帽部署。 这将与一些自定义脚本与ruby和雾gem。 cap HOSTFILTER:ip.add.ress.here production deploy 我的问题是: 其他人在扩展网站和部署时使用的一些常见方法是使用厨师进行部署 主机filter是完成这个最好的方法吗? 我应该重新部署到所有节点时,缩放而不是单一的节点? 任何其他gotchas /等赞赏。

用木偶或厨师模仿面料/ capistrano

我有几个远程环境,我只能从外部连接,但不能从内部连接到外部。 对于我的部署/configuration需求,我使用的fabric和capistrano工作正常,但我有压力使用一个完整的configuration系统作为傀儡或厨师。 有没有办法通过木偶或厨师推特定命令? (请记住,远程主机不能连接到我的网站,我会有木偶/厨师服务器) 谢谢

如何用Capistrano在服务器上执行命令?

我有一个非常简单的任务叫做update_feeds: desc "Update feeds" task :update_feeds do run "cd #{release_path}" run "script/console production" run "FeedEntry.update_all" end 每当我尝试运行这个任务,我收到以下消息: [out :: mysite.com] sh: script/console: No such file or directory 我想这是因为我不在正确的目录,但尝试 run "cd ~/user/mysite.com/current" 代替 run "cd #{release_path}" 也失败了。 手动运行完全相同的命令(通过ssh)完美地工作。 为什么不能正确地cd (改变目录)进入站点目录运行命令? 谢谢!