Railsデプロイ

[cover photo]
TOPICS
Programming , Web , Ruby
発行年月日
PRINT LENGTH
276
ISBN
978-4-87311-400-2
原書
Deploying Rails Applications
FORMAT
PDF
Ebook
3,080円
Ebookを購入する

Railsアプリケーションをデプロイしようとするとさまざまな問題が生じるため、Railsアプリケーションの開発は好きだけれどもデプロイは嫌いという技術者は少なくありません。本書はアプリケーションのデプロイ時に技術者が直面するさまざまな問題の解決策を体系的にまとめたRailsデプロイガイドです。本書ではまずRailsアプリケーションのデプロイを家探しにたとえて解説します。そして、一連のデプロイ処理の中で、Railsアプリケーションのホスティング方式の選択、デプロイの自動化、サーバ管理、クラスタリング手法といった高度なトピックについて詳しく解説します。


サンプルPDF
監訳者まえがき、賞賛の声、まえがき
6章
8章

関連ファイル

目次

監訳者まえがき
賞賛の声
まえがき
1章 実運用環境に適したアプリケーション
    1.1 背景
    1.2 ソースコード管理
        1.2.1 RailsとSubversion
        1.2.2 デプロイ用の安定したブランチ
    1.3 Subversionのヒント
        1.3.1 Edge Railsの利用
        1.3.2 自動生成されたコードのチェックイン
    1.4 アプリケーションの安定化
        1.4.1 プラグインやGemのロックダウン
        1.4.2 圧縮解除したGemの更新
        1.4.3 Railsのフリーズ
    1.5 Active Recordのマイグレーション
        1.5.1 マイグレーションの長所と短所
        1.5.2 マイグレーションの簡単な例
        1.5.3 マイグレーションにクラスを定義する
        1.5.4 マイグレーションのヒント
    1.6 デプロイを意識したアプリケーション
        1.6.1 セキュリティの問題
        1.6.2 データベースのパフォーマンスに関する問題
2章 共有ホスト
    2.1 背景
    2.2 共有ホストの選択
        2.2.1 基本的な要件
        2.2.2 Railsのコアライブラリ
        2.2.3 目に見えない要件
    2.3 ドメイン名とDNSのセットアップ
    2.4 サーバの設定
        2.4.1 ドキュメントルートとSSHのセットアップ
    2.5 データベースの作成
    2.6 アプリケーションのインストール
        2.6.1 動作確認用アプリケーションの作成
    2.7 Webサーバの設定
        2.7.1 Mongrelの設定
        2.7.2 ApacheとFastCGIの組み合わせ
        2.7.3 lighttpd
    2.8 Railsの設定ファイル
        2.8.1 config/database.yml
        2.8.2 環境変数RAILS_ENVの指定
    2.9 共有ホストに適したアプリケーション
        2.9.1 1つのアカウントに1つのアプリケーション
        2.9.2 メモリを浪費しない
    2.10 トラブルシューティングのチェックリスト
        2.10.1 RailsとWebサーバのエラーログを読みましょう
        2.10.2 ファイルのアクセス権は適切ですか?
        2.10.3 Rubyのバイナリへのパスは正しいですか?
        2.10.4 セッションテーブルは存在しますか?
        2.10.5 必要なファイルはすべて存在しますか?
        2.10.6 環境変数RAILS_ENVは正しくセットされていますか?
        2.10.7 データベースは存在し、正しく動作していますか?
        2.10.8 正しいバージョンへのマイグレーションが行われていますか?
    2.11 まとめ
3章 仮想ホストと専用ホスト
    3.1 背景
        3.1.1 自分だけのホストとその管理
    3.2 VPS
        3.2.1 メモリの割り当て
        3.2.2 軽量なWebサーバ
    3.3 専用サーバ
    3.4 サーバのセットアップ
        3.4.1 サーバの設定
        3.4.2 GCCのツール群のインストール
        3.4.3 RubyとRubyGemsのインストール
        3.4.4 MySQLのインストール
        3.4.5 nginxとFastCGIのインストール
        3.4.6 ImageMagickとRMagickのインストール
        3.4.7 Subversionのインストール
        3.4.8 動作確認
    3.5 まとめ
4章 Capistrano
    4.1 背景
    4.2 Capistranoの仕組み
        4.2.1 Capistranoのファイル構成
    4.3 サーバ側とクライアント側での準備
        4.3.1 Capistranoのインストール
        4.3.2 デプロイ用設定ファイルの生成
        4.3.3 config/deploy.rbのカスタマイズ
        4.3.4 Subversionへのアプリケーションのインポート
        4.3.5 ドキュメントルートの設定
        4.3.6 サーバ上にパスワードをキャッシュする
        4.3.7 deploy:setupタスクとdeployタスクを実行する
        4.3.8 内部処理
    4.4 標準のレシピ
    4.5 タスクの作成
        4.5.1 変数の設定
        4.5.2 タスクを定義する
        4.5.3 ロールを指定する
        4.5.4 Rakeとの違い
    4.6 補足
        4.6.1 stream
        4.6.2 デプロイ以外の処理
        4.6.3 プッシュ形式のデプロイ
    4.7 トラブルシューティング
        4.7.1 currentディレクトリの混同
        4.7.2 コードと同期していないマイグレーション
        4.7.3 デプロイ後も保持されるのはlogディレクトリとpublic/systemディレクトリの内容だけ
        4.7.4 ユーザのアクセス権
    4.8 まとめ
