왜 CGI 인가?
현재 내가 알고 있는 알려져 있는 임베디드 웹서버는 Boa 와 Goahead 정도이다. 일반 서버급의 웹 브라우저라면, 이것저것 여러가지 기능이나 연동되는 프로그래밍 언어(ASP,PHP,JSP..)를 사용할 수 있겠지만, 임베디드용이라 제한된 기능만 가지고 있다.
동적인 페이지를 원한다면, 기본적으로 지원되는 HTML 만으로는 뭔가 부족한 감이 없지 않다.
그나마, CGI 를 지원하기 때문에 가능하다. CGI 는 현재 가장 많이 쓰이고 있는 ASP 같은 스크립트 언어가 아닌, 일반 C 프로그램이라고 생각하면 된다. 컴파일을 해서 오브젝트 코드를 실행시키는 방법이다.
옛날에는 CGI 가 주로 쓰였지만, 접속한 클라이언트의 수가 많이지면, 서버의 부하가 많아지는 단점과, 보안이 약하다는 단점 때문에 요즘에는 많이 쓰이지 않는다.
하지만, 앞에서도 말했듯이 임베디드용이기 때문에 여기서는 CGI 를 사용한다.
CGI 맛보기
아주 간단한 프로그램을 통해서 어떻게 만드는지 알아보자!
#vi index.c
파일이름은 index.c 로 한다. CGI 는 C 프로그램이기 때문에 확장자가 c 임을 유의하기 바란다.
#include <stdio.h> main() { printf("Content?type: text/html\n\n"); printf("<html>\n<head><title>the cgi program</title></head>\n"); printf("<body>\n<center>it is a cgi program test</center>\n<body>\n</html>"); }
보면 알겠지만, 아주 간단한 프로그램이다. 컴파일해보자!
#armv5l-linux-gcc -o first.cgi first.c
에러없이 컴파일되었다면, first.cgi 라는 파일로 오브젝트 파일이 만들어졌을 것이다.
이제 타겟보드로, 다운로드해서, 웹상에서 확인해보자!!
여기서는 goahead 웹서버를 이용해서 보도록 할 것이다.
web 디렉토리 밑에 cgi-bin 이라는 디렉토리 아래에 앞에서 컴파일한 파일을 복사한다.
그리고 웹브라우저에서 아래의 주소로 접속해보자.
http://타겟보드주소/cgi-bin/first.cgi
어떤가?? 보이는가..