강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
CGI 사용법 제공하기
조회 : 3,387  


1. CGI란 무엇인가?

1990년 초반 웹(WWW)서비스의 초기 HTML문서는 웹서버에서 클라이언트(Web browser)로의 일방적인 정보전달만을 했었습니다.

정보를 제공하는 측에서는 웹사이트에 필요한 정보를 올려두면 그 정보를 원하는 측에서는 받아가거나 참조하는 단방향의 정보전달만을 했었기 때문에 정보제공측과 정보수해측의 의사교환이나 정보교환은 이루어지질 않았으며, 이를 해결하기 위해서 CGI의 필요성이 대두되게 된 것입니다.

CGI(Common Gateway Interface)란 웹서버(정보제공측)와 클라이언트(정보이용측)간에 필요한 정보교환을 가능하게 해주는 일종의 웹인터페이스라고(일종의 프로그램) 할 수 있습니다.

CGI를 이용하게 됨으로써 정보를 제공하는 웹서버측에서는 웹서버이용자들의 동향이나 의사 및 요구사항들을 수렴하여 일방적이 아닌 양방향의 정보교환이 가능하게 되는 것입니다.

CGI는 웹에서 사용하는 일종의 프로그램이기 때문에 인터넷 초보자나 프로그램에 익숙하지 않으신 분들에게는 어렵게 느껴질 수 있습니다.

현재 전문적인 CGI프로그램을 제작하는 사람들은 기존에 컴퓨터프로그램을 해왔던 분들이거나 CGI프로그램에 대한 어느정도의 교육을 받으신 분들이 대부분입니다.

하지만 꼭 CGI프로그램을 제작하기 위해서 전문적인 교육이 필요한 것만은 아닙니다.

CGI제작을 도와주는 다양한 툴이나 쉬은 스크립트언어들이 있기 때문에 조금만 의욕을 가지고 적극적으로 시도한다면 초보자들도 자기에게 필요한 CGI는 어느정도 만들어 사용할 수 있으리라 생각합니다.

2. CGI프로그램의 주된 용도

그러면 CGI프로그램의 구체적인 용도는 어떤 것들이 있을까요?

아래의 리스트는 웹사이트에서 사용되는 CGI의 주된 용도를 나열한 것입니다.

  • 회원등록 및 조회 CGI 프로그램
     
  • 메일링리스트 CGI 프로그램
     
  • 게시판 CGI 프로그램
     
  • 방명록 CGI 프로그램
     
  • 폼메일 CGI 프로그램 (웹에서 메일을 보낼 수 있도록하는 프로그램)
     
  • 전자상거래에서 사용하는 상품주문 CGI 프로그램
     
  • 기타 주문서 및 신청양식등

위의 리스트는 웹호스팅서비스를 이용하시는 분들이 CGI프로그램을 사용하는 주된 용도를 나열한 것입니다.

일반적으로 가장많은 용도는 상호간의 의견을 게시하거나 필요한 파일을 올려둘 수도 있는 웹게시판(Web Board)이며 문답형식이나 의견수렴, 정보교환 및 자료실로 활용됩니다.

회원등록을 받거나 등록된 회원을 조회해 보기위한 용도로 CGI프로그램을 사용하는 곳은 회원만이 사용하는 회원제홈페이지나 유료사이트를 제작하는 경우, 또는 동호회 홈페이지나 협회홈페이지등에 주로 사용되는 것입니다.

요즘은 전자상거래(EC)가 많은 주목을 받고 있기 때문에 전자상거래용 CGI프로그램의 수요가 많아지게 되었습니다.

또한 폼메일 (Formmail)이란 민원접수나 의견제시, 궁금한 질문등을 웹브라우즈를 통해 방문해 있는 홈페이지에서 담당자에게 메일로 보낼수 있는 폼(Form)을 말하는 것입니다.

3. CGI프로그램제작을 위한 도구

