0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CapistranoのREADMEを読んで私が解釈したこと

Last updated at Posted at 2020-06-09

Capistrano公式ののREADMEを読んで解釈したことをまとめます。

Capistranoとは

Capistranoはデプロイのためのフレームワークです。
Rubyで書かれていて、Railsアプリのデプロイに使われることが多いですが、JavaやPHPのデプロイに使うこともできます。

インストール使えるようになるcapコマンドを使って、デプロイを行います。

$ cd my-capistrano-enabled-project
$ cap production deploy

CapistranoはサーバーにSSH接続をして、デプロイに必要なスクリプトを実行します。
スクリプトはRakeタスクを書いて自分で定義することも、Capistranoコミュニティが提供しているライブラリ(gemなど)を利用することもできます。

以下、Rakeタスクのサンプルです。

task :restart_sidekiq do
  on roles(:worker) do
    execute :service, "sidekiq restart"
  end
end
after "deploy:published", "restart_sidekiq"

特長

ファイル構造が明確

デフォルトで生成されるファイルの構造が良い感じなので、どこにどんな記述を書くのか、迷うことがありません。

複数環境へのデプロイ

qa環境、ステージング環境、本番環境など複数の環境へのデプロイの設定をする時、同じような設定を複数書くことなく、IPアドレスなどの環境固有の情報を記述するだけで済みます。

同時デプロイ

複数環境へのデプロイを同時に行うことができます。

タグ付け

通常、アプリケーションには複数のサーバー(webサーバー、アプリケーションサーバー、DBサーバなど)があります。
それぞれのサーバーにタグ付けをし、どのタスクをどのタグのサーバーで実行するかを定義することができます。

コミュニティが活発

Capistranoはgemを使って拡張することができます。よく使うデプロイのタスクのほとんどがgemによって提供されているので、自分で記述する量が最小限で済みます。

シンプルなSSHによる接続

Capistranoでできる全てのタスクは、SSH接続で手動実行できるタスクです。
シンプルな構造になっています。

注意点

デプロイ後の操作

デフォルトでは、コードをデプロイすることしかできません。
例えばデプロイ時にサーバーを再起動する必要がある場合などには、別途タスクを記述するか、gemを探してインストールする必要があります。

公開鍵認証を使ったSSH接続

Capistranoを動かすためには、予め秘密鍵と公開鍵を使ってサーバーにSSH接続できる状態になっている必要があります。

プロビジョニング

デプロイしたコードを動かすためには、予めサーバーに言語やデータベースやwebサーバーをインストールしておく必要があります。

sudo

デプロイ時に実行するコマンドの中にsudoが必要なコマンドがあると、設定が複雑になってしまいます。
できるだけsudoを含めないようにしましょう。

Shells

基本的にサーバーではbash or shを使うことを想定しています。

クイックスタート

必要条件

  • Ruby 2.0以上
  • Git等のツールでバージョン管理をしている
  • デプロイ先のサーバーにGit等のツールがインストールされている
  • BundlerでGemを管理していることが推奨されている

インストール

Gemfileのdevelopmentグループにrequire: falseを付けて記述

group :development do
  gem "capistrano", "~> 3.14", require: false
end
$ bundle install

設定ファイルを生成

$ bundle exec cap install

以下のファイルが生成されます。

├── Capfile
├── config
│   ├── deploy
│   │   ├── production.rb
│   │   └── staging.rb
│   └── deploy.rb
└── lib
    └── capistrano
            └── tasks

ステージング、本番以外の環境も必要な場合は、以下のようなコマンドを叩きます。

$ bundle exec cap install STAGES=local,sandbox,qa,production

デフォルトでは最低限の設定しか書かれていないので、deploy.rbdeployディレクトリ内のファイルを、環境に合わせて編集しましょう。

その他使えるコマンド

# list all available tasks
$ bundle exec cap -T

# deploy to the staging environment
$ bundle exec cap staging deploy

# deploy to the production environment
$ bundle exec cap production deploy

# simulate deploying to the production environment
# does not actually do anything
$ bundle exec cap production deploy --dry-run

# list task dependencies
$ bundle exec cap production deploy --prereqs

# trace through task invocations
$ bundle exec cap production deploy --trace

# lists all config variable before deployment tasks
$ bundle exec cap production deploy --print-config-variables

その他ドキュメント

ドキュメント

関連リポジトリ

  • capistrano/sshkit
    • capistranoがSSH接続をする際の仕組みが記述されています。(taskの中でexecuteを実行する時、SSHKitが動いています。)
  • capistrano/rails
    • Railsアプリをデプロイする時によく使われるgemです。
  • mattbrictson/airbrussh
    • capistranoのログをフォーマットする時に使われます
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?