HOME > 고객센터 > 이용 도움말


CGI(Common Gateway Interface) 사용법 · 에러대책



1. CGI란?

CGI(Common Gateway Interface)는 프로그램이나 스크립트를 웹 서버에서 실행하게 하여 그 결과를 웹 페이지에 보여주는 역할을 합니다. CGI 파일은 사용자의 웹 사이트에 뛰어난 기능을 더해줄 수 있습니다. 예를 들면, 온라인주문 폼, 검색엔진, 카운터, 방명록, 게시판 등이 있습니다. CGI 프로그램은 C, C++, Perl 등 다양한 언어로 작성할 수 있습니다.


2. CGI 사용하기

- CGI 프로그램은 자신 계정의 public_html 디렉토리나 그 아래의 어느 디렉토리에서든 실행이 가능합니다.

- CGI 프로그램의 확장자는 반드시 .cgi 를 사용하셔야 웹 서버가 CGI 프로그램으로 인식하여 정상적으로 실행하게 됩니다.

[주의!]
cgi-sys 디렉토리는 사용자 전체가 공유하므로 개인적으로 사용하실 수 없습니다.
cgi-bin 디렉토리를 만들어 사용하시는 것이 보안에 효과적입니다.


3. cgiwrap의 사용

cgiwrap을 사용할 때의 경로는 다음과 같습니다.

http://www.자신의도메인/cgi-sys/cgiwrap/자신의_호스트와이드_ID/프로그램이름.cgi

위와 같이 cgiwrap을 사용할 때에는 자신의 public_html 내부의 cgi-bin 디렉토리에 해당 프로그램을 설치하고 사용하시면 됩니다. cgiwrap을 사용하면 파일의 사용권한과 보안에 상당히 많은 장점이 있습니다. 생성되는 파일에 쓰기 사용권한을 줄 필요가 없으므로 자신만 읽고 쓸 수 있는 파일 사용권한으로도 CGI를 실행시킬 수 있습니다.


4. CGI 사용시 유의점

호스트와이드는 별다른 추가비용없이 CGI 프로그램을 사용하실 수 있도록 하고 있습니다. CGI는 서버의 CPU와 메모리의 실행능력에 많은 영향을 줍니다. 그러므로 서버의 실행능력에 나쁜 영향을 미치지 않도록 CGI의 남용은 자제하여 주시기 바랍니다.


5. CGI로 메일을 보낼때에 주의해야 할 사항

CGI를 이용해서 메일을 발송할 경우에 /usr/sbin/sendmail을 사용하시면 프로그램 내에서 메일 발송을 할 수 있습니다. 그러나, 메일이 성공적으로 도착하지 않고 반송될 경우에 시스템 관리자에게 반송메일이 오게 되므로 메일의 내용이 노출됩니다. 또한 반송메일의 양이 많을 경우에 업무에 지장을 주게 됩니다.

CGI로 보낸 메일을 사용자 자신에게 반송되도록 하는 방법은 아래와 같이 sendmail에 옵션을 설정하면 간단히 해결됩니다.

/usr/sbin/sendmail -f 자신@자기도메인

[고급]
cgiwrap을 사용해서 메일을 발송하면 특별한 설정이 없어도 자신이 보낸 메일로 인식합니다.

[주의!]
CGI로 발송된 메일을 모두 차단하는 메일 서버도 있으므로, 중요한 메일을 보낼 때는 반드시 이메일 전용프로그램을 이용하십시오.


6. CGI 디버깅

호스트와이드는 시스템 운영에 대한 책임이 있을 뿐, 사용자의 CGI 프로그램 개발 및 디버깅에 대한 책임은 없습니다. CGI 프로그램상의 문제로 문의하는 일은 피해 주시기 바라며, 시스템 문제 때문에 CGI 실행에 이상이 있다고 판단되는 경우에만 문의해 주시기 바랍니다.

CGI는 프로그래밍과 유닉스 시스템에 대한 전문지식이 필요합니다. 만약 여러분께서 CGI에 대한 더 자세한 사항을 알고싶으시다면 아래의 링크를 참조해 주시기 바랍니다.

Matt's Scripts Archive [http://www.worldwidemart.com/scripts/]
CGI-Resources [http://www.cgi-resources.com/Documentation/]
Boutell Web Tools [http://www.boutell.com/tools.html]


7. CGI 에러 체크리스트

CGI 프로그램에서 발생하는 에러들은 대부분 간단한 것입니다. 여러분이 사용하시는 CGI 프로그램에서 에러가 발생했다면 다음의 체크리스트를 참고하여 문제를 해결해 보시기 바랍니다.

  • CGI 스크립트는 반드시 확장자가 .cgi이어야 합니다.
  • 스크립트는 public_html 디렉토리나 그 이하 디렉토리에 있어야 합니다.
  • Perl 스크립트는 반드시 아스키(ASCII) 모드로 업로드하셔야 합니다.
  • Perl 스크립트의 가장 윗줄에 Perl의 경로를 다음과 같이 적어주셔야 합니다.

    #!/usr/local/bin/perl 또는
    #!/usr/bin/perl

  • CGI 스크립트는 반드시 실행가능한 퍼미션으로 변경해 주셔야 합니다. 텔넷으로 접속한 상태에서 다음과 같이 실행해 주십시오.

    chmod 705 file.cgi

  • CGI 스크립트에 의해 쓰기가 이루어질 파일은 모든사람에게 쓰기 사용권한이 허용되어야 합니다.

    chmod 707 file.html

  • CGI 스크립트에 의해 파일이 생성되어질 디렉토리도 모든사람에게 쓰기가 허용되어야 합니다.

    chmod 707 dir_name

  • 만약 웹 상에서 스크립트가 실행이 안된다면, 스크립트를 텔넷 상에서 다음과 같이 실행해 주십시오.

perl file.cgi

만약 프로그램 문법이나 코딩에 에러가 있다면 해당 에러메시지가 출력됩니다. 에러메시지를 참조하여 소스를 수정하여 주십시오.

  • 스크립트가 유닉스 상에서는 잘 실행되나, 웹 상에서는 되지 않을 때 파일이나 디렉토리의 사용권한을 살펴 보십시오.


8. CGI 에러 찾기

Perl 스크립트의 에러를 찾는 다른 한 가지 방법은, 해당 스크립트 코드 내의 체크하고자 하는 부분에 다음과 같은 내용을 삽입하는 것입니다.

print "Content-type: text/html\n\n\n";
print "<h1>여기까지는 에러가 없습니다</h1>";
exit;

웹브라우저 상에서 해당 CGI를 실행하여, 만약 "여기까지는 에러 없습니다."라는 글이 출력된다면 스크립트 내에서 위의 내용이 있는 부분까지는 정상적으로 실행된다는 의미입니다. 다시 위의 내용을 좀 더 아래에 삽입하여 테스트 해 보십시오. 만약 위의 메시지가 나오지 않는다면, 그 앞부분에 에러가 있다는 뜻입니다. 위의 내용을 좀 더 위에 삽입하여 에러가 있는 위치를 찾아내시면 됩니다.

 





정보보호 안전진단 필증