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 |