『Ruby on Rails環境構築ガイド』読者サポートページ

2013/03/05

『Ruby on Rails環境構築ガイド』

このページは、弊社代表黒田努の著書『Ruby on Rails環境構築ガイド』(インプレスジャパン、2013年3月)の読者サポートページです。

最終更新日: 2016年3月23日

目次

お知らせ

  • 重要 本書では Cent OS のバージョンとして6.3が指定されていますが、2015年9月25日現在、Cent OS 6.3はISOイメージはダウンロードできなくなっています。6シリーズの最新版である6.7のISOイメージをダウンロードしてお使いください。7シリーズのISOイメージも公開されていますが、インストール手順や構成がかなり異なっていますので、必ず6シリーズを選択してください。
  • 重要 配布されている Cent OS の ISO ファイルには拡張子が .minimal.iso のものの他に拡張子が .netinstall.iso であるものがあります。本書の記述は拡張子が .minimal.iso の方を使う前提で記述されています。ご注意ください。

サンプルソースのダウンロード

http://www.oiax.jp/books/kochiku_guide/kochiku_guide_files.zip (11KB)

正誤表

※ 誤記とまでは言えないものの読み進める上で注意すべき点を#補遺にまとめてあります。合わせてお読みください。

  • 36ページの第2段落
    • (誤) ftp://ftp.kddilabs.jp/Linux/packages/CentOS
    • (正) http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/

ブラウザが Safari の場合には、「ftp.ドメイン名」という形式の URL からうまくダウンロードができない場合があります。そのときは、代わりに上記(訂正後)の URL からダウンロードしてください。(参考資料) https://discussionsjapan.apple.com/thread/10157599

  • 36ページの第2段落
    • (誤) 「6.3」→「isos」→「i386」
    • (正) 「6.7」→「isos」→「i386」

Chapter 4

  • 73ページ
    • (誤) 節「ユーザーの切り替え」
    • (正) 項「ユーザーの切り替え」

※ 見出しのレベルが誤っています。

Chapter 5

  • 136ページの図5-6の右端にある ORIG_HEAD を削除。

Chapter 6

  • 152ページの本文下から2行目: postgres.confpostgresql.conf に変更。New
  • 156ページの2番目のコマンド実行例で postgres=# の部分を白抜きから黒字に変更。

Chapter 7

  • 166ページ1-2行目のコマンド実行例を次のように修正。
$ cd ~/rails_root
# 次のコマンドは、CentOS で PostgreSQL を使用する場合のみ実行(242ページ参照)
$ bundle config build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config
$ bundle install --path vendor/bundle --without development test

