====== 이지보드-X5 웹서버를 올려보자 ====== ====== 들어가기 전에 ====== 제이닷 디엔티에서 구입한 X-5 라는 보드를 이용해서 웹 서버를 올려볼 것이다. 임베디드용 웹 서버에는 크게 두가지가 가장 많이 사용된다. Boa(가수아님) 와 Goahead 가 그것이다. 서버 시장에서 Apache 와 IIS 처럼 말이다. 다음은 내가 알고 있는 각각의 특징들이다. 언제까지나 주관적인 나의 생각이다. | | boa | goahead | | 속도 | 빠르다 | 대체로 그럭저럭 | | 용량 | 가볍다 | 대체로 보통 | | 확장 | CGI, HTML | ASP,CGI,HTML,PERL | 솔직히 임베디드 시스템이 웹서버를 올리는 사람은 거의 없을 듯 하다. 왜냐 하면 그럴 필요가 없기 때문이다. 일반 서버보다 성능이나 퍼포먼스도 떨어지는 임베디드 시스템에 포팅을 할 필요는 없기 때문이다. 하지만, 요피에도 웹서버가 올라가는 요즘, 한번 쯤 올려봐도 무리는 없을 듯 하다. ====== Boa를 설치해 Boa요 ====== 우선 프로그램 홈페이지 http://www.boa.org 에서 최신 버전을 다운로드 한다. 현재 최신 버전은 0.94.13 이다. 압축을 풀고, 미리 설치해둔 툴 체인으로 컴파일 하면 된다. #tar xzvf boa-0.94.13.tar.gz #cd boa-0.94.13 #cd src #vi Makefile makefile 의 설정을 바꿔주어야 한다. 크로스 컴파일러를 사용해야 하기 때문이다. 기본적으로는 i386 컴파일러로 설정되어 있다. 30번째 줄을 다음과 같이 수정한다. # Change these if necessary YACC = bison -y LEX = flex CC = armv5l-linux-gcc // 수정 CPP = armv5l-linux-gcc -E // 수정 수정했다면, 이제 컴파일하자!! #make 에러없이 제대로 수행되었다면, src 디렉토리에 boa 라는 실행파일(오브젝트)가 생성되었을 것이다. 이 파일과 boa 설정 파일인 boa.conf 파일을 타겟 보드로 전송한다. 만일 아래와 같은 에러가 발생했다면, util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 오류 1 compat.h 파일을 다음과 같이 수정한다. #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff // ## 삭제한다 여기서는 전송하는 방법은 언급하지 않는다. 알아서 전송하길 ^^; 전송했다고 끝난 것이 아니다. boa 가 실행가능하도록 환경을 만들어 주어야 한다. 우선 boa.conf 파일이 위치할 /etc/boa 라는 디렉토리를 생성해야 한다. #mkdir /etc/boa #mv boa.conf /etc/boa/ 이번에는 로그 파일이 저장할 곳을 만들어 줘야 한다. boa.conf 파일을 참고 하기 바란다. #mkdir /var/log/boa #touch /var/log/boa/access_log 이번에는 boa.conf 파일을 수정한다. 다음의 부분에서 말이다. # Group: The group name or GID the server should run as. User nobody Group nobody // 수정 이번에는 mime.types 파일을 만들어야 한다. 이파일은 웹상에서 확장자를 보고서 어떻게 처리할지 대한 정의가 담긴 파일이다. 예를 들어 확장자가 .php4 이면 웹서버는 php 파서에게 파일을 넘긴다. 이 파일은 기존의 서버(예:apache) 에 있는 파일을 그대로 가져다가 써도 된다. 만일 구할 수 없다면, touch 명령을 만들어서 만든다. 순전히 임시방편이다. 마지막으로 Document Root, 즉 주소를 치면 가장 먼저 보이는 경로를 만들어줘야 한다. #mkdir /var/www 이 모든 것은 boa.conf 파일을 참고하면 된다. 물론 다른 경로로 정해줘도 된다. 이제 Boa 를 올려보자!! 어디로?? #./boa #ps -aux // 혹시 모르니 확인해보자!! 그리고 외부에서 접속해보자!! 어떤가?? 페이지가 뜨면 제대로 돌아가고 있는 것이다. ====== Goahead 설치하기 ====== 이번에는 goahead 를 설치해보자! 역시 프로그램 홈페이지 http://216.211.138.77/webserver/webserver.htm 에서 최신 버전을 다운로드 받는다. 현재 최신 버전은 2.18 이다. 마찬가지로 압축을 풀고 툴 체인을 이용해서 컴파일해주면 된다. #tar xzvf webs218.tar.gz #cd ws032112 #cd LINUX // 포팅하고자 하는 OS 의 디렉토리로 들어간다. #vi Makefile 크로스 컴파일러의 지정을 위해 몇가지 수정이 필요하다. all: compile ARCH = libwebs.a NAME = webs CC = armv5l-linux-gcc // 수정 AR = armv5l-linux-ar // 수정 ... ... ... .c.o: armv5l-linux-gcc -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $< // 수정 위에서 보면, 3 곳을 수정해 주면 된다. 그리고 컴파일 하면, #make webs 라는 오브젝트 파일이 생성될 것이다. 이제는 타겟 보드에 옮기는 일만 남았다. 나의 경우, 위에서 압축을 푼 ws031202 디렉토리를 통째로 올렸다. 그리고서 webs 를 실행시켜주는 것만으로 웹서버가 동작함을 볼 수 있었다. #./webs 어찌보면, 허무하게 느껴질지도 모르겠다. 이대로 끝나기는 아쉬우니까.. -_-; ws031202 디렉토리를 보면, web 이라는 디렉토리가 보일 것이다. 들어가 보면, 아~ 이곳이 Document root 구나!! 라는 생각이 들것이다. 나는 얼마전에 goahead 를 이용해서 스탠드 제어를 해봤었다. 그때 .cgi 를 이용해서 구현했었는데, 만일 cgi 를 올리고 싶다면, cgi-bin 디렉토리에다가 cgi 파일을 넣으면 되겠다. 이렇게 보면, ws031202 전체를 올리는 것보다, LINUX, webs, web 이렇게만 올려도 동작하는 데는 아무 문제가 없을 듯 하다. ---- {{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}} ----