What if you have several servers with different users, ssh-keys, and even port numbers? How to manage all this stuff flexibly ? This tutorial covers poorly documented Capistrano features for advanced servers and roles configuration. Many of them obtained via digging into Capistrano sources. This article covers following Capistrano topics: roles configurationserver configurationThe way HOSTS, ROLES
Capistranoでunicornを使ったアプリをデプロイしているとBundler::GemfileNotFoundという例外があがることがあるらしい*1 どうやらBUNDLE_GEMFILEがreleasesのある時点でのGemfileのパスを保持したままデプロイを重ねて、そのファイルがtruncateで削除されてたのが原因とのこと。 自分のところではまだ再現していないけど、次のコードをunicornの設定ファイルに追記して対応しておいた。 config/unicorn/production.rb: current_path = "/path/to/project/current" before_exec do |server| ENV['BUNDLE_GEMFILE'] = "#{current_path}/Gemfile" end ちなみにbefore_execに登録したブロックは
We're deploying with cap and using a script that send USR2 to the unicorn process to reload and it usually works but every once in a while it will fail. When that happens looking in the unicorn log reveals that it's looking for a Gemfile in an old release directory that no longer exists. Exception : /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/definition.rb:14:in `build': /var/ww
サーバ間に差異があると意図どおりに動かない可能性があるのでおすすめできない(追記2参照) capistranoのでデプロイをするとdeploy:assets:precompileを走らせてassetsのコンパイルをしてくれるけど、毎回assetsに変更があるわけではない。なので変更がない場合にはprecompileを行わないように手を加える。 config/deploy/assets.rb: namespace :deploy do namespace :assets do desc <<-DESC Run the asset precompilation rake task. You can specify the full path \ to the rake executable by setting the rake variable. You can also \ specify
デプロイしたけど何かおかしい? 先日、Unicornを採用しているウェブアプリで問題が発生しました。デプロイした最新のコードが実行されているように見えますが、時々古いコードの挙動を見せるのです。 今回はそのトラブルシューティングの一部始終を紹介しながら、Unicornのホットデプロイ(ダウンタイムなしでアプリケーションを更新すること)の仕組みをおさらいします。担当は私、去年KRAYに入社しました@irohirokiです。よろしくお願いします。 問題 まずはデプロイ先のサーバにSSHして、Unicornのプロセスを調べてみました。 $ ps ax -H PID TTY STAT TIME COMMAND 3159 ? Sl 0:00 unicorn master (old) -c unicorn.conf -D 3162 ? Sl 0:00 unicorn worker[0] -c unic
capistrano_database_ymlを使うと、デプロイ時にテンプレートからdatabase.ymlを生成することができる。このときcapistrano側からパラメータを与えられるので、multistageと組み合わせると「本番サーバとステージングサーバで同じproduction環境を使いながらDBの接続先が異なる」ということができる。*1 .gitignore: config/database.yml Gemfile: group :development do gem 'capistrano_database_yml', :require => false end config/deploy.rb: require "capistrano/ext/multistage" require "database_yml/capistrano" set :stages, %w(prod
capistrano を使って rails アプリをデプロイしようとすると、ちょっとしたところでつまづきます。 今日は、最近僕が躓いたこと/調べたことをいくつか書いてみたいと思います。 database.yml を設置する database.yml にはパスワードなどの扱いに困る情報が載っているので、リポジトリにコミットしたくないファイルのひとつです。 また、開発環境は本番環境などで設定が違うのでどうやってデプロイするか悩みます。 capistrano の wiki ページ では "Managing `database.yml` Securely" と称してこのページが紹介されています。 でも、もう少し調べていくと、実はこのコードは capistrano_database_yml という名前でリリースされています。 というわけで、capistrano_database_yml を使ってみま
capistrano-rbenvを使うとcapistranoでrbenvを扱うことができる。3系には今のところ対応していない(capistranoの3系ってどこに出てるんだろう?)。 Vagrant/Ched-soloで環境を作っていて2点ほどメモ。 multistage環境でcapistrano-rbenvを使うときにrbenv_pathの扱いに注意しなくてもよくなってた capistrano-rbenvで検索するとtk0miyaさんのmultistage環境でcapistrano-rbenvを使うときはrbenv_pathの扱いに注意!という記事が上位にヒットするけど、すでに本体で対応されているので別途default_environmentに関する設定を記述する必要はない。 もしmultistageを使っていてno servers found to match {:pty=>true,
タイトル読んで納得した人は読み飛ばしてください。 VM の設定が完了するのを待ちつつ Fulentd Casual Talks #2 の ust 聞きながらこれを書いてます。 capistrano-rbenv 使ってますか? デプロイ先で rbenv を使う場合は capistrano-rbenv が非常に便利です。 config/deploy.rb に # rbenv setting require 'capistrano-rbenv' set :rbenv_ruby_version, '1.9.3-p374' set :default_environment, { 'RBENV_ROOT' => "#{rbenv_path}", 'PATH' => "#{rbenv_path}/shims:#{rbenv_path}/bin:$PATH" } と書いておくだけで rbenv を利用し始
管理対象のサーバー台数が少ない場合など、chefのサーバーを運用するコストとベネフィットを天秤にかけてみて、ああこれどう考えても労力ペイできないな、でも設定ファイルを手動で管理するのはやだな、といったときに[roundsman](https://g ithub.com/iain/roundsman)を使うといいという話。 roundsmanは、chefのレシピを転送してchef-soloを実行するcapistrano向けライブラリ。アプリケーションのリリースタイミングに併せてインフラ設定の変更が必要になることは往々にしてあるので、capistranoを使ってデプロイとインフラ設定変更を一括適 用できるのは便利だ。 ここでは、Railsアプリを対象にroundsman適用までの作業を簡単にまとめる。 手順 まずは適当なRailsプロジェクトを作るところから。 PROJECT="my_fant
Capistrano は、ssh でアクセスするので、他のサーバにアクセスするのとほとんど変わらない訳だが、Vagrant の特徴に合わせて設定する必要がある。設定ポイントとしては、 ユーザー名 SSH Port 秘密鍵 を指定すること。設定内容は、vagrant ssh-config コマンドで確認する。 Capfile設定例 # ユーザ名 と Port を指定 role :vagrant, '127.0.0.1', :user => 'vagrant', :port => 2222 # 秘密鍵の設定 ssh_options[:keys] = [ "#{ENV['HOME']}/.ssh/id_rsa", "#{ENV['HOME']}/.vagrant.d/insecure_private_key" ] 後は何かタスクを追加して動作を確認。apache をリスタートしてみる。 task
Theme.fm Magazine en ligne | Conseils, bons plans et actualités Capistrano is a command line utility for deploying web applications to one or more servers. It was primarily developed for Ruby on Rails applications, but applicable to all sorts of web applications these days, including of course WordPress. Honestly, I discovered Capistrano a couple of weeks ago during Mark Jaquith’s talk at WordCamp
PHPアプリケーションのデプロイ自動化にCapistranoというツールを使ってみて、相当便利だったのでメモがてら書いておく。 Capistrano(これを書いてる時点での最新バージョンは2.12.0)はRubyベースのデプロイ自動化ツールで、RoR用に最適化されているものの設定ファイルをちょろっと工夫すれば色んな形式のアプリケーションに応用できる。おおまかな動きとしてはこちらで図示されているようにデプロイ元でSCMからソースを取得しSCPでデプロイ先にコピーするか、もしくはデプロイ先にSSHログインしてからSCMからソースを取得するか、みたいな感じになる。(deploy_viaで何を指定するかで変わってくる) ツールの特長としては大体以下のような感じかなぁと思う。 コマンド一発でデプロイできるようになる 既存のタスクの中身を変えたり、タスクの前後に処理を追加したりが簡単にできる 複数台の
Mina lets you build and run scripts to manage your app deployments on servers via SSH. $ gem install mina $ mina Really bloody fast Mina works really fast because it’s a deploy Bash script generator. It generates an entire procedure as a Bash script and runs it remotely in the server. $ mina deploy --verbose -----> Creating the build path $ mkdir tmp/build-128293482394 -----> Cloning the Git repos
# config/deploy.rb: set :default_stage, "staging" こう書くとcap deployでデフォルトstagingに行くようになる。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く