Chapter 8

  • 173ページ(下から4行目)
    • (誤) SELinux= で始まる行を
    • (正) SELINUX= で始まる行を
  • 173ページ(下から2行目)重要
    • (誤) SELinux=disable
    • (正) SELINUX=disabled
  • 183ページ 項「アクセスログ」の1行目
    • (誤) /var/log/httpd/other_vhosts_access.log
    • (正) /var/log/httpd/access_log (Ubuntuの場合は /var/log/httpd/other_vhosts_access.log
  • 184ページ 項「エラーログ」の1行目
    • (誤) /var/log/httpd/error.log
    • (正) /var/log/httpd/error_log (Ubuntuの場合は /var/log/httpd/error.log

Chapter9

  • 190ページ 項「Nginxの起動、停止、再起動、リロード」の前に項「Nginxへのアクセス権付与」を追加し、本文として以下の記述を追加 重要

/home/asagao ディレクトリのパーミッションは 750 となっているので、そのままではNginxがアクセスできません。そこで、Nginxの実行ユーザー apache(Ubuntuの場合は、www-data)をasagaoグループに加えます。

$ sudo gpasswd -a nginx asagao    # CentOSの場合
$ sudo gpasswd -a www-data asagao # Ubuntuの場合
  • 192ページ ソースコード(unicorn.rb)の15-21行目を以下のように修正(17行目は削除) 重要
  if File.exists?(old_pid) && old_pid != server.pid
    begin
      Process.kill(:QUIT, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end

  • 197ページ 2番目のコマンド実行例を以下のように修正 重要
$ sudo service asagao start   # 起動
$ sudo service asagao stop    # 停止
$ sudo service asagao restart # 再起動
  • 197ページ ヒント「asagaoユーザーで実行する場合…」→削除

asagaoユーザーでは起動できません。筆者の勘違いによる誤りです。

  • 204ページ 最後の段落
    • (誤) /home/asagao/production/shared/log
    • (正) /home/asagao/rails_root/log
  • 215ページ 下から8行目「対応するNginxの…」
    • (誤) /etc/nginx.conf
    • (正) /etc/nginx/nginx.conf

Chapter 11

  • 223ページのコマンド実行例の1行目 重要
    • (誤) gem install capistrano
    • (正) gem install capistrano --version '~> 2.14'
  • 223ページのコマンド実行例の2行目 重要
    • (誤) sudo gem install capistrano
    • (正) sudo gem install capistrano --version '~> 2.14'

本書出版後の2013年10月8日に、Capistrano 3.0.0 がリリースされました。API に重要な変更が行われており、本書の記述通りでは正常に動きません。Capistrano 2.14 または 2.15 をご利用ください。

  • 235ページ上下のソースコード(2カ所)の1行目 重要
    • (誤) after "deploy:update", roles: :app do
    • (正) before "deploy:assets:precompile", roles: :app do

本書執筆当時のRailsの最新版 3.2.12 では問題なかったのですが、Rails 3.2.14 以降でエラーが発生するようになりました。Rails 3.2.13 までは、アセットプリコンパイル時にデータベースへの接続が行われなかったので、config/database.yml ファイルが存在しなくてもよかったのですが、3.2.14 以降は正しい config/database.yml ファイルの存在が必須となりました。

  • 235ページ 項「unicorn.rbの設置(Nginx+Unicornの場合)」の6行目
    • (誤) ~/rails/root/config ディレクトリから
    • (正) ~/rails_root/config ディレクトリから
  • 235ページの項「deploy:updateタスクの実行」の直前に以下を挿入 重要
    • さらに CentOS で PostgreSQL を使用する場合、config/deploy.rb の末尾に以下のコードを追加してください。
before "bundle:install", :roles => :app do
  run "cd #{fetch(:latest_release)} && bundle config build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config"
end
  • 238ページ 下から2行目「最後に、Nginxの設定を再読込します。」の前に、以下の文章を挿入 重要
    • また、エディタで /home/asagao/production/shared/config/unicorn.rb を開き、1行目の APP_PATH = "/home/asagao/rails_root/"APP_PATH = "/home/asagao/production/current/" に変更します。
  • 241ページ最終行のソースコードの1行目 重要
    • (誤) after "deploy:update", roles: :app do
    • (正) before "deploy:assets:precompile", roles: :app do

Chapter 12

  • 259ページ上のソースコードの2行目 重要
    • (誤) channel.send_data "#{config['password']}n"
    • (正) channel.send_data "#{config['password']}\n"

  • 260ページ上のソースコードの12行目 重要
    • (誤) channel.send_data "#{config['password']}n"
    • (正) channel.send_data "#{config['password']}\n"
  • 263ページの3行目 重要
    • (誤) set :deploy to, "/home/#{user}/#{rails_env}"
    • (正) set :deploy_to, "/home/#{user}/#{rails_env}"
  • 263ページの3行目と4行目の間に以下を挿入 重要
    • さらにUnicornを使用する場合、config/deploy.rb の末尾から次の1行を切り取り、config/deploy/production.rb の末尾に追加します。
require "capistrano-unicorn"

Chapter 14

  • 279ページの1行目「次に、秘密鍵ファイルの」から項「CSRの作成」の前まで
    • 1行目からHintまでの4行と次の4行(コマンド入力例を含む)を入れ替え、「次に」と「最後に」を入れ替える。
    • コマンド入力例の sudo chmod 400 example.com.keysudo chmod 400 example.com.key* と修正。

Appendix A

  • 288ページの末尾に節「pg(CentOSの場合)」を新設し、以下のコマンド実行例を追加。
bundle config build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config

補遺

Chapter 4

59ページの4行目

「以後、sshでリモートホストにログインする際にパスフレーズやパスワードの入力を求められなくなります。」とありますが、あなたがローカルマシンからログアウトしたり、ローカルマシンを停止・再起動した場合には、改めて入力を求められます。ssh-add コマンドを実行せずに、ssh コマンドや scp コマンドを実行した場合の動きは、ローカルマシンのOSによって異なります。

Ubuntu の場合には、「秘密鍵の解除」というタイトルのダイアローグボックスが開き、「パスワード」の入力が求められます。本来は、ここは「パスフレーズ」と表記すべきところで、おそらくは翻訳の間違いです。SSHの鍵ペアを作成したときに入力したパスフレーズを入力してください。

Chapter 7

170ページのHint

「ファイアウォールが設定されている場合は」とありますが、CentOSではデフォルトでファイアウォールが有効になっています。第13章の内容に従って、3000番ポートへのアクセスを許可してから、動作確認を行ってください。

Chapter 8

173ページの下から4行目以降

重要 /etc/selinux/configSELinux= で始まる行を SELinux=disable に変更するように書かれていますが、情報に誤りがあります。正確には、SELinux=disable ではなく SELINUX=disabled です。SELINUXはすべて大文字で、末尾に d が必要です。

また、同ファイルの末尾には SELINUXTYPE=targeted という記述もあります。誤ってこちらの値を disabled に変更しないよう気を付けてください。

Chapter 10

216ページ 本文の4-5行目

LimitRequestBody ディレクティブを指定する箇所は、VirtualHost ブロックのすぐ内側であればどこでも構いません。例えば、DocumentRoot ディレクティブの次の行で指定してください。

216ページ 本文の7-8行目

client_max_body_size ディレクティブを指定する箇所は、server ブロックのすぐ内側であればどこでも構いません。例えば、root ディレクティブの次の行で指定してください。

連絡先

本書へのご意見・ご感想、誤字脱字のご報告などは、 へ。

なお、本書の内容に関する技術的な相談・質問も受け付けております。その場合は、ページ番号と実行環境(OSの種類やRubyのバージョン等)を書き添えてください。本書の範囲から大きく外れる場合はお答えできない場合もございますので、あらかじめご了承ください。