Apache HTTP Server Version 2.4

| õ | õ þ |
|---|---|
CGI (Common Gateway Interface) CGI α Ȥ CGI ũƮ θ, ( ) ܺ α ϴ Ѵ. Ʈ ϰ ̴. ġ CGI ϴ Ұϰ, CGI α ۼغ.
CGI α ùٷ Ϸ CGI ϵ ġ ؾ Ѵ. ϴ .
ScriptAlias
þ ϸ ġ Ư 丮 CGI α
д. ġ 丮 ִ CGI
α̶ Ͽ Ŭ̾Ʈ ڿ ûϸ ڿ
Ϸ õѴ.
ScriptAlias
þ Ѵ.
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
ġ ⺻ ҿ ġ
httpd.conf Ͽ ִ ̴. ScriptAlias þ Alias þ URL
պκ Ư 丮 Ѵ.
Alias
ScriptAlias DocumentRoot 丮 ۿ ִ
丮 Ѵ. Alias
ScriptAlias
ScriptAlias ߰ URL պκ
ϴ CGI α ϴ ̴.
ġ /cgi-bin/
ϴ ڿ ûϸ
/usr/local/apache2/cgi-bin/ 丮
ãƼ CGI α ó϶ ˸.
, URL
http://www.example.com/cgi-bin/test.pl
ûϸ ġ
/usr/local/apache2/cgi-bin/test.pl
Ͽ ȯѴ. ϰ డϸ
ε ؾ Ѵ. ġ
.
Ȼ CGI α ScriptAlias 丮
Ѵ. ڴ CGI α
ִ ִ. ġ
ߴٸ ƹ 丮 CGI α
. , UserDir þ Ͽ
ڰ ڽ Ȩ丮 츦
. ڰ ڽ CGI α ϰ
cgi-bin 丮 ٱ ٸ, ٸ
CGI α ϰ ̴.
ƹ 丮 CGI Ϸ
ʿϴ. , AddHandler SetHandler þ Ͽ
cgi-script ڵ鷯 ۵ؾ Ѵ. ι°,
Options þ
ExecCGI ؾ Ѵ.
ּϿ Options þ Ͽ Ư
丮 CGI ִ.
<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>
þ ġ CGI Ѵ.
CGI ˷ Ѵ. AddHandler þ
Ȯڰ cgi pl
CGI α̶ ˸.
AddHandler cgi-script .cgi .pl
.htaccess 丮
httpd.conf ٱ 쿡 CGI α
ִ ˷ش.
Ʒ ϸ 丮 .cgi
CGI α Ѵ.
<Directory /home/*/public_html>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
ϸ 丮 cgi-bin
丮 ִ CGI α νѴ.
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>
``Ϲ'' αְ CGI α ̿ ΰ ֵ ִ.
ù° ̴ CGI α ٸ ϱ MIME-type ؾ Ѵٴ ̴. HTTP Ŭ̾Ʈ Ŭ̾Ʈ ްԵ ̸ ˸. .
Content-type: text/html
ι° ̴ HTML Ȥ ִ ؾ Ѵٴ ̴. κ HTML , gif HTML ƴ ϴ CGI α ۼϴ 쵵 ִ.
ΰ ϰ CGI α ۼ ̹ ٸ α ſ ϴ.
CGI α .
״ first.pl̶ Ͽ ϰ,
cgi-bin 丮 Ѵ.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
Perl ͼ ʴ Ͼ
ִ. ù° ġ(Ȥ ϴ )
/usr/bin/perl ġ ִ Ͽ
α ϶ ˸. ι°
content-type ϰ carriage-return ٹٲ
ι Ѵ. ڿ HTTP ϴ
, Ѵ. ° "Hello, World."
ڿ Ѵ. ̰ ̴.
ϰ ּҸ ԷѴ
http://www.example.com/cgi-bin/first.pl
Ҹ Էϸ, â Hello, World.
δ. е , ѹ ϴ
ٸ õ ִ.
CGI α Ҷ ִ ⺻ װ.
Content-Type Ͽ ȮѴ. Ű ϶.
, ϸ Ư (
nobody www) Ѵ.
Ϸ ʿϴ.
Ͽ nobody ϱ
ֱ ο ش.
chmod a+x first.pl
, α ٸ аų ٸ Ͽ ʿϴ.
α ϸ ڵ
ȴ. , PATH
ã Ҹ ˷ش.
α CGI α Ҷ
PATH ٸ ִ. ( ,
sendmail ) CGI α ȿ ϴ
ɾ η ؾ ɾ ã
ִ.
CGI α ù° ٿ
ũƮ ( perl) ο
Ѵ.
#!/usr/bin/perl
ȮѴ.
, CGI α ٸ ȯ溯 Ѵٸ ġ α ؾ Ѵ.
CGI α ϴ κ α ü ̴. Ư ΰ Ǽ ʾҰ ִٸ . ϱ α غ. , Ѵ.
cd /usr/local/apache2/cgi-bin
./first.pl
(perl .
ġ ũƮ ù° ٿ ִ Ͽ
ãƾ Ѵ.)
α Content-Type
HTTP ϰ ؾ Ѵ. ٸ
Ѵٸ ġ Premature
end of script headers ȯѴ. ڼ
CGI α ۼϱ ϶.
α״ ̴. ߸Ǹ α . α Ѵ. Ʈ ȣϴ α ϰ Ѵٸ, Ƹ ٸ ü ˾ƺ Ѵ. α , κ ľϿ ذ ִ.
suexec α
ϸ ȣƮ Ȥ 丮 ִ
CGI α ٸ ִ.
Suexec ſ ϰ ˻ϸ, ˻縦 ϳ
ϸ CGI α ʰ Premature
end of script headers ȯѴ.
suexec ϰ ִ ˷ apachectl -V
Ͽ SUEXEC_BIN ġ ȮѴ. ġ
Ҷ ҿ suexec ߰ϸ, suexec
ִ.
suexec ߴٸ ؼ ȵȴ.
suexec SUEXEC_BIN ġ
ִ suexec (Ȥ ϸ
ٲٰ) ϸ ȴ. suexec
ϰ ʹٸ, suexec -V Ͽ suexec
α ġ ˾Ƴ αϿ Ģ
ִ ã´.
CGI αֿ ͼ ڿ ϸ ȴ. ü ϴ ϴ ̴. "Hello, World." ϴ α ۼ ̷ α ̴.
ȯ溯 ǻ ϴ
ٴϴ ̴. ȯ溯 path (ǻͰ Է
ɾ شϴ ã ), ڸ, ̳
. Ϲ ȯ溯
Ʈ env ԷѴ.
CGI Ҷ ȯ溯 ȯѴ. (Netscape, IE, Lynx), (ġ, IIS, WebSite), ϴ CGI α ִ.
CGI αӴ ̷ ְ, ȯ溯 Ŭ̾Ʈ- ſ Ϻκ Ѵ. ü ʼ http://hoohoo.ncsa.uiuc.edu/cgi/env.html ִ.
Ʒ Perl CGI α ڽſ
ȯ溯 ش. ġ cgi-bin
丮 ̿ α ΰ ִ.
ʼ̰ ̴. Ͽ
δ. , ġ ⺻ ϴ ȯ溯
ܿ ȯ溯
߰ ִ.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
print "$key --> $ENV{$key}<br>";
}
, Ŭ̾Ʈ ǥԷ(STDIN)
ǥ(STDOUT) Ѵ. ϻ
STDIN Ű峪 α óϴ
Ÿ, STDOUT ܼ̳ ȭ Ѵ.
CGI α (form) POSTϸ
Ŀ Է ڷḦ Ư CGI α
STDIN Ѵ. α Ű峪
Ͽ ڷḦ óϵ ڷḦ ó ִ.
"Ư " ſ ϴ. ̸ ȣ(=) ϰ, ̸ ֵ ۻ(&) Ѵ. , ۻ, ȣ ڿ ڴ ȥ ʵ 16 ȯѴ. ڷ ڿ .
name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey
URL ڿ ̷ ڿ ȴ.
ڿ QUERY_STRING̶ ȯ溯 Ѵ.
̸ GET û̶ Ѵ. FORM
± METHOD Ӽ Ͽ HTML (form)
ڷḦ GET POST Ѵ.
α ̷ ڿ ɰ Ѵ. ̷ ڷ ó CGI α ٸ Ǵ ̺귯 ִ.
CGI α ۼҶ ۾ ִ ڵ ̺귯 Ȥ غ Ѵ. ̷ ϸ װ ٰ α ִ.
Perl CGI α ۼѴٸ CPAN ã
ִ. CGI ߿ θ Ǵ
CGI.pm̴. κ α ּ
CGI::Lite ִ.
C CGI α ۼѴٸ .
ϳ http://www.boutell.com/cgic/
ִ CGIC ̺귯.
ſ CGI ִ. comp.infosystems.www.authoring.cgi CGI ִ. HTML Writers Guild -servers ϸƮ ã Ǹ Ҵ. http://www.hwg.org/lists/hwg-servers/ ִ.
CGI α ۿ CGI Ծ о . NCSA ְ, ʾ Common Gateway Interface RFC Ʈ ִ.
ϸƮ 쿡 ݰ ִ CGI Ҷ , ٸ, ϴ , CGI α ۼ , ϸ ش ڵ带 ڼ . ذå ã .
ġ ҽڵ尡 ߸Ǿٰ Ȯ ʴ CGI ġ ͺ̽ ø ȵȴ.