CapistranoでRedmineをデプロイする







これは、長期的にRedmineを自分で管理する方法に関する私のガイドの第2部です。 最初の部分は、Gitを使用してRedmineの独自バージョン管理することに専念しました(翻訳へのリンク)。







独自のRedmineリポジトリを使用して、時間を...







展開を自動化する



真剣に。 すべてを手動でコピーして、昔ながらの方法で展開しようとしないでください。







展開の自動化は、Redmineをアップグレードする必要がある(またはそうする必要がある)たびに、節約された時間と労力で報われる1回限りの投資です。 自動化の目標は、その後の展開を可能な限り簡単にすることです。 自動更新手順は高速で信頼性が高く、単一のコマンドで起動できるため、わずかな修正や改善でも即座に実行できます。







「長所」(つまり、Railsアプリケーションの開発と実行によって生計を立て、システムを展開する人々。そして、あなたが誰であろうと、ローカルサーバー管理者またはRedmineのサポートを任されているPython開発者について学びましょう。過去数年にわたり、多くの賢い人々は、ボタンを1回クリックするだけでインストールした後、Railsアプリケーションのダウンタイムをゼロに減らすツールセットの開発に多くの時間を費やしてきました。 I.そして、あなたがRedmineのコンテキストの外で役立ついくつかの新しいトリックを学ぶことはかなり可能です。







カピストラーノ



リモートマルチサーバー自動化ツールであるCapistranoは、展開の自動化に関して最適な選択肢です。 Rubyに埋め込まれていますが、RubyまたはRailsアプリケーションのデプロイに限定されません。 Capistranoを使用すると、SSHで発生するすべてのアクティビティを実際に自動化できます。 また、これは任意の数のサーバーで並行して実行できます。 Chefはサーバーを展開するように設計されているため、Capistranoはシステムを展開するように設計されていますが、はるかに使いやすいです。







Redmineの詳細を非常に簡単に紹介します。詳細はcapistranorb.comで読むことができます。 このためのReadmeは良い出発点です。







Capistranoをインストールする



Redmine local/xy-stable



ブランチRedmine local/xy-stable



Gemfile.local



というファイルを作成します。 これにより、gemはRedmineのプライベートインストールのローカルに保持されます。







Gemfile.local







 group :development do # uncomment if you're using modern (and secure!) ed25519 ssh keys # gem 'net-ssh', '4.0.0.alpha2' gem 'capistrano', '~> 3.4.0' gem 'capistrano-rails', require: false end
      
      





このファイルを作成しGemfile.local



bundle install



コマンドを実行し、 Gemfile.local



ファイルと表示されるGemfile.lock



両方を追加/コミットしGemfile.lock









次に、 bundle exec cap install



コマンドを実行してCapistranoを構成します。 これにより、いくつかの新しいファイルが追加されますconfig/deploy.rb



およびconfig/deploy/



ディレクトリ内の2つのファイルは、デフォルトで2つのデフォルト設定(または「stages」 - 「stages」 )に対応します。 新しいプラグインなど、テスト用にRedmineを個別にインストールしている場合、これが「ステージングターゲット」になり、ライブ(作業) ステージproductionになります。 主なアイデアは、すべてが共通してdeploy.rb



に送られ、 deploy.rb



ごとに異なるものがconfig/deploy



ディレクトリの対応するファイルに送られるということです。 ほとんどの場合、ここではターゲットホストのみが指定され、おそらく展開用の別のgitブランチまたはユーザー名が構成されます。







Redmine用Capistranoの基本インストール



Capistranoの最小構成は次のようになります。







config / deploy.rb







 # config valid only for current version of Capistrano lock '3.4.0' set :application, 'redmine' set :scm, :git set :repo_url, 'git@code.yourcompany.com:redmine.git' # Target directory in the server. # Should exist and the user account you're using for deployment should # have write access. set :deploy_to, '/srv/webapps/redmine' set :pty, true set :log_level, :info # Linked files are expected to exist below /srv/webapps/redmine/shared and will be # symlinked into the deployed # code. Create them either manually or through an # automation tool like chef. The reason for doing so is to not keep database # credentials and server secrets in your git repository. set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml') # Directories with contents you want to keep across deployments are declared here. # Most important is files where Redmine stores any uploaded files. set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp', 'vendor/bundle', 'files') # keep the last 5 deployed versions on the server. # Useful in case you have to revert to an older version. set :keep_releases, 5 namespace :deploy do # Declares a task to be executed once the new code is on the server. after :updated, :plugin_assets do on roles(:app) do within release_path do with rails_env: fetch(:rails_env) do # Copy over plugin assets execute :rake, 'redmine:plugins:assets' # Run plugin migrations execute :rake, 'redmine:plugins:migrate' end end end end # This will run after the deployment finished and is used to reload # the application. You most probably have to change that depending on # your server setup. after :published, :restart do on roles(:app) do sudo "/etc/init.d/unicorn reload redmine" end end # cleans up old versions on the server (keeping the number of releases # configured above) after :finished, 'deploy:cleanup' end
      
      





展開するサーバー、このサーバーにログインするCapistranoユーザー、および展開用のブランチを構成するだけです。







config / deploy / production.rb







 set :branch, 'local/3.2-stable' server 'redmine.yourcompany.com', user: 'deploy', roles: %w{web app db}
      
      





テストと実稼働に同じマシンを使用する場合は、各ステージに個別のディレクトリを設定できるように、 deploy_to



パラメーターをステージ構成ファイルに転送するだけです。 構成したばかりのGemfile.local、Gemfile.lock、およびCapistrano構成を追加してコミットすることを忘れないでください。 これらのファイルはカスタムRedmineの一部であり、バージョン管理システムに保存する必要があります。







Gitサブモジュールを使用してRedmineのプラグインまたはテーマを追加する場合は、CapistranoのGitサブモジュール戦略にも注意して、それらを自動的にデプロイしてください。







認証



CapistranoはSSHを使用し、適切に構成されたキーベースの認証に依存しています。 また、SSHエージェントまたはエージェントリダイレクトを使用して、ローカルキーを使用してデプロイメントサーバーを介してgitリポジトリにアクセスする場合にも非常に便利です。







Capistranoマニュアルの「Authentication and Authorization」の章を必ずお読みください。







走る!



すべてが整ったので、最初の展開の時間です:







 $ bundle exec cap production deploy
      
      





すべてを正しく構成した場合、このチームはRedmineをデプロイします。 失敗は通常、許可または認証の問題が原因で発生しますが、ほとんどの場合、簡単に修正できます。







参照資料



  1. RedistをCapistranoでデプロイします。
  2. Redmineを正しい方法でデプロイして保守します。
  3. Redmineのデプロイとメンテナンス、正しい方法



All Articles