mod mrubyについて
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.