1. CGI는 Common Gateway Interface의 약자입니다. 쉬운 말로 의역해서
설명하자면 두 개 이상의 컴퓨터간에 자료를 주고 받는 프로그램 또는 주고
받는 것 자체를 말하는 겁니다.
2. 웹페이지는 HTML 언어에 의해서 기본적으로 만들어 집니다.
하지만 HTML만으로 모든 정보를 다 처리할 수 없습니다. 왜냐하면 HTML
언어는 서버로부터 HTML 문서를 보여주는 역할만 할 분이기 때문입니다.
따라서 홈페이지를 양방향으로 만들 필요성이 있는 겁니다.
3. 이를 위하여 여러가지 방법을 고안해 내고 있는 겁니다. 그 중 하나가 외부
프로그램을 수행하여 그 결과를 HTML 형태로 보여주는 방식입니다.
이것을 CGI라고 하는 겁니다.
4. 넓은 의미로 CGI를 수행하는 프로그램을 CGI라고 하기도 합니다. 대표적
인 예가 게시판, 방명록, 메모장 등입니다.
5. 이 CGI프로그램은 통상적으로 C/C++ 나 PERL 혹은 UNIX Shell, PHP 등
을 사용합니다. 가장 보편적인 언어는 Perl이며 이 홈의 대부분의 CGI 가
Perl로 되어 있습니다.
6. 따라서 초보자들은 CGI라는 말을 이해할 때 어렵게 생각할 필요가 없습니
다. 마음씨 좋은(?) 프로그래머가 만들어 놓은 소스를 약간만 수정하여
사용할 수 있는 겁니다. 다행스럽게도 많은 프로그래머는 CGI를 직접
만들어 쓸 수 없는 무지한(?) 사람을 위해서 혹은 자기의 실력을 뽐내기
위해서 혹은 연습 삼아 만들어 무료로 배포하고 있습니다.
7. 이 홈에서 소개하고 있는 것도 소스가 공개된 게시판, 방명록, 메모장,
폼메일, 회원관리, 카운터 등 다양한 CGI 프로그램입니다.
8. 이들 프로그램을 설치하기 위해서는 그 어려운 컴퓨터 언어들을 알
필요가 없습니다. 몇 가지 설정에 필요한 내용만 알고 있으면 이용할 수
있습니다.
9. 프로그램이 설치될 서버의 세팅, FTP프로그램 사용법, 퍼미션 변경하는
법 등 이 홈에서 설명해 놓은 정도만 이해하고 있어도 대부분의 공개
CGI를 설치할 수 있는 겁니다.
10. 물론 전문적인 프로그래밍을 하기 위해서는 언어자체를 공부해야 합니다.
그 분들에겐 이 홈페이지가 별로 도움이 안될 겁니다. 이 홈은 단순히 CGI
프로그램을 설치하여 이를 홈페이지에 링크하고 홈페이지를 동적으로
만드는 정도의 수준의 분들에게 필요한 내용을 담고 있기 때문입니다.
* CGI 사용시 유의점
1. CGI는 서버의 CPU와 메모리의 퍼포먼스에 많은 영향을 줍니다. 그러므로 서버의 CPU 사용에 대하여 모든 사용자가 공평하게 사용할 수 있도록 CGI의 남용은 자제하여야 합니다.
2. 특히 많은 사람이 계속 접속하여 서버의 자원을 이용하는 채팅CGI의 경우는 상당한 문제가 됩니다. 무료서버인 경우는 대부분 CGI를 설치 못하게 하고 있고, CGI를 허용한다 하더라도 채팅CGI까지 허용하는 경우는 극히 드문 이유입니다. 보통은 채팅 CGI를 설치한 경우 강제 폐쇄조치를 합니다.
3. 유로 호스팅 서버인 경우에도 일반적으로 채팅CGI는 설치를 못하게 하고 있습니다.
4. CGI로 메일을 보낼 때의 주의해야 할 사항도 있습니다. CGI를 이용해서 메일을 발송할 경우에 /usr/sbin/sendmail 을 사용하시면 메일 발송을 프로그램 내부에서 작동시킬 수 있습니다. 하지만, 이런 경우에 메일이 성공적으로 도착하지 않고 돌아 올 경우에 시스템 관리자에게 해당 메일이 오게 되므로 메일의 내용이 노출되거나 돌아오는 메일의 양이 많을 경우에 업무에 지장을 주게 됩니다. CGI로 보낸 메일을 자신에게 되돌아 오도록 하는 방법은 sendmail 에 옵션을 주면 간단히 해결됩니다. /usr/sbin/sendmail -f 자신@자기도메인.com 등으로 옵션을 주면 모든 Return Mail을 자신이 받을 수 있습니다. 그리고 뒤에 설명할 cgiwrap을 사용해서 메일을 발송하면 특별한 설정이 없어도 자신이 보낸 메일로 인식됩니다. 한편, 일부 인터넷 메일 서버의 경우에 CGI로 발송된 메일을 모두 차단하는 사이트도 있으므로 중요한 메일을 보낼 때에는 반드시 메일 클라이언트 프로그램을 이용하시거나 웹메일을 이용하는 것이 좋습니다.
* CGIWRAP
1. 보안을 위해 서버에서 CGIWRAP을 사용하는 경우가 있습니다.
이는 자신의 public_html 내부의 cgi-bin 디렉토리에만 CGI 프로그램의
실행이 되도록 해 놓은 것입니다.
2. cgiwrap을 사용하면 화일의 퍼미션과 보안에 관해서 상당히 많은 장점이
있습니다. 생성되는 화일에 쓰기 퍼미션을 줄 필요가 없으므로 자신만
읽고 쓸 수 있는 화일 퍼미션으로도 CGI를 구동시킬 수 있습니다
3. 그러나 CGI프로그램을 CGIWRAP에 설치하기 위해서는 상당한 노력이
필요합니다. 일반적으로 국내에서 제작되고 배포되는 CGI는 CGIWRAP에
대해서 신경을 쓰지 않습니다만 일부 CGI는 CGIWRAP에 대한 설명을
따로 두고 있기도 합니다.(예:블루보드, 이지보드 등)
4. 설치는 확장자가 cgi 또는 pl인 경우 파일을 cgi-bin 디렉토리에 반드시
두어야 하고 나머지 파일은 그 외의 디렉토리에 두어야 합니다. 따라서
일반 gif 나 html 파일을 cgi-bin 디렉토리에 두면 에러가 납니다.