2016年1月28日木曜日

rails4.2 site_map.xml capistrano3でdeployする

  • 公開日:2016年01月28日

環境

  • rails 4.2.4
  • ruby 2.2.2
  • vagrant centos6.5

記事概要

sitemap_generatorで作ったsite_map.xmlをcapistrano3で自動デプロイできるようにしたので、そのやり方を記事にしました。

site_map.xmlとは

ページのURLリストをもとにサイトの構造を記述したxml形式のファイルです。
作成したサイトが運用フェーズになったら、必ず導入しておきたいSEO対策の技術の一つです。
site_map.xmlの一番の効果は、検索エンジンの通常のクロール処理では検出できないページを知らせることができることです。

gemのinstall

capistrano3を利用するプロジェクトにsitemap_generatorを追加します。

{project_folder}/Gemfile

gem 'sitemap_generator'

Gemfile記述後に、インストールします。

terminal

// create directory
cd {project_folder}

rbenv exec bundle install

Installing sitemap_generator (5.1.0)
Using spring (1.3.4)
Using spring-commands-rspec (1.0.4)
Using therubyracer (0.12.2)
Using turbolinks (2.5.3)
Using uglifier (2.7.1)
Using unicorn (4.9.0)
Your bundle is complete!
It was installed into ./vendor/bundle
Post-install message from sitemap_generator:

インストールが終了したら、capistrano3にsitemap_generatorの設定をします。

Capistranoでsitemap_generator

まずはCapfileに以下のreqiureを追記します。

{project_folder}/Capfile

require 'capistrano/sitemap_generator'

後はdeply.rbにsitemapの実行処理を追加します。

{project_folder}/config/deploy.rb

  # webサーバー再起動時にsitemapをrefresh(サーバーに送信)する
  after :restart, :sitemap do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      puts "-----restart sitemap-------"
      # Here we can do anything such as:
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :rake, 'sitemap:refresh'
        end
      end
    end
  end

以上で終了です。
さらに確認、本番実行と続けていきましょう。

deployテスト

本番前にdeployのテストをします。

terminal

bundle exec cap production deploy:check

エラーが発生しなければ、本番のdeployを行います。

本番deploy

本番deployをします。せっかくなので私のアプリのdeployログを載せます。

terminal

I, [2016-01-26T06:40:47.922269 #745]  INFO -- net.ssh.connection.session[3fdd4a672b9c]: channel_data: 66 29b
DEBUG [159535d3]    Successful ping of Google
D, [2016-01-26T06:40:47.923078 #745] DEBUG -- tcpsocket[3fdd4a0a92ec]: received packet nr 465 type 94 len 44
I, [2016-01-26T06:40:47.923165 #745]  INFO -- net.ssh.connection.session[3fdd4a672b9c]: channel_data: 66 27b
DEBUG [159535d3]    Successful ping of Bing
D, [2016-01-26T06:40:47.923676 #745] DEBUG -- tcpsocket[3fdd4a0a92ec]: received packet nr 466 type 98 len 44

... // something 

INFO [db1051b1] Finished in 0.102 seconds with exit status 0 (successful).

GoogleとBingにsitemapが送信されているのが確認できますね。

まとめ

Capistrano3でsitemapの自動化をしておくと、本当に便利です。
リリース作業では、手作業は最小限にしておきたいですね。
Capistrano3は本当に優れたdeployツールのなので、是非利用してください。

以上です

PICK UP オススメ書籍

運営サイト(railsで作成しています)


関連記事
参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...