들어가기 전에

제이닷 디엔티에서 구입한 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 이렇게만 올려도 동작하는 데는 아무 문제가 없을 듯 하다.

  • computer/embedded/이지보드-x5_웹서버를_올려보자.txt
  • Last modified: 3 years ago
  • by likewind