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 ������ ����ġ ���� �����ͺ��̽��� �ø��� ����� �ȵȴ�.