#author("2020-04-29T03:31:43+00:00","default:wikiwriter","wikiwriter")
&tag(Capistrano3/Tips);
*目次 [#r2c29531]
#contents
*関連ページ [#d4823501]
*参考情報 [#qf86f0eb]


*一般 [#b1c4e757]

**初回データベースやユーザーの生成をどうするか [#m9c90091]
-[[Capistrano3で快適デプロイ生活!! - Less is Best:http://yss44.hatenablog.com/entry/2013/12/01/150215]]のように別タスクとして保存しておけばいいかもしれない。
#pre{{
    #> 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を再起動したい [#kc27af13]
-apache passengerはtmp/restart.txtを見て再起動してくれる。
-そこで以下のような設定をdeploy.rbに追加しておくといいらしい。
#pre{{
  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環境で使用したい [#i1307ad0]
-staging環境にdeployしたい場合、config/deploy/staging.rbを指定するだけではだめで、Rails側でstaging環境を設定しておかないといけない。[[Capistrano3を最後にもう一度だけ懇切丁寧にまとめてみる - そのねこが学ぶとき:http://chroju89.hatenablog.jp/entry/2014/04/12/215628]]
-以下手順。
-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へのリンク [#mc134145]
-deploy.rbでコメントアウトされているlinkd_dirsをコメントアウトする。
 set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/uploads')

**GitHubのプライベートリポジトリで公開しているgemを使う [#z7c32127]
-[[プライベートリポジトリで提供しているgemを使ったアプリをHerokuにデプロイする。 - satoryuの日記:https://satoryu.hatenablog.com/entry/use_private_rubygem_on_github]]
-ローカル環境ではアクセストークンを発行し以下のように設定する。
 bundle config github.com *********:x-oauth-basic
-Capistranoなどを使ってリモートにdeployしたい場合、.bashrcに以下を追加
 export BUNDLE_GITHUB__COM=******:x-oauth-basic
-上記設定ファイルが読み込めない場合.bashrcが途中で終了していないか確認。例えばdebian 8の場合以下のような設定が最初にあるせいでインタラクティブシェルじゃない場合、最後に記述した設定が読み込まれない。
#pre{{
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
}}



トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS