mod mrubyについて

34
mod_mrubyについて 京都大学 情報学研究科 松本 亮介

Upload: ryosuke-matsumoto

Post on 12-Nov-2014

3.814 views

Category:

Technology


0 download

DESCRIPTION

第3回 松本勉強会の資料です。mod_mrubyについて。

TRANSCRIPT

  • 1. mod_mruby
  • 2. 1. 2. Apache3. mruby4. mod_mruby5. 6.
  • 3. 1.
  • 4. Web Web Web Web Web Web Web [1][1] , , , Web, 2011, 2011,31-38 (2011-11-24).
  • 5. Web Apache C Apache OSS C CApache
  • 6. Apache mod_mruby murby C RubyApache mod_mruby 1. 2. 3. 4. Web
  • 7. 2. Apache
  • 8. Apache Apache Apache Apache C Apache module 1 Apache module 2 Apache Apache Apache module 3 Core API Apache module n
  • 9. Apache C C Apache Apache
  • 10. mod_perlmod_rubymod_pythonmod_lua Apache module 1 Apache module 2 Apache module n Apache Apache Core API script 1 script 2 mod_perl API script n
  • 11. 1. 2. 3. API Web3 mruby mod_mruby
  • 12. 3. mruby
  • 13. mruby C Lua WebRuby 2010 Ruby Cmruby 1. 2. Ruby 3. Ruby 4. C99C 5. 6. OSFilesystem
  • 14. mruby require mrubfromC def test a = getfromC(string) C mruby : pushtoC(a) end test()#include mruby.h :int main(){ mrb_state *mrb = mrb_open(); // struct mrb_parser_state *p = mrb_parse_file(mrb, mrb_file); // int n = mrb_generate_code(mrb, p->tree); // mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_nil_value()); //VM mrb_close(mrb); return 0;}
  • 15. mruby mruby C mruby C RiteVM) OS
  • 16. 4. mod_mruby
  • 17. mod_mruby 1. mod_perlmod_ruby mrubyApache 2. mrubyApache mod_lua 3. API mod_luaAPI Apache
  • 18. mod_mruby API Apache module 1 Apache module 2 Apache module n Apache Apache Core API mruby script 1 mruby script 2 mod_mruby API mruby script n
  • 19. mod_mruby Apache API Apache accept request hook 1 hook 2 mruby script aApache mod_mruby API Core hook n mruby script b return response
  • 20. mod_lua Lua Lua_state mod_lua Lua VM
  • 21. mrubyLua Apache 11 Lua function Web mruby C mruby
  • 22. mod_mruby mruby 1 1 mrb_state mod_mruby mruby VM
  • 23. mod_mruby Apachemruby mrb_stateVM 1 A VM A 2 mrb_state) A 1 B VM B mrb_state) 2 B
  • 24. mod_mruby redirec.html ApacheURL Apache LoadModule mruby_module modules/mod_mruby.so mrubyTranslateNameMiddle /path/to/mapper.mrb mruby require Apache r = Apache::Request.new() Apache.rputs(Redirecting your access!!) r.filename = "/var/www/html/redirect.html Apache.return(Apache::OK)
  • 25. 5.
  • 26. Web Apachemod_luamod_mruby URLHello World 100300010 CPU Intel Core2Duo E8400 3.00GHz Memory 4GB NIC Realtek RTL8111/8168B 1Gbps OS CentOS 5.6 Web CPU Intel Xeon X5355 2.66GHz Memory 8GB NIC Broadcom BCM5708 1Gbps OS CentOS 5.6 Middle Ware Apache 2.2
  • 27. Apcahe Apachemod_helloC mod_mrubymruby mod_luaLua Apache module (mod_hello) Apache Apache API mruby script 1 mod_mruby Core API mod_lua API Lua script 1 require "apache2"require Apache function uri2file(r)Apache.rputs(Hello World) r:puts(Hello World") return apache2.OKApache.return(Apache::OK) end
  • 28. #include "httpd.h"#include "http_config.h"#include "http_protocol.h" mod_hello#include "ap_config.h"static int hello_handler(request_rec *r){ if (strcmp(r->handler, "hello")) { return DECLINED; } r->content_type = "text/html"; if (!r->header_only) ap_rputs("The sample page from mod_hello.cn", r); return OK;}static void hello_register_hooks(apr_pool_t *p){ ap_hook_handler(hello_handler, NULL, NULL, APR_HOOK_MIDDLE);}module AP_MODULE_DECLARE_DATA hello_module = { STANDARD20_MODULE_STUFF, NULL, /* create per-dir config structures */ NULL, /* merge per-dir config structures */ NULL, /* create per-server config structures */ NULL, /* merge per-server config structures */ NULL, /* table of config file commands */ hello_register_hooks /* register hooks */};
  • 29. mod_mruby 12.1%(mod_hello mod_lua 50.5%(mod_hello)
  • 30. mod_hello mod_mruby12.1% mod_lua50.5% mod_mrubymod_lua mrb_state mod_mruby70% 4 mruby
  • 31. 6.
  • 32. mod_mruby C12.1% mod_lua 1 mruby
  • 33. Nginxngx_mruby mrubyWeb mruby script 1Nginx Nginx ngx_mruby mruby script 2Core API mruby API mruby script 3 for Web mruby script n Apache Apache mod_mruby Core API
  • 34.