PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

Microsoft PowerPoint - lab16.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - lab14.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션


vi 사용법

Sena Technologies, Inc. HelloDevice Super 1.1.0

untitled

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint 프레젠테이션

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

2009년 상반기 사업계획

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

PowerPoint 프레젠테이션

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft Word doc

슬라이드 1

Microsoft PowerPoint - chap01-C언어개요.pptx

KEY 디바이스 드라이버

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

Microsoft PowerPoint - lab15.pptx

/chroot/lib/ /chroot/etc/

제1장 Unix란 무엇인가?

The Pocket Guide to TCP/IP Sockets: C Version

2009년 상반기 사업계획

chapter1,2.doc

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint 웹 연동 기술.pptx

The Pocket Guide to TCP/IP Sockets: C Version

untitled


망고100 보드로 놀아보자-4

PowerPoint 프레젠테이션

본 강의에 들어가기 전

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

untitled

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

교육지원 IT시스템 선진화

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

MySQL-Ch10

제1장 Unix란 무엇인가?

PowerPoint Template

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

C 언어 프로그래밊 과제 풀이

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

게시판 스팸 실시간 차단 시스템

Microsoft Word - src.doc

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾


14-Servlet

untitled

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Chap 5 루트파일시스템 (Root F/S)

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 03-TCP Programming.ppt

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

K&R2 Reference Manual 번역본

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

PowerPoint 프레젠테이션

PowerPoint Template

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

Interstage5 SOAP서비스 설정 가이드

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

11장 포인터

1장. 유닉스 시스템 프로그래밍 개요

Microsoft Word - KPMC-400,401 SW 사용 설명서

LXR 설치 및 사용법.doc

BEA_WebLogic.hwp

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

6주차.key

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

bn2019_2

금오공대 컴퓨터공학전공 강의자료

JDK이클립스

Microsoft PowerPoint - es-arduino-lecture-03

작성자 : 기술지원부 김 삼 수

Microsoft Word ARM_ver2_0a.docx

3장

Microsoft PowerPoint - chap10-함수의활용.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

Transcription:

Web server porting 1 Jo, Heeseung

웹서버포팅 HBE-SM5-S4210 를임베디드웹서버로사용할수있도록웹서버를올리는작업 임베디드서버에널리쓰이는웹서버들중 GoAhead 라는웹서버를포팅 CGI 프로그램을이용하여웹에서 HBE-SM5-S4210 의 LED, 7- Segment, TextLCD 를제어실습 2

Goahead webserver 소스를다운받거나제공된 CD 안의소스를이용 경로 : [CD]\source\webserver\webs218.tar.gz Download - http://data.goahead.com/software/webserver/2.1.8/webs218.tar.gz 3

GoAhead 소스복사및압축해제 웹서버소스를복사한후에소스를압축해제 ws031202 라는디렉터리가생성되고, 그안에들어가면여러가지플랫폼에해당하는디렉터리가각각존재 - LINUX 디렉터리로이동 root@ubuntu:# cp /media/sm5-linux-111031/source/webserver/webs218.tar.gz /working root@ubuntu:# cd /working root@ubuntu:/working# tar xzvf webs218.tar.gz root@ubuntu:/working# cd ws031202/linux/ 4

GoAhead 컴파일을위한소스수정 HBE-SM5-S4210 타겟보드에서이프로그램을실행시키기위해서는크로스컴파일을해야함 - Makefile 을다음과같이수정 root@ubuntu:/working/ws031202/linux# vi Makefile ------------------------ 다음과같이수정한다 --------------------- # 크로스컴파일을하기위해서 " 컴파일러 " 와 " 라이브러리빌더 " 를추가 14 15 CC=arm-linux-gcc 16 AR=arm-linux-ar 17 # 마지막줄에서 cc 를 $(CC) 로변경 158 $(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $< ----------------------- 저장하고종료한다 ------------------------ 5

GoAhead 컴파일을위한소스수정 main.c 파일수정 root@ubuntu:/working/ws031202/linux# vi main.c -------------------------- 다음과같이수정한다 ------------------------- 24 #include <sys/types.h> 25 #include <sys/wait.h> 26 #include <sys/ioctl.h> 27 #include <net/if.h> 129 static int initwebs() 130 { 131 //struct hostent *hp; 132 //struct in_addr intaddr; 133 char host[128], dir[128], webdir[128]; 134 char *cp; 6

154 if (gethostname(host, sizeof(host)) < 0) { 155 error(e_l, E_LOG, T("Can't get hostname")); 156 return -1; 157 } 158 #if 0 159 if ((hp = gethostbyname(host)) == NULL) { 160 error(e_l, E_LOG, T("Can't get host address")); 161 return -1; 162 } 163 memcpy((char *) &intaddr, (char *) hp->h_addr_list[0], 164 (size_t) hp->h_length); 165 #endif 166 int sock, ret; 167 struct ifreq ifr; 168 169 sock = socket(af_inet, SOCK_DGRAM, IPPROTO_UDP); 170 if (sock < 0) { 171 printf("error: get_myipaddr(), socket() failed!!\n"); 172 return -1; 173 } 7

