1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
|
=begin
= mod_ruby FAQ
[((<ܼ|URL:index.ja.jis.html>))
|((<RD|URL:faq.ja.euc.rd>))]
* ((<mod_rubyȤϲǤ?>))
* ((<ɤmod_rubyǤޤ?>))
* ((<ХʥѥåϤޤ?>))
* ((<mod_rubyΥꥹȤϤޤ?>))
* ((<mod_rubyϰǤ?>))
* ((<Ť륹ץȤˤ̤ޤ?>))
* ((<Windowsưޤ?>))
* ((<LoadModuleȿǤޤ>))
* ((<ʤContent-Type֥饦ɽΤǤ?>))
* ((<饤֥ѹȿǤʤΤǤ?>))
* ((<SecurityErrorȯޤ>))
* ((<LocationإåϤƤ꤯ưޤ>))
* ((<CGI::Session꤯ưޤ>))
* ((<ʤ顼Фޤ>))
* ((<Apacheޤ>))
* ((<(({apachectl restart}))ǥޤ>))
* ((<libruby.soliberuby.soĤޤ>))
* ((<¸Υ饹Ǥޤ>))
== mod_rubyȤϲǤ?
mod_rubyRubyץApache(WWW)Ȥ߹ߡApacheľ
RubyCGIץȤ¹ԤǤ褦ˤޤ
mod_rubyȤȡ̾CGI⥹ץȤϹ®˵ưޤ
[((<ܼ|mod_ruby FAQ>))]
== ɤmod_rubyǤޤ?
mod_rubyθ֥((<URL:http://www.modruby.net/>))
Ǥޤ
[((<ܼ|mod_ruby FAQ>))]
== ХʥѥåϤޤ?
Debian GNU/LinuxFreeBSDǤɸѥåȤƤޤ
RPM((<Vine Linux|URL:http://www.vinelinux.org/>))Ƥޤ
[((<ܼ|mod_ruby FAQ>))]
== mod_rubyΥꥹȤϤޤ?
ѸΥꥹ((<URL:mailto:modruby@modruby.net>))
ܸΥꥹ((<URL:mailto:modruby-ja@modruby.net>)))ޤ
ɤˤ((<URL:mailto:modruby-ctl@modruby.net>))
뤤((<URL:mailto:modruby-ja-ctl@modruby.net>))ˡ
subscribe Your-First-Name Your-Last-Name
Τ褦ʸΥäƤ
[((<ܼ|mod_ruby FAQ>))]
== mod_rubyϰǤ?
ϡ֤ϤפǤ֤פǤ
mod_rubyΥǥեȤ$SAFEͤ1ʤΤǡCGIץޤΥߥˤä
ƥۡäƤޤǽ㤯ʤޤȤС
eval(cgi["foo"][0])SecurityErrorˤʤޤ
mod_rubyǤʣΥץȤĤRubyץѤ뤿ᡢ
륹ץȤХʾ֤ѹȡ¾ΥץȤˤƶ
ڤӤޤ
äơISPʤɤǿǤʤ¿Υ桼mod_rubyλѤ
褦ʤȤƤ
[((<ܼ|mod_ruby FAQ>))]
== Ť륹ץȤˤ̤ޤ?
Ť(¹Ի֤Ĺ)ץȤǤϵưˤ륳Ȥ
Ū˾ʤ뤿ᡢmod_rubyˤץȤκ︺
̤ϤޤʤΤǤϤʤȹͤͤ⤤뤫⤷ޤ
ƥȷ̤ˤȡºݤˤϤΤ褦ʥץȤǤ⡢ä
ٻ礭ʸ̤뤳ȤǧƤޤ
ϡmod_rubyǤϼ¹Ԥץ˸뤿ᡢ
ޥؤ٤ڸ뤿ȹͤޤ
[((<ܼ|mod_ruby FAQ>))]
== Windowsưޤ?
(ˤ)WindowsޥäƤʤΤǡޤưޤ
Apache 2.0ݡȤ褦ˤʤäư⤷ޤ
[((<ܼ|mod_ruby FAQ>))]
== LoadModuleȿǤޤ
httpd.confClearModuleListҤƤϡʹߤ
ʲΤ褦˵Ҥɬפޤ
AddModule mod_ruby.c
[((<ܼ|mod_ruby FAQ>))]
== ʤContent-Type֥饦ɽΤǤ?
ΥץȤmod_rubyǤưޤ
print "Content-Type: text/plain\r\n\r\n"
print "hello world"
mod_rubyNPH-CGIǤꡢHTTPơ饤
ϤʤǤ
Τ褦˼ʬHTTPơ饤Ϥɬפ
ޤ
print "HTTP/1.1 200 OK\r\n"
print "Content-Type: text/plain\r\n\r\n"
print "hello world"
뤤cgi.rbѤ뤳ȤǤޤ
require "cgi"
cgi = CGI.new
print cgi.header("type"=>"text/plain")
print "hello world"
ΥץȤΤΤ褤Ǥ礦
[((<ܼ|mod_ruby FAQ>))]
== 饤֥ѹȿǤʤΤǤ?
mod_rubyǤʣΥץȤǰĤRubyץͭޤ
(({require 'foo'}))¹Ԥ硢饤֥꤬ɤΤ
ǽΰʤΤǡθ(({require 'foo'}))¹ԤƤ
饤֥꤬Ƥӥɤ뤳ȤϤޤ
# apachectl stop
# apachectl start
ȤơApacheƵư뤫ǥХå(({require}))
(({load}))ȤäƤ
[((<ܼ|mod_ruby FAQ>))]
== SecurityErrorȯޤ
mod_rubyǤϥǥեȤ(({$SAFE}))ͤ(({1}))ˤʤ뤿ᡢ
줿ʸǴԤSecurityErrorȯޤ
ǤʤʬäƤϡ(({untaint}))
줿ʸƤ뤳ȤSecurityErrorǤޤ
query = CGI.new
filename = query.params["filename"][0].dup
filename.untaint
file = open(filename)
Ѱդ(({untaint}))ϥƥۡäƤޤǽ
ΤǡʬդƤ
[((<ܼ|mod_ruby FAQ>))]
== LocationإåϤƤ꤯ưޤ
HTTPơ饤200 OK֤(ǥեȤư)ȡ
LocationإåͿƤ⤽URL˥פƤޤ
r = Apache.request
r.status_line = "302 Found"
r.headers_out["Location"] = "http://www.modruby.net/"
r.content_type = "text/html; charset=iso-8859-1"
r.send_http_header
print "<html><body><h1>302 Found</h1></body></html>"
Τ褦˥ơ饤ꤹ뤫
r = Apache.request
r.headers_out["Location"] = "http://www.modruby.net/"
exit Apache::REDIRECT
Τ褦˽λơꤷƤ
[((<ܼ|mod_ruby FAQ>))]
== CGI::Session꤯ưޤ
mod_rubyǤCGI::SessionϼưŪ˥ޤ
äŪ˥Ƥɬפޤ
session = CGI::Session.new(...)
begin
...
ensure
session.close
end
CGI::SessionͭΤΤǤϤޤ
եʤɤƱͤ˥ɬפޤ
[((<ܼ|mod_ruby FAQ>))]
== ʤ顼Фޤ
ץȤΥХʤɤǥץξ֤ʤȡθ
ץȤμ¹Ԥ꤬Фǽޤ
Τ褦ʾApacheƵưƤ
[((<ܼ|mod_ruby FAQ>))]
== Apacheޤ
RubyΥѥegcs-1.1.2ȤäƤ硢ApacheSegmentation Fault
ޤ
ξ硢Rubyκǿ(1.6.2ʹ)ǻƤߤƤ
ʳξϺԤ((<Ľ|URL:mailto:shugo@modruby.net>))
𤷤ƤȤ꤬Ǥ
[((<ܼ|mod_ruby FAQ>))]
== (({apachectl restart}))ǥޤ
RubyAPIǤϥץmalloc()free()ˡʤᡢ
apachectl restart¹Ԥ뤿ӤˡApacheѤ꤬ƤäƤޤޤ
̡
# apachectl stop
# apachectl start
Τ褦ˡApacheäߤƤ顢Ƥӵư褦ˤƤ
[((<ܼ|mod_ruby FAQ>))]
== libruby.soliberuby.soĤޤ
餯libruby.soȡ뤵줿꤬¹ԻΥ饤֥
ѥˡޤޤƤޤ
¿Linuxǥȥӥ塼Ǥϡ/usr/local/libϼ¹ԻΥ饤֥
ѥ˴ޤޤޤ
mod_ruby/usr/localʲ˥ȡ뤹ϡΤ褦ʹԤ
/etc/ld.so.confɲäldconfig¹ԤƤ
/usr/local/lib
[((<ܼ|mod_ruby FAQ>))]
== ¸Υ饹Ǥޤ
mod_rubyץľܴ¸Υ饹뤳ȤϤǤޤ
(ˡ饹ޤ)
ʤʤ顢mod_rubyץȤKernel#load(filename, true)ˤä
ɤ뤫Ǥ
¸Υ饹ɬפϡ饤֥ǺԤ
mod_rubyץȤ餽Υ饤֥require褦ˤƤ
[((<ܼ|mod_ruby FAQ>))]
=end
|