1 34
100%
Actual Size
Fit Width
Fit Height
Fit Page
Automatic
mod_mruby について 京都大学 情報学研究科 松本 亮介
Mod mrubyについて
Embed Size (px)
344 x 292
429 x 357
514 x 422
599 x 487
DESCRIPTION
第3回 松本勉強会の資料です。mod_mrubyについて。
Citation preview
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.
LOAD MORE