174 strcpy(ifr.ifr_name, "eth0"); 175 ret = ioctl(sock, SIOCGIFADDR, &ifr); 176 if (ret < 0) { 177 printf("error: get_myipaddr(), ioctl() failed!!\n"); 178 close(sock); 179 return -1; 180 } 194 webssetdefaultdir(webdir); 195 //cp = inet_ntoa(intaddr); 196 cp = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr); 197 asctouni(wbuf, cp, min(strlen(cp) + 1, sizeof(wbuf))); 295 if (*url == '\0' gstrcmp(url, T("/")) == 0) { 296 websredirect(wp, T("index.html")); 297 return 1; 298 } -------------------------- 저장하고종료한다 -------------------------- 8

GoAhead 컴파일을위한소스수정 misc.c 파일수정 root@ubuntu:/working/ws031202/linux# vi../misc.c ----------------- 다음과같이수정한다 ------------------------- 61 //static int strnlen(char_t *s, unsigned int n); 62 static void put_char(strbuf_t *buf, char_t c); 63 static void put_string(strbuf_t *buf, char_t *s, int len, 428 #if 0 429 static int strnlen(char_t *s, unsigned int n) 430 { 431 unsigned int len; 432 433 len = gstrlen(s); 434 return min(len, n); 435 } 436 #endif ------------------ 저장하고종료한다 -------------------------- 9

GoAhead 컴파일 다음과같이 make 를실행하여컴파일 생성된파일들을확인 root@ubuntu:/working/ws031202/linux# make root@ubuntu:/working/ws031202/linux# ls Makefile libwebs.a main.c main.o webs 위와같이 webs 라는웹서버실행파일과 libwebs.a 라는라이브러리가생성 10

인덱스파일작성 다음으로웹서버의인덱스파일로사용할 index.html 파일을생성 테스트용으로간단히작성하고, 각자다른내용을추가 root@ubuntu:/working/ws031202/linux# vi index.html -------------------- 다음과같이수정한다 ---------------------- <html> <head> <title>the First webs test!</title> </head> <body> The first embedded linux web page </body> </html> --------------------- 저장하고종료한다 ---------------------- root@ubuntu:/working/ws031202/linux# 11

웹서버실행파일인 webs 와앞에서작성한 index.html 을타겟보드로복사 타겟보드에서 GoAhead 실행을위한준비 타겟보드에서웹서버에접속했을때보여질웹페이지디렉터리 (/web) 를생성 cgi 가들어갈디렉터리 (/web/cgi-bin) 를생성 로그인한후에 /web 디렉터리가존재하는지확인 현재 HBE-SM5-S4210 의루트파일시스템에는웹서버가포팅되어있기때문에 /web 디렉터리가이미존재 실습을위해서기존에있던 /web 디렉터리를삭제하거나다른이름으로이동 - 여기에서는 /web 디렉터리를임시로다른이름으로이동 12

타겟보드에서 GoAhead 실행을위한준비작업 [root@sm5s4210 ~]# ls / ------------------다음과같은메시지가 출력된다 ----------------- bin jffs lost+found sbin tmp dev lib mnt sys usr etc linuxrc proc sysfs var home lost+found root test web [root@sm5s4210 ~]# mv /web/ /web-org [root@sm5s4210 ~]# ls / ------------------다음과같은메시지가 출력된다 ----------------- bin jffs lost+found sbin tmp dev lib mnt sys usr etc linuxrc proc sysfs var home lost+found root test web-org 13

타겟보드에서 GoAhead 실행을위한준비작업 /bin 디렉터리에 webs 실행파일이존재하는지확인 현재 HBE-SM5-S4210 의루트파일시스템에는웹서버가포팅되어있기때문에 /bin 디렉터리에 webs 실행파일이이미존재 - 실습을위해서기존에있던 webs 파일을삭제하거나다른이름으로이동 - 여기에서는 /bin/webs 파일을임시로다른이름으로이동 [root@sm5s4210 ~]# ls /bin/webs ------------------ 다음과같은메시지가출력된다 ----------------- /bin/webs [root@sm5s4210 ~]# mv /bin/webs /bin/webs-org [root@sm5s4210 ~]# ls /bin/webs-org ------------------ 다음과같은메시지가출력된다 ----------------- /bin/webs-org 14

타겟보드에서 GoAhead 실행을위한준비작업 다음과같이 /web/cgi-bin 디렉터리를생성 [root@sm5s4210 ~]# mkdir -p /web/cgi-bin/ 15

타겟보드에 GoAhead 실행파일및 main.html 다운로드 호스트 PC 에있는 webs 와 index.html 파일을타겟보드의 /bin 과 /web 로복사 타겟보드로복사하는방법은 nfs 를이용 16

웹서버프로세스가실행되고있는지확인 루트파일시스템에서는부팅시에웹서버가자동으로실행되도록설정되어있음 webs 를실행하기전에웹서버가실행되고있는지확인한후에실행 웹서버가실행되고있으면프로세스를 kill [root@sm5s4210 ~]# ps grep webs ------------------ 다음과같은메시지가출력된다 ----------------- 1316 root 1856 S /bin/webs [root@sm5s4210 ~]# kill -9 1316 17

