Web技術勉強会 第19回
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Web技術勉強会 第19回

on

  • 3,574 views

Web技術勉強会 第19回

Web技術勉強会 第19回

Statistics

Views

Total Views
3,574
Views on SlideShare
3,282
Embed Views
292

Actions

Likes
1
Downloads
12
Comments
0

4 Embeds 292

http://blog.livedoor.jp 155
http://study.de.c.dendai.ac.jp 122
http://webcache.googleusercontent.com 10
http://www.slideshare.net 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Web技術勉強会 第19回 Presentation Transcript

  • 1. Web技術勉強会 第19回 ~Ruby on RailsのApache連携~ 2009/04/11 Ryuichi Tanaka http://blog.livedoor.jp/mapserver2007/ 1
  • 2. 今回の目標 Ruby on Railsをサーバで動かす Ruby on Railsのインストール mongrelの設定 Apacheとの連携 RadRailsで作成したRailsアプリのデプロイ 2
  • 3. Rubyインストール Ruby1.8.7をインストール Ruby1.9はgemのプラグインが対応していないものが 多いのでパス ソースからインストール Gemをインストール ruby setup.rb apt-getでのインストールは正常に動かないので非推 奨 3
  • 4. Railsインストール gemでインストール クライアントの開発環境のRailsとバージョンをあわせ る必要がある(2.2.xと2.3.xでは互換性がない) バージョンを指定してインストール ‫ ى‬gem install rails -v 2.2.2 4
  • 5. mongrelインストール mongrel Railsが動作するアプリケーションサーバ。WEBrickよりも初回起 動時の速度が速い。最近ではWEBrickより使われている。 RadRailsもmongrelに対応している。 gem install mongrel mongrelの問題点 単一プロセスに単一のインスタンスを生成して占有する。負荷分 散の点で問題あり。 コンソール上で起動させると、「Ctrl+C」を押すまで他の入力を受 け付けない。 5
  • 6. mongrel_clusterインストール mongrel単体の問題を解決できる 複数のmongrelを起動し、ロードバランサを使うことで負荷分散が 可能 コンソールが入力を受け付ける mongrel_clusterインストール・設定 gem install mongrel_cluster mongrel_rails cluster::configureで設定ファイル作成 mongrel_rails cluster::startで起動 mongrel_rails cluster::stopで停止 6
  • 7. ここからが本題 ApacheからRailsプロジェクトを認識させたい RailsはApacheでは動作しない かといって、mongrelだけで動かすのは…。 Apacheとmongrelを連携 または ApacheからRailsを認識させる必要あり 7
  • 8. 連携方法1 Apache+mongrel_cluster+Pound Poundを利用してリバースプロキシ ‫ ى‬フロントエンドにPoundがいて、バックエンドのApache、mongrelに振 り分け ‫ ى‬pound.cfgのプロキシルールによって振り分け PHP Apache Port:81 Perl Client Pound Port:80 mongrel Rails pound.cfg Port:3000 8
  • 9. 連携方法2 Apache+Passenger(mod_rails) ApacheのRails拡張モジュール ‫ ى‬mongrelなどのアプリケーションサーバが不要で、振り分けの 必要がない Apache Rails Client httpd.conf Port:80 PHP/Perl 9
  • 10. 連携方法3 Apache+mongrel_cluster+mod_proxy Apacheモジュールのmod_proxy ‫ ى‬フロンエンドがApache、バックエンドがmongrel ‫ ى‬振り分けはApacheが行う Apache mongrel Client Port:3000 Rails httpd.conf Port:80 PHP Perl 10
  • 11. 連携方法の比較 連携1 連携2 連携3 導入のしやすさ △ ○ △ パフォーマンス ○ ○ ○ ・Railsを動作させる環境構築方法はいくつもあるが、上記の場合はどれも コスト面で変わらない。 ・Rails(Ruby)を動かす環境としてCGI以外なら大抵OK。 ・連携3は、Apache2.2系にすることがお勧め。mod_proxy_balancerを使えば、 連携1同様バランシングができる。 ※連携1:Apache+mongrel_cluster+Pound ※連携2:Apache+Passenger(mod_rails) ※連携3:Apache+mongrel_cluster+mod_proxy 11
  • 12. 採用したのは連携3 連携1、連携2はうまくいかなかった 連携1:192.168.0.103:3000へ振り分ける設定 をしたが、なぜかForbiddenになる。 連携2:Railsのpublicは見れるが、肝心のRails プロジェクトへたどり着けず、Forbiddenになる。 ただし連携3もベストじゃない mongrel_clusterを活かすには mod_proxy_balancerにしたほうがいい。 12
  • 13. RadRailsで作成したRailsアプリのデプロイ 基本的にコピーでOK ただしRailsのバージョンが一致していること 開発方法 RadRails上で開発、動作確認 データベースはサーバ上に直接問い合わせる production,development,testの3パターンがあ るが、一人で開発する分にははじめから prodcutionで問題ない 13
  • 14. Railsの構成はPHPやPerlとは違う Apache+PHP/Perlの場合 /var/www or /usr/local/apache2/htdocs http://mydomain.jp/sample.php sample.php Client sample.pl http://mydomain.jp/sample.pl ドキュメントルートからの相対パスでファイルを実行する 14
  • 15. Railsの構成はPHPやPerlとは違う mongrel+Railsの場合 RAILS_ROOT /app/controllers /app/views http://mydomain.jp:3000 Client routes.rb images javascripts index.html stylesheets /public routes.rbのルールに従ってcontrollerのactionを実行 15
  • 16. RailsとPHP/Perlの共存は注意が必要 Railsは構成がまったく異なる Railsはデフォルトでは 「RAILS_ROOT/public/index.html」を読みにいく。 routes.rbを設定することで 「RAILS_ROOT/app/controllers」のメソッド(action)を実 行する。 Apacheで動かすアプリの感覚でRailsを動かそうとする とうまくいかない(RailsはApacheではなく、mongrelなの で当然)。 16
  • 17. 今後の予定 Railsアプリ開発 Railsのルールを理解する必要がある ‫ ى‬データベースを使ってみる(Model) ‫ ى‬ORM(ActiveRecode)を理解する(Model) 基礎Ruby on Rails ‫ ى‬Rubyの構文を覚える たのしいRuby ‫ ى‬Rails標準のメソッドを覚える Railsレシピブック 17