EZ-S3C6410용으로 컴파일한 lighttpd 실행 방법

 

지난번에 EZ-S3C6410에서 lighttpd 실행할 수 있게 간단하게(?) 컴파일을 했었습니다.

이제 실행을 해볼 차례입니다.

 

apache 보다 빠르다고 하는 lighttpd를 실행하기 위해 설정 파일을 수정할 예정입니다.

apache 처럼 간단할 줄 알았는데, 처음 접하는 환경이다보니 아직은 낯설게 느껴집니다.

 

EZ-S3C6410 보드에 arm 으로 컴파일된 lighttpd를 복사한 후, 아래 강좌를 보시면 됩니다.

 

 

1. 작업 환경

 

개발서버 : Ubuntu 11.04 Server 버전

툴체인 : arm-linux-gnueabi-4.3.2.tar.gz
           (ftp://ftp.falinux.com/toolchain_ramdisk/recommendation/gcc-4.3.2/arm-linux-gnueabi-4.3.2.tar.gz 파일 사용)

 

타겟보드 : 에프에이리눅스 EZ-S3C6410 보드

 

lighttpd 버전 : lighttpd-1.4.29

 

2. 실행

 

lighttpd를 /usr/local/lighttpd 에 설치를 하였습니다.

 

[root@falinux /]$ cd /usr/local/lighttpd
[root@falinux lighttpd]$ ls
config/ lib/ sbin/ share/

 

위와 같이 4개의 폴더가 보입니다.

여기서 sbin 폴더 안에 실행 파일이 있습니다.

 

[root@falinux lighttpd]$ cd sbin
[root@falinux sbin]$ ls
arm-generic-linux-gnueabi-lighttpd
arm-generic-linux-gnueabi-lighttpd-angel

 

실행 파일 2개가 보입니다.

arm-generic-linux-gnueabi-lighttpd 파일로 실행을 하면 됩니다.

 

편의상 arm-generic-linux-gnueabi-lighttpd 파일의 이름을 lighttpd 로 변경을 하였습니다.

 

아래와 같이 실행을 해봅니다.

 

[root@falinux sbin]$ ./lighttpd
2011-10-05 05:30:31: (server.c.595) No configuration available. Try using -f option.

 

하지만, 설정파일이 없다고 실행이 되지 않습니다.

컴파일을 한 후에 config 폴더를 복사를 한적이 있습니다. 이 안에 lighttpd.conf 라는 환경 설정 파일이 있습니다.

이 파일을 -f 옵션을 사용하여 포함시키도록 합니다.

 

[root@falinux sbin]$ ./lighttpd -f ../config/lighttpd.conf

can't handle '$HTTP[url] =~ ...' as you compiled without pcre support.
(perhaps just a missing pcre-devel package ?)
2011-10-05 05:32:29: (configfile.c.930) source: ../config/lighttpd.conf line: 315 pos: 3 parser failed somehow near here: {

 

위와 같이 에러가 납니다.

이제 lighttpd.conf 파일을 수정해줄 차례입니다.

 

 

3. config 폴더로 이동

 

이제 lighttpd.conf 파일이 있는 config 폴더로 이동합니다.

 

[root@falinux sbin]$ cd ../config/
[root@falinux config]$ ls
Makefile       Makefile.in    lighttpd.conf  vhosts.d
Makefile.am    conf.d         modules.conf

 

여기서 불필요한 Makefile 들은 지워줍니다.

예전에는 lighttpd.conf 파일로만 설정을 하였는데, 신 버전에서는 역할에 따라서 파일들을 나눴습니다.

conf.d 폴더나 vhosfs.d 폴더 안에 각각 설정할 수 있는 파일들을 넣어놨습니다.

이 부분은 나중에 PHP 와 연동할 때, 다시 알아보도록 하겠습니다.

 

 

4. lighttpd.conf 에 폴더 설정

 

먼저 파일을 열어보면 16번째 줄에 아래와 같이 되어 있습니다.

 

var.log_root    = "/var/log/lighttpd"
var.server_root = "/srv/www"
var.state_dir   = "/var/run"
var.home_dir    = "/var/lib/lighttpd"
var.conf_dir    = "/etc/lighttpd"

 

lighttpd에서 참고하는 기본 폴더 설정입니다.

위의 내용을 수정해주거나 내용대로 폴더를 만들어주면 됩니다.

 

이 문서에서는 위와 같이 폴더를 만들었습니다.

 

[root@falinux config]$ mkdir -p /var/lig/ligh
[root@falinux config]$ mkdir -p /var/log/lighttpd
[root@falinux config]$ mkdir -p /srv/www
[root@falinux config]$ mkdir -p /var/run
[root@falinux config]$ mkdir -p /var/lib/lighttpd
[root@falinux config]$ mkdir -p /etc/lighttpd

 

 

4. lighttpd.conf 에러 수정

 

이제 본격적으로 파일을 수정할 차례입니다.

먼저 에러가 나왔던 315번 줄로 가서 파일을 수정하도록 하겠습니다.

 

[root@falinux config]$ vi lighttpd.conf

 

하나씩 실행을 해보면서 문제되는 부분을 몇가지 제거해보도록 하겠습니다.

(왼쪽에 줄 번호는 lighttpd 버전에 따라 달라질 수 있습니다.)

 

 

오류 메시지 : can't handle '$HTTP[url] =~ ...' as you compiled without pcre support.

 

수정 전
314
315
316

$HTTP["url"] =~ "\.pdf$" {

  server.range-requests = "disable"

}

 

수정 후
314
315
316

#$HTTP["url"] =~ "\.pdf$" {

#  server.range-requests = "disable"

#}

 

 

오류 메시지 : can't find username lighttpd

 

수정 전
104
105

server.username  = "lighttpd"

server.groupname = "lighttpd"

 

수정 후
104
105

#server.username  = "lighttpd"

#server.groupname = "lighttpd"

 

 

오류 메시지 : socket failed: Address family not supported by protocol

 

수정 전
93

server.use-ipv6 = "enable"

 

수정 후
93

server.use-ipv6 = "disable"

 

 

오류 메시지 : server.network-backend has a unknown value: linux-sendfile

 

수정 전
191

server.network-backend = "linux-sendfile"

 

수정 후
191

#server.network-backend = "linux-sendfile"

 

 

이제 수정이 끝났습니다.

 

 

5. 임시 페이지 만들기

 

실행 전에 웹페이지가 들어있는 폴더를 먼저 확인할 필요가 있습니다.

conf 파일에서 내용을 수정하지 않았다면 아래와 같습니다.

 

var.server_root = "/srv/www"
.
.
.
server.document-root = server_root + "/htdocs"

 

server.document-root 가 html 파일을 실행할 장소입니다.
위의 폴더로 이동해서 htdocs 폴더를 만들어 줍니다.

 

[root@falinux /]$ cd /srv/www/
[root@falinux www]$ mkdir htdocs
[root@falinux www]$ cd htdocs

 

그 다음엔 index.html 파일을 만들어줍니다.

 

[root@falinux htdocs]$
[root@falinux htdocs]$ vi index.html

 

파일 내용을 아래와 같이 적어줍니다.

간단하게 test 라고 적었습니다.

 

<html>
<h2>lighttpd test...</h2>
</html>

 

파일을 저장하면 됩니다.

 

 

6. 실행

 

이제 다시 lighttpd를 실행할 차례입니다.

lighttpd 폴더로 이동하여 실행을 해줍니다.

 

[root@falinux /]$ cd /usr/local/lighttp/
[root@falinux config]$ cd ../sbin/
[root@falinux sbin]$ ./lighttpd -f ../config/lighttpd.conf

 

아무런 오류 메시지가 없다면 실행된 것입니다.
ps를 통해서 제대로 실행되었는지 확인해봅니다.

 

[root@falinux sbin]$ ps
  PID USER       VSZ STAT COMMAND
    1 root      1552 S    init [3]
    2 root         0 SW<  [kthreadd]
        .
        .
     (중략)
        .
        .
 1127 root      1992 S    ./lighttpd -f ../config/lighttpd.conf

 

위와 같이 lighttpd 항목이 보이면 정상적으로 된 것입니다.

 

 

7. 웹 브라우저 접속

 

일반 PC에서 웹 브라우저를 실행한 다음, 보드 IP 로 접속을 합니다.

아래와 같은 화면을 볼 수 있습니다.

 

 

 lighttpd test...

 

 

 

 

 

컴파일 완료

 

lighttpd 1.4.29 버전을 실행하기 위해 컴파일을 하고 환경 설정 파일까지 수정해보았습니다.

 

강좌를 쓰면서 테스트를 해야하기 때문에 문서를 작성하는데 시간이 꽤 소모되는 편입니다.

가급적 보기 쉽게 하려고 강좌를 작성하고 있습니다.

 

다음번엔 php를 컴파일 한 다음, lighttpd 랑 연동하는 법에 대해서 찾아뵙도록 하겠습니다.

 

이 정도면 임베디드 보드로도 웹 서버를 구축할 수 있을것만 같네요. ㅋㅋ