타겟보드에서 GoAhead 실행 다음과같이웹서버를실행 [root@sm5s4210 ~]# /bin/webs & [root@sm5s4210 ~]# ps grep webs 1424 root 1988 S /bin/webs 1426 root 3536 S grep -i webs 18

호스트 PC 의웹브라우저로웹서버에접속 타겟보드의웹서버가정상적으로동작하는지확인 호스트 PC 의웹브라우저를이용 - 웹브라우저로타겟보드의웹서버에접속시반드시 IP 설정을타겟보드와통신이가능하도록맞춰주어야함 19

호스트 PC 의웹브라우저로웹서버에접속 브라우저의주소입력창에 http://192.168.0.150/index.html 을입력 20

CGI Programming 공통게이트웨이인터페이스 (CGI, Common Gateway Interface) 브라우저에서서버로정보를전달하기위한방법을정의하는인터페이스사양 브라우저에서이런정보를받아들이는프로그램을흔히 CGI 프로그램이라함 CGI 프로그램에서는정보를처리하고나서다시브라우저명령이나동적인문서를전달하기위해 HTTP 프로토콜을사용 CGI 를구현하기위하여웹브라우저에서 FORM 태그를통해사용자의입력값들을웹서버로보내고, 서버에서는그값을 CGI 프로그램으로입력값을넘겨줌 21

CGI Programming Web 에서입력값전달방식 웹에서사용자의입력값들을넘겨주기위하여는 <FORM> 태그를사용 <FORM> 태그의구성 <form method=get action="cgi-bin/8bitled.cgi"> <p align="center"> 0x <input type="text" name="value" maxlength="2" size="2"> <input type="submit" name="button" value="input"></p> </form> 22

CGI Programming Web 에서입력값전달방식 get method - <form> 태그에 method=get 으로하거나생략하면사용자의입력값들이환경변수에저장되어전달 - 각입력값들이기본 URL 에붙은인수 (parameter) 로서첨가되어 CGI 프로그램으로값을전달 - get method 를이용하면, 그입력값들이환경변수의하나인 QUERY_STRING 에들어가전달되는데 CGI 프로그램은 QUERY_STRING 에들어있는값을읽음 - 이때그값들은입력된대로넘어가는것이아니라서버에의해여러가지로변환 (encoding) 되어넘어가며 CGI 프로그램에서는그값들을 getenv() 로읽어들여해독 (decoding) 하여야함 23

CGI Programming Web 에서입력값전달방식 post method - <form> 태그에서 method=post 로하면, stdin(standard input: 표준입력 ) 을통해전달 - post method 는 stdin 을이용하므로전달하려는데이터양에제한이없음 - post method 에서는환경변수들또한 stdin 과함께전달됨 - 입력값들이 encoding 되어넘어오기때문에 CGI 에서그값들을 decoding 해야함 24

CGI Programming C 언어를이용한 CGI 프로그래밍 CGI 프로그램에서는출력할데이터에앞서적절한헤더정보를보내웹서버가어떤타입을출력하려는지인식하게해야함 웹서버에서헤더를보고사용자의웹브라우저로데이터를보낼수있음 다음의예는웹서버에게어떤타입을출력하려고하는지알수있게해줌 printf( Content-type: text/html\n\n ); 25

CGI Programming CGI 예제작성 root@ubuntu:# mkdir /working/web root@ubuntu:# cd /working/web/ root@ubuntu:/working/web# vi first.c ----------------------- 다음과같이수정한다 ------------------------ #include <stdio.h> int main() { printf("content-type: text/html\n\n"); printf("<html>\n<head><title>the First CGI program</title></head>\n"); printf("<body>\n<center> It is a CGI program test</center>\n<body>\n </html>"); return 0; } ----------------------- 저장하고종료한다 ------------------------- 26

CGI Programming first.c 소스를컴파일 root@ubuntu:/working/web# arm-linux-gcc -o first.cgi first.c first.html 파일을작성 root@ubuntu:/working/web# vi first.html --------------------- 다음과같이수정한다 -------------------- <html> <head> <title>test CGI PROGRAM!</title> </head> <body><center><a href="cgi-bin/first.cgi">the first CGI PROGRAM!</a> </center> </body> </html> -------------------------- 저장하고종료한다 -------------------- 27

CGI Programming first.cgi 와 first.html 파일을타겟보드로복사 타겟보드에 first.html 과 first.cgi 을 /web 과 /web/cgi-bin 에복사 [root@sm5s4210 ~]# mv first.html /web/ [root@sm5s4210 ~]# mv first.cgi /web/cgi-bin/ 28

CGI Programming CGI 예제실행확인 호스트 PC의웹브라우저에서웹서버에접속 주소창에 http://192.168.0.150/first.html을입력 29

CGI Programming CGI 예제실행확인 화면에출력된 The first CGI PROGRAM! 을누르면 /web/cgi-bin 에있는 first.cgi 프로그램이동작 30