앞에서 설명드린 용도로 CGI프로그램을 제작하기 위해 필요한 프로그램언어는 어떤것들이 있을까요?

일반적인 프로그램제작언어중에서 CGI제작을 하게해주는 언어들도 있습니다.

하지만 웹사이트에서 CGI를 제작하기 위한 용도로는 다음과 같은 언어들이 주로 사용됩니다.

  • Perl : 가장일반적으로 사용되는 스크립트언어
     
  • Java : 멀티미디어 및 CGI용 전문언어
     
  • PHP : 실행속도가 빠른 스크립트언어
     
  • C, C++, gcc : 실행속도가 가장빠르며 가장 강력한 컴파일러언어
     
  • msql, Oracle : CGI 개발언어들과 연동되어 사용되는 데이터베이스

배우기 쉽고 일반적으로 가장많이 사용되고 있는 언어로는 단연 Perl을 들수가 있습니다.

인터프리터언어이기 때문에 컴파일러언어보다 실행속도는 다소 떨어지지만 원하는 폼과 양식을 쉽게 구현할 수 있으며 수정 및 이식성이 좋으므로 UNIX, Linux, Solaris, BSD 및 NT등 어떤 플렛폼에서도 실행이 가능합니다.

Java는 원래 가전제품에서 전자제어를 하기위한 목적으로 개발되어 현재는 웹에서의 멀티미디어 구현을 위해 주로 사용되고 있는 언어로서 CGI제작을 위해서도 많이 사용되고 있습니다.

Java를 사용하기 위해서는 어느정도의 학습과 교육이 필요하며 현재는 Java만 전문적으로 사용하여 각종 어플리케이션을 개발하는 Java전문개발자가 있을 정도로 그 사용범위는 넓다고 할 수 있습니다.

PHP는 스크립트언어이면서도 실행속도가 빠르기 때문에 요즘엔 Perl을 사용하는 사람들이 Perl 대신에 PHP를 사용하는 경향이 많습니다.

C보다는 실행속도면에서 다소 떨어지지만 비교적 빠른 속도와 배우기 쉽고 구현이 쉽다는 면에서 CGI개발용으로 많이 사용되고 있는 언어입니다.

C와 gcc는 컴파일러언어로서 상업용 CGI를 개발하기위한 용도로 많이 사용됩니다.

특히 인터넷을 활용한 전자상거래에서는 빠른 실행속도와 정보보안이 필히 수반되어야 하는데 이를 충족시켜주는 언어라고 할 수 있습니다.

하지만 원래 C라는 언어가 시스템프로그램을 위해 개발된 언어이므로 프로그램밍하기가 쉬운 것이 아니므로 초보자에게는 다소 어려움이 있습니다.

CGI용 프로그램을 개발하다 보면 데이터베이스를 이용하여야 할 경우도 있으며 이럴 경우에는 위의 언어들은 msql이라는 데이터베이스나 Oracle등과 연동되어서 사용되기도 합니다.

이상으로 CGI의 일반적인 개념과 개발도구들에 대해서 알아보았습니다.

이들의 사용법에 대해서는 해당 파트를 참조해 주시기 바랍니다.


4. CGI 에러코드

CGI프로그램밍작업을 하다보면 여러 가지 에러를 만나게 되고 이런 에러를 잡고 해결하는 작업이 프로그래밍작업중 많은 부분을 차지하게 됩니다.

에러를 만나게 되면 일단 어떤 에러인지를 확인해야하며 확인한 에러가 발생한 원인을 알아낸 다음 조치를 취하게됩니다.

CGI프로그램의 에러에 대한 원인분석을 정확히하는 것이 에러수정(debugging)의 가장기본이며 원인분석을 하기위해서는 서버에서 보내는 각종정보를 참조해야합니다.

서버에서 보내주는 에러정보에는 다음과 같은 것들이 있습니다.

  • 에러로그파일(예, errors)
     
  • CGI에러코드(3자리 숫자로된 코드)

