Tag: Capistrano3

目次

関連ページ

参考情報

Tips

初回データベースやユーザーの生成をどうするか

  • Capistrano3で快適デプロイ生活!! - Less is Bestのように別タスクとして保存しておけばいいかもしれない。
        #> dbサーバーのデータベースを生成するタスク。
        #> デプロイ前に実行する必要がある。
        task :db_create do
          on roles(:db) do |host|
            q1 = 'CREATE DATABASE IF NOT EXISTS <app_name>;'
            q2 = 'GRANT ALL ON <app_name>.* TO <app_user>@localhost IDENTIFIED BY "<app_passsword>";'
            q3 = "FLUSH PRIVILEGES;"
            sql = "#{q1}#{q2}#{q3}"
            execute "mysql --user=<mysql_user> --password=<msql_password> -e '#{sql}' "
          end
        end
    

passengerを再起動したい

  • apache passengerはtmp/restart.txtを見て再起動してくれる。
  • そこで以下のような設定をdeploy.rbに追加しておくといいらしい。
      namespace :deploy do
        after :restart, :restart_passenger do
          on roles(:web), in: :groups, limit: 3, wait: 10 do
    	within release_path do
              execute :touch, 'tmp/restart.txt'
    	end
          end
        end
        after :finishing, 'deploy:restart_passenger'
      end
    end
    
  • passengerは再起動したあとtmp/restart.txtを削除するという説としないという説がある。
  • 再起動したかどうかログにも書き出されずよくわからない。

staging環境で使用したい

  • staging環境にdeployしたい場合、config/deploy/staging.rbを指定するだけではだめで、Rails側でstaging環境を設定しておかないといけない。Capistrano3を最後にもう一度だけ懇切丁寧にまとめてみる - そのねこが学ぶとき
  • 以下手順。
  • config/database.ymlにstaging環境を追加する。production:をstaging:にコピー。
  • config/secrets.ymlにstaging環境を追加する。production:をstaging:にコピー。
  • config/environments/staging.rbを作成。production.rbをstaging.rbにコピーして作成する。
  • config/deploy/stating.rbを作成。rails_envをstagingに指定したり、ssh関連の設定を追加する。
    set :rails_env, "staging"
  • 手元環境でとりあえず起動してみる
    bundle exec rails s -e staging
  • deployする
    bundle exec cap staging deploy

sharedへのリンク

  • deploy.rbでコメントアウトされているlinkd_dirsをコメントアウトする。
    set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/uploads')

FAQ

ロールってなに?

  • サーバーごとに役割を設定するもの。Rails - はじめてのCapistrano - Qiitaの説明がわかりやすいかも。Capistrano3もCapistrano2も考え方に大差はない。
  • Capistranoではタスクは、デフォルトでは全ロール、全サーバーに対して実行できる。タスクに対し例えばwebロールを割り当てると、webロールのサーバーに対してしか処理が行われなくなる。

設定ファイルの、role、serverの意味ってなに?

  • cap installで以下のような設定ファイルが作成される。
    role :app, %w{deploy@example.com}
    role :web, %w{deploy@example.com}
    role :db,  %w{deploy@example.com}
    
    
    # Extended Server Syntax
    # ======================
    # This can be used to drop a more detailed server definition into the
    # server list. The second argument is a, or duck-types, Hash and is
    # used to set extended properties on the server.
    
    server 'example.com', user: 'deploy', roles: %w{web app}, my_property: :my_value
    
    
  • コメントによると、roleは、ロールとサーバーの簡易同時設定。serverはサーバーの詳細設定(既存ロール使用)といったイメージか。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-07 (火) 14:07:52