Presentation is loading. Please wait.

Presentation is loading. Please wait.

rails under “production”

Similar presentations


Presentation on theme: "rails under “production”"— Presentation transcript:

1 rails under “production”
もろはし 帰属 2.1 日本

2 rails アプリを"production"で動かす
scaffold で雛型生成。 script/server でlighttpdを起動。 test/*で楽々TDD。 ・・できた!! で、そのあとは・・・?

3 fcgiを使ってrailsアプリを動かす
いろんな選択肢が。 apache ←→ lighttpd 全サーバ同居 ←→ サーバの分離 単一アプリ ←→ multiple アプリ

4 apacheで動かす mod_fastcgi.soはあらかじめロードしておく。
Add-handler fast-cgi .fcgi もやっておく。 ポイントはdispatch.fcgiの呼び出しと fcgiプロセスの起動 httpd.conf DocumentRoot /var/webapp/saihu/current/public FastCgiServer /var/webapp/saihu/current/public/dispatch.fcgi \ -initial-env RAILS_ENV=production \ -initial-env RAILS_ROOT=/var/webapp/saihu/current \ -processes 2 public/.htaccess RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

5 lighttpdで動かす config/lighttpd.confを参考に
こちらのポイントも404時のdispatch.fcgiの 呼び出し(error-handler-404)と fcgiプロセスの起動 lighttpd.conf server.modules = \ ( "mod_rewrite", "mod_accesslog", "mod_fastcgi" ) server.error-handler-404 = "/dispatch.fcgi" server.document-root = "public/" fastcgi.server = ( ".fcgi" => ( "localhost" => ( "min-procs" => 1, "max-procs" => 1, "socket" => "log/fcgi.socket", "bin-path" => "public/dispatch.fcgi", "bin-environment" => ( "RAILS_ENV" => "production" ) )))

6 apacheでAPサーバを分ける DocumentRootの設定は前と同様に。
FastCgiExternalServerディレクティブを使う httpd.conf FastCgiExternalServer \ /var/webapp/saihu/current/public/dispatch.fcgi \ -host my_ap_server:7000 APサーバ側ではあらかじめfcgiプロセスを 起動しておく $ ruby script/process/spinner -c \ 'ruby script/process/spawner -p 7000' your shell

7 lighttpdでAPサーバを分ける こちらもAPサーバはあらかじめ起動しておく。 “port”はクォート'”'不要。
RAILS_ENVの制御はAPサーバ側で。 lighttpd.conf fastcgi.server = ( ".fcgi" => ( "localhost" => ( "host" => “my_ap_server”, "port => 7000 ) )) your shell $ ruby script/process/spinner -c \ 'ruby script/process/spawner -p 7000'

8 apacheで複数アプリ共存 Aliasを使ってrailsアプリのpublicを指定
httpd.conf Alias /saihu /var/webapp/saihu/current/public railsアプリ側のpublic/.htaccessで RewriteBaseを指定 httpd.conf RewriteBase /saihu RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

9 lighttpdで複数アプリ共存(1) alias.urlでaliasを設定
へのアクセス時に、 専用の404ハンドラを設定(ポイント(1)) 上記で設定したハンドラへのアクセスで fcgiプロセスを呼び出すように lihttpd.conf alias.url = ( "/saihu" => "/var/webapp/saihu/current/public" ) $HTTP["url"] =~ "^/saihu/" { server.error-handler-404 = "/saihu/dispatch.fcgi" } fastcgi.server = ( "/saihu/dispatch.fcgi" => (( "host" => " " , "port" => 7000 , )))

10 lighttpdで複数アプリ共存(2) rails側には/saihu/controller/actionというrequest が渡るので、"/saihu"は無視するよう設定 (ポイント(2)) config/environment/production.rb ActionController::AbstractRequest.relative_url_root = "/saihu" lighttpd 以降 fastcgi.server内で ”strip-request-uri"という設定が可能。 →画像やCSSへのリンクが/imagesになるので  注意を。(/saihu/imagesではない)

11 ご静聴ありがとうございました おわり (id:osakanasさん、ありがとうございました)
【参考 - lightyの設定】 /lighttpd and-multiple-rails-apps (id:osakanasさん、ありがとうございました)


Download ppt "rails under “production”"

Similar presentations


Ads by Google