5章 Mongrelの管理
    5.1 背景
    5.2 Mongrelを制御する
        5.2.1 クラスタの設定
        5.2.2 Mongrelをサービスとして実行する
    5.3 番犬の設定
    5.4 FastCGIの管理
        5.4.1 FastCGIのゾンビプロセス
        5.4.2 reaperコマンド
    5.5 エラーの通知
    5.6 ハートビート
    5.7 まとめ
6章 スケールアウト
    6.1 背景
    6.2 クラスタリングによるスケールアウト
        6.2.1 作業の準備
    6.3 仮想マシン環境のコピー
        6.3.1 手作業による環境全体のコピー
        6.3.2 ツールによる設定作業の自動化
        6.3.3 仮想化ソフトウェアによるコピーの自動化
        6.3.4 手作業による各サーバでの設定作業
        6.3.5 仮想マシン環境をオフラインでも保持する
        6.3.6 サードパーティのツール
    6.4 ドメイン名とホスト
        6.4.1 名前の付け方
    6.5 複数のホストへのデプロイ
        6.5.1 負荷分散の選択肢
        6.5.2 3台以上のサーバでの設定
        6.5.3 Webサーバとアプリケーションサーバの違い
    6.6 Apacheによる負荷分散
        6.6.1 Webサーバへの「関心の分離」の適用
        6.6.2 前提条件
        6.6.3 Apacheによるロードバランサ
    6.7 nginxによる負荷分散
        6.7.1 起動、停止、再読み込み
        6.7.2 nginxの設定
        6.7.3 仮想ホストの定義
        6.7.4 保護された接続
        6.7.5 さらなる性能向上のために
    6.8 MySQLのクラスタ
        6.8.1 MySQLをクラスタ化する際の問題
        6.8.2 マスタ/スレーブ間での複製(読み出しと書き込みの分離)
        6.8.3 マルチマスタ(読み書き両用データベースのクラスタ化)
        6.8.4 両アプローチの組み合わせ
    6.9 まとめ
7章 Windows環境でのデプロイ
    7.1 サーバのセットアップ
        7.1.1 Ruby on Railsのインストール
        7.1.2 Subversionのインストール
        7.1.3 Microsoft SQL Serverを利用するための設定
        7.1.4 Windows版MySQL
    7.2 Mongrel
        7.2.1 Mongrelのインストール
        7.2.2 Mongrelの動作確認
        7.2.3 Windowsサービスとしてのインストール
    7.3 MongrelとPen
        7.3.1 Penのセットアップ
        7.3.2 Penを使った負荷分散
        7.3.3 Windowsサービスとしてのインストール
    7.4 Apache 2.2とMongrel
        7.4.1 Apacheのインストール
        7.4.2 負荷分散のための設定
        7.4.3 Proxyディレクティブ
        7.4.4 動作確認
        7.4.5 Windowsサービスとしてのインストール
    7.5 IISとの統合
        7.5.1 ISAPI_Rewriteのインストール
        7.5.2 アプリケーションへのリクエストの転送
        7.5.3 動作確認
    7.6 リバースプロキシとURL
        7.6.1 reverse_proxy_fixプラグインのインストール
        7.6.2 reverse_proxy_fixプラグインの利用法
    7.7 複数のアプリケーションをホスティングする際の指針
        7.7.1 IISとMongrelを使い、複数の小規模なアプリケーションを提供する
        7.7.2 複数の大規模なアプリケーションを提供する
        7.7.3 Windows上でのパフォーマンス
    7.8 アプリケーションに対する負荷テスト
    7.9 Windows環境へのデプロイについてのまとめ
    7.10 Windows環境からのデプロイ
        7.10.1 dispatch.fcgiが利用するRubyのインタプリタ
        7.10.2 改行コード
        7.10.3 アクセス権
        7.10.4 デプロイ時のヒント
    7.11 まとめ
8章 パフォーマンス
    8.1 背景
    8.2 初回のベンチマーキング、Mongrelインスタンスの個数に関する検討
    8.3 プロファイリングとボトルネック
        8.3.1 ruby-prof
        8.3.2 Railsに組み込みのモデル用プロファイラ
    8.4 よくあるボトルネック
        8.4.1 :includeとN+1問題
        8.4.2 Active Recordの性能を向上させるテクニック
    8.5 キャッシュ
        8.5.1 ページキャッシュ
        8.5.2 ページキャッシュの消去
        8.5.3 アクションキャッシュ
        8.5.4 フラグメントキャッシュ
        8.5.5 キャッシュのバックエンド
    8.6 まとめ
9章 最先端のソフトウェア
    9.1 YARV
    9.2 Rubinius
    9.3 JRuby
    9.4 IronRuby
    9.5 終わりに
付録A nginxの設定例
付録B FastCGIを利用したApacheの設定
付録C 参考文献
索引
コラム目次
    Capistranoと安定したブランチからのデプロイ
    ホスティング業者が提供するサブドメイン
    SSHのセキュリティを強化する
    最新版のRubyをソースコードからビルドする
    空のRailsプロジェクトで練習しよう
    Mac OS XでのRubyの再インストール
    Apacheやlighttpdでメンテナンスページを表示させる
    自作のタスクを簡単に呼び出す
    オペレーティングシステムの起動時にMongrelも起動させる
    Red HatやCentOSでのMonitのビルド
    Windowsでの仮想化のメリット
    relative_url_rootについての注意
    アプリケーション、ユーザ、そしてリクエスト
    テストのコツ
    誤ったアプローチ