1. 파일 다운로드

#cd /opt

#wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.32.tar.gz

#tar zvxf lighttpd-1.4.32.tar.gz 

 

2. 컴파일

#cd lighttpd-1.4.32

#CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar LD=arm-linux-ld NM=arm-linux-nm RANLIB=arm-linux-ranlib STRIP=arm-linux-strip \

./configure --host=arm-linux --target=arm-linux --prefix=/tmp/lighttpd --without-pcre --without-bzip2 --without-zlib

(--prefix에는 타겟보드의 실제 경로를 대입합니다. 별도의 zlib가 필요한 경우 설치 포함하셔도 됩니다.)

#make

#make install

 

3. 설정 파일의 복사

#cp -rf /opt/lighttpd-1.4.32/doc/config /tmp/lighttpd

 

4. 기본 설정 파일의 수정

#vim /tmp/lighttpd/config/lighttpd.conf

88 line

server.port = 80 #타겟보드의 웹 서버 포트 변경 가능

93 line

server.use-ipv6 = "disable"

104-105 line

#server.username  = "lighttpd"

#server.groupname = "lighttpd"

191 line

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

314  - 316 line

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

#  server.range-requests = "disable"

#}

 

5. CGI프로그램의 활성화

5-1. lighttpd.conf

#vim /tmp/lighttpd/config/lighttpd.conf

line 78(코멘트화 되어 있으면 해제)

  include "modules.conf"

line 336(.cgi를 추가)

  static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi", ".cgi" )

마지막 라인에 다음을 추가하여, cgi-bin의 alias를 설정한다.

### alias ############################################################

server.modules += ( "mod_alias" )

alias.url = ( "/cgi-bin/" => "/srv/www/cgi-bin/" )

#######################################################################

 

  

5-2. config/modules.conf

#vim /tmp/lighttpd/config/modules.conf

line 137(코멘트화 되어 있으면 해제)

  include "conf.d/cgi.conf"

 

5-3. config/conf.d/cgi.conf

#vim /tmp/lighttpd/conf.d/cgi.conf

line 16

  ".cgi" => ""

 

 

6. 컴파일한 파일을 타겟보드에 업로드

#cd /tmp

#sudo tar zvcf lighttpd.tar.gz lighttpd

타겟보드에 ftp로 접속한 후 압축한 파일을업로드

#ftp>put lighttpd.tar.gz

 

7. 타겟보드의 /tmp폴더에서 압축 해동( ./configure할 때의 prefix에 의해 달라짐)

#cd /tmp

#tar zvxf lighttpd.tar.gz

 

8. 타겟보드에서, lighttpd.conf파일에 설정된 폴더를 작성

#mkdir -p /var/log/lighttpd 

#mkdir -p /srv/www

#mkdir -p /srv/www/htdocs

#mkdir -p /srv/www/vhosts

#mkdir -p /var/run

#mkdir -p /var/lib/lighttpd

#mkdir -p /etc/lighttpd

 

(일괄명령 

#mkdir -p /var/log/lighttpd /srv/www /srv/www/htdocs /srv/www/vhosts /var/run /var/lib/lighttpd /etc/lighttpd)

 

9. 테스트용 html파일을 작성하여, /srv/www/htdocs폴더에 저장

호스트에서

#vim index.htm

ftp 192.168.0.xxx(타겟보드의 ftp어드레스)

ftp>cd /srv/www/htdocs

ftp>put index.htm

 

10.타겟보드에서 lighttpd를 실행

#cd /tmp/lighttpd

#./sbin/arm-linux-lighttpd -f ./config/lighttpd.conf

(# /tmp/lighttpd/sbin/arm-linux-lighttpd -f /tmp/lighttpd/config/lighttpd.conf)

 

11.웹 브라우저에서의 테스트

http://(타겟보드아이피):(80이외의 포트의 경우)/(테스트용 html파일명)

ex) http://192.168.0.xxx:8080/index.htm

 

12. cgi test

/srv/www/htdocs

에 테스트할 html파일을 작성합니다.

예)

#vim tst_multi.htm

------------------------------------------------------------------

<html>

<form action="/cgi-bin/tst_multi.cgi" method="get">

<div><label>Multiplicand 1: <input name="m" size="5"></label></div>

<div><label>Multiplicand 2: <input name="n" size="5"></label></div>

<div><input type="submit" value="Multiply!"></div>

</form>

</html>

 

------------------------------------------------------------------

/srv/www/cgi-bin/에 테스트용 html파일이 호출할 cgi프로그램을 작성합니다.

예)

#vim tst_multi.c

------------------------------------------------------------------

#include <stdio.h>

#include <stdlib.h>

 

int main(void)

{

    char *data;

    long m, n;

    printf("%s%c%c\n",

    "Content-Type:text/html;charset=iso-8859-1", 13, 10);

    printf("<title>Multiplication results</title>\n");

    printf("<H3>Multiplication results</H3>\n");

    data = getenv("QUERY_STRING");

    if(data == NULL)

        printf("<P>Error! Error in passing data from to script.");

    else if(sscanf(data, "m=%ld&n=%ld", &m, &n) != 2)

        printf("<P>Error! Invalid data. Data must be numeric.");

    else

        printf("<P>The product of %ld and %ld is %ld.", m, n, m*n);

    return 0;    

}

 

------------------------------------------------------------------

컴파일

#arm-linux-gcc -o test_multi.cgi tst_multi.c

#arm-linux-strip test_multi.cgi (7342 -> 3472bytes로 줄어 들었습니다.)

 

호스트에서 파일 업로드

ftp>cd /srv/www/htdocs

ftp>put tst_multi.htm

ftp>mkdir /srv/www/cgi-bin

ftp>cd /srv/www/cgi-bin

ftp>put tst_multi.cgi

  

'System Programming > Tips' 카테고리의 다른 글

리눅스 압축 / 압축 해제 (zip, tar, tar.gz, tar.bz2)  (0) 2016.09.02
u-boot 분석  (0) 2016.07.11
임베디드 보드 포팅 순서  (0) 2016.07.06
U-Boot & 부트로더의 이해  (0) 2016.07.06
S3C2443 LCD  (0) 2016.06.27

+ Recent posts