Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
51
Help us understand the problem. What is going on with this article?
@soramugi

Capistranoのセットアップ

More than 5 years have passed since last update.

最初人がしゃべっていたままを覚えていて、キャピストラーノと思ってたのですが
カピストラーノみたいですね。読み方。

Capistranoインストール、簡単なtask作成

vagrantを使用してnode01node02node03を立ち上げてnode01で作業。
あらかじめnode01から各サーバーにssh node02等でsudoが使えるユーザーでssh接続できるように設定済み
パスワード無しのsudoが実行できる設定は以下、vagrantユーザーがパスワード無しのsudo実行出来る。

# visudo
vagrant   ALL=(ALL)  NOPASSWD: ALL

Defaults env_keep += "PATH"
$ sudo gem install capistrano capistrano_colors
$ mkdir capis-recipes
$ cd capis-recipes
$ vi Capfile
Capfile
role :node, "node02", "node03"

task :ls do
  run "ls"
end
$ cap ls

これで$HOMEディレクトリ直下のls情報が出力される。すげー簡単。

deployタスクの作成、実行

lsじゃなくってもう少し複雑な事をさせるためのテンプレートの作成。deployタスクの設定ファイル作成。

$ capify .
[add] writing './Capfile'
[add] making directory './config'
[add] writing './config/deploy.rb'
[done] capified!
$ tree
.
├── Capfile
└── config
    └── deploy.rb

1 directory, 2 files

ちょっとしたファイルが作成される。
例として自分のdotfilesをデプロイする設定を書く

$ vi config/deploy.rb
deploy.rb
set :application, "dotfiles"
set :repository,  "git://github.com/soramugi/dotfiles.git"

set :scm, :git

role :node, "node02", "node03"
$ cap deploy:setup

作業ディレクトリの作成

$ cap deploy:check

ちゃんとデプロイ出来るかの確認
と、ここでエラーが出る。どうやら書き込み権限が無いよ、というのとgitコマンドが無いというもの。
各nodeサーバーに入り以下のディレクトリに書き込み権限を付与、gitコマンドインストール。

$ sudo chown -R vagrant.  /u/
$ sudo yum install git

標準のデプロイディレクトリは/u/ディレクトリを作成してそこにデプロイを行う。
デプロイするディレクトリを指定する時は以下。あらかじめ指定して権限を付与していた方が良いだろう

deploy.rb
set :deploy_to, "/tmp/"

そしてデプロイ実行

$ cap deploy

無事デプロイ出来ていれば完了

tail -f logタスクの作成

複数台サーバーで同じコマンドを流せるようになったので
ログの閲覧が出来るように設定を行う。

cap -Tコマンドで作成したタスクを閲覧してカンニング出来るようにする。
標準のタスク閲覧

$ cap -T
cap deploy                # Deploys your project.
cap deploy:check          # Test deployment dependencies.
cap deploy:cleanup        # Clean up old releases.
cap deploy:cold           # Deploys and starts a `cold' application.
cap deploy:create_symlink # Updates the symlink to the most recently deployed version.
cap deploy:migrate        # Run the migrate rake task.
cap deploy:migrations     # Deploy and run pending migrations.
cap deploy:pending        # Displays the commits since your last deploy.
cap deploy:pending:diff   # Displays the `diff' since your last deploy.
cap deploy:restart        # Blank task exists as a hook into which to install your own environment specific behaviour.
cap deploy:rollback       # Rolls back to a previous version and restarts.
cap deploy:rollback:code  # Rolls back to the previously deployed version.
cap deploy:setup          # Prepares one or more servers for deployment.
cap deploy:start          # Blank task exists as a hook into which to install your own environment specific behaviour.
cap deploy:stop           # Blank task exists as a hook into which to install your own environment specific behaviour.
cap deploy:symlink        # Deprecated API.
cap deploy:update         # Copies your project and updates the symlink.
cap deploy:update_code    # Copies your project to the remote servers.
cap deploy:upload         # Copy files to the currently deployed version.
cap invoke                # Invoke a single command on the remote servers.
cap shell                 # Begin an interactive Capistrano session.

Some tasks were not listed, either because they have no description,
or because they are only used internally by other tasks. To see all
tasks, type `cap -vT'.

Extended help may be available for these tasks.
Type `cap -e taskname' to view it.

一回だけ複数サーバーのログを閲覧するだけならcap shellを使えば良いと思う。
割と頻繁に見るapacheのアクセスログやphpログのtail -f出力タスクの作成

$ sudo gem install capistrano-colorized-stream
$ vi config/log.rb
config/log.rb
require 'capistrano/colorized_stream'

namespace :log do
  desc 'tail -f php.log'
  task :php do
    stream "tail -f /var/log/php/php.log ; true"
  end

  desc 'tail -f httpd access_log'
  task :access do
    stream 'tail -f /var/log/httpd/access_log ; true'
  end
end

以下追加

$ vi Capfile
load 'config/log'
$ cap -T
cap deploy                # Deploys your project.
cap deploy:check          # Test deployment dependencies.
cap deploy:cleanup        # Clean up old releases.
cap deploy:cold           # Deploys and starts a `cold' application.
cap deploy:create_symlink # Updates the symlink to the most recently deployed version.
cap deploy:migrate        # Run the migrate rake task.
cap deploy:migrations     # Deploy and run pending migrations.
cap deploy:pending        # Displays the commits since your last deploy.
cap deploy:pending:diff   # Displays the `diff' since your last deploy.
cap deploy:restart        # Blank task exists as a hook into which to install your own environment specific behaviour.
cap deploy:rollback       # Rolls back to a previous version and restarts.
cap deploy:rollback:code  # Rolls back to the previously deployed version.
cap deploy:setup          # Prepares one or more servers for deployment.
cap deploy:start          # Blank task exists as a hook into which to install your own environment specific behaviour.
cap deploy:stop           # Blank task exists as a hook into which to install your own environment specific behaviour.
cap deploy:symlink        # Deprecated API.
cap deploy:update         # Copies your project and updates the symlink.
cap deploy:update_code    # Copies your project to the remote servers.
cap deploy:upload         # Copy files to the currently deployed version.
cap invoke                # Invoke a single command on the remote servers.
cap log:access            # tail -f httpd access_log
cap log:php               # tail -f php.log
cap shell                 # Begin an interactive Capistrano session.

Some tasks were not listed, either because they have no description,
or because they are only used internally by other tasks. To see all
tasks, type `cap -vT'.

Extended help may be available for these tasks.
Type `cap -e taskname' to view it.

以下が追加されているのが解る

cap log:access            # tail -f httpd access_log
cap log:php               # tail -f php.log
$ cap log:access

実行でログが流れる幸せ!

参考リンク

エンジニアよ、大志を抱け: Capistranoメモ
Streaming Log with Capistrano - ni-blog
はじめてのCapistrano #Rails #capistrano - Qiita [キータ]
Capistranoでデプロイする | kenkennote
つくるぶガイドブログ: capistrano で本番環境にデプロイ
Rals3.2.9で始める Git連携Capistranoによる自動デプロイ - 酒と泪とRubyとRailsと

51
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
soramugi
自己紹介を設定してみる!

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
51
Help us understand the problem. What is going on with this article?