여기서 첫 번째의 errors는 CGI의 에러뿐아니라 홈페이지 로딩이 되지 않았을때의 모든에러를 포함하고 있습니다.

웹호스팅서비스에 가입한 저희 고객께서는 고객의 홈디렉토리 밑에 있는 www_log라는 디렉토리안에 access_log라는 파일과 함께 쌓이게 됩니다.

그리고 이 디렉토리내에 error_log라는 파일이 있으며 CGI의 에러들은 대부분 이 파일에 그 원인등을 저장하게 됩니다.

그리고 두 번째의 3자리로 된 에러코드는 CGI프로그램이 정상적으로 실행이 되지 않았을 때 아래의 그림과 같이 웹서버에서 웹브라우즈로 에러원인이나 조치사항들에 대한 정보를 보여주게 됩니다.


위의 예는 웹서버에 있는 CGI프로그램을 웹브라우즈에서 실행시킨 것으로 정상적인 실행이 되지 않았다는 것과 에러조치에 필요한 정보를 보내준 것입니다.

다음은 이런 에러메시지에 포함되는 에러코드들에 대한 설명이며 의미하는 바는 다음과 같습니다.

  • 4로 시작하는 에러코드 : 실행시킨 CGI에 에러가 발생하여 웹서버에서 웹브라우즈로 보내주는 에러코드
     
  • 5로 시작하는 에러코드 : 실행시킨 CGI가 웹서버에서 실행도중 발생한 에러코드

 

400 : Bad request

HTTP의 규약에 맞지않는 요청을 했을 경우에 발생하는 에러입니다.

 

401 : Unauthorized

사용자인증을 요구한 웹브라우즈에서 ID와 패스워드를 입력하게 됩니다.

인증이 되었을 경우에는 웹브라우즈는 웹서버로 ID와 패스워드를 자동으로 보내주게 됩니다.

이 메시지는 인증(허가)되지않는 ID와 패스워드를 입력했을 경우에 나타나는 것입니다.

 

403 : Forbidden

이 에러코드를 보내게 되는 경우는 다음의 두가지 경우이며 요청한 CGI파일에 대한 권한이 없거나 실행가능한 파일이 아님에도 실행하려할 경우에 발생하는 에러입니다.

 

404 : Not Found

요청한 CGI파일이 디렉토리에 존재하지않을 경우에 발생하는 에러입니다.

 

500 : Internal Server Error

이 에러코드는 에러범위가 넓은 경우이며 일반적인 웹서버의 내부적인 에러발생을 의미합니다.

 

501 : Not Implemented

웹브라우즈에서 요청한 Form METHOD가 웹서버에서 허용하는 것이 아닐경우에 발생하는 에러코드입니다.

 

502 : Bad Gateway

요청한 웹서버가 프락시서버나 게이트웨이서버로 실행되고 있을 경우에 발생할 수 있는 에러코드입니다.

 

503 : Server Unavailable

웹브라우즈의 요청에 웹서버가 제대로 처리하지 못할 경우에 발생하는 에러로서 일반적으로 다른 작업처리로 인하여 요청한 처리를 하지못할 경우에 발생하는 하게 됩니다.

 

이상으로 CGI의 에러코드에 대해서 알아보았습니다.

지금까지 설명드린 에러숫자외에도 2로 시작하는 상태코드와 3으로 시작하는 코드가 있습니다.

2로 시작하는 상태코드는 웹서버에서 정상적으로 실행이 되었을 경우에 보내지는 것이며 3으로 시작하는 상태코드는 웹브라우즈의 요청한 작업의 수행을 위한 다른 작업의 필요성이 있음을 알려주는 코드이므로 에러코드는 아닙니다.

그리고 2나 3으로 시작하는 코드는 웹브라우즈로 나타나지 않는 것이므로 일반적으로 확인할 수 있는 코드가 아니기에 설명을 생략한 것입니다.



[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=489


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
박성수
파파
헐렁고수