3.용어 설명


  앞으로 강좌를 진행함에 있어 필요한 몇가지 용어를 간단히 설명할 것이다. 여기 설명된 내용은 반드시 알고 있어야 하는 중요한 내용임을 강조하는 바이다. 여기에 설명되지 않은 것들은 본인이 등록한 강좌중 WEB부분 강좌를 참고하기 바란다.

  • Document Directory

      모든 웹서버는 기본적으로 HTML파일이나 이미지 파일을 제공한다. 이런 파일을 담아두는 디렉토리를 가리켜서 Document디렉토리(Static Data Directory)라고 부른다. (CGI 디렉토리와 대비되는 개념).

      즉, 내가 /user/deadfire/ 디렉토리밑에 HTML파일을 두었다고 하자. 그럼, 웹서버에서 Document Directory Mapping을 설정해줘야 한다. 즉, 브라우저를 통해서 http://www.deadfire.com/라고 접근하게 되면 그게 바로 /user/deadfire/라는 디렉토리와 동일한 의미라고 지정해 줘야 하는 것이다. 이걸 매핑(Mapping)이라고 부른다.

      즉, http://www.deadfire.com/index.html이라고 접근한다면, /user/deadfire/ 라는 디렉토리에 index.html파일을 접근하는 것이다. UNIX에서 웹서버가 수행될 때 하나의 계정을 가지고 수행된다.(telnet user명) 그러므로, 이 index.html파일은 반드시 그 계정의 사용자가 읽을 수 있는 권한이 있어야 한다.

    매핑(Mapping)   이러한 매핑의 기능은 모든 웹서버에 다 존재한다. 옵션 사항으로 어디를 메인 HTML 디렉토리로 지정할지 정해주는 것이다. 물론 여러개의 매핑을 지정할 수 있다. 이렇게 함으로써 웹으로 접근하는 사용자는 특정한 디렉토리 이하에 있는 파일들만을 이용할 수 있게 하며, 또한 사용자들이 복잡한 디렉토리를 몰라도 항상 접근할 때는 루트(Root Directory)에 접근하는 것처럼 느끼게 만든다.


      일단 하나의 Document Directory가 Mapping되면 그 서브 디렉토리는 자동적으로 Mapping된다고 보면 된다.( 단 해당 디렉토리에 대해서는 read/execute권한이 있어야 한다. )즉, /user/deadfire/image/yes.jpg라는 파일이 있다면 당연히 웹으로 접근할 때 위와 같은 Mapping이 있다고 하면, http://www.deadfire.com/image/yes.jpg라고 접근할 수 있는 것이다. 물론 웹서비스 계정에 대한 Read권한은 반드시 있어야 한다.

    디폴트 파일   특정 디렉토리를 메인 Document 디렉토리(Root Directory)로 설정할 때, 같이 해주는 것이 있는데, 기본 HTML파일 즉, index.html, home.html등을 기본으로 설정할 수 있다. 이런 파일이 없는 경우는 디렉토리의 리스트(또는 Directory Indexing)를 제공하게 되는데, 이러면 해당 디렉토리에 존재하는 모든 파일이 다 보이게 되기 때문에 보안상 위험스럽기 때문에 별도의 옵션 사항으로 디렉토리 리스팅을 막아주는 옵션또한 존재한다.


  • CGI Directory

      그러나, CGI는 좀 다르다. CGI파일을 실행시켜서 실행한 결과를 전송 해야 하는 것이기 때문에 Document 디렉토리와는 달리 별도의 Mapping이 필요한 것이다.

      그럼, /user/deadfire/bin/이라는 디렉토리에 CGI파일을 두고 http://www.deadfire.com/cgi-bin/에 Mapping시켰다고 하면, UNIX용 실행파일이 /user/deadfire/cgi-bin/밑에 존재하게 되며, 해당 계정으로 read/execute권한이 있어야 한다.

      사용자가 http://www.deadfire.com/cgi-bin/test.cgi라고 접근하게 되면, 당연히 /user/deadfire/bin/밑에 test.cgi라는 실행파일이 있는 것이다.

      그럼 실행파일은 뭘로 작성하느냐? 당연히 C나 perl등 뭐든 해당 OS상에서 실행되는 프로그램(Executable Programe)이면 상관이 없다. 단지 HTTP규정에 맞는 형식으로 실행하면 되는 것이다. 그 규정을 배우는 것이 CGI프로그래밍의 목적인 것이다.

  • 상대 경로

      주의 깊은 사람은 3.2에서 URL의 명칭과 UNIX의 디렉토리 명칭이 다르다는 것을 알아차렸을 것이다. 그렇다. 어차피 Mapping이기 때문에 두 개의 디렉토리 명칭이 반드시 같을 필요는 없는 것이다. 그럼, 다음과 같이 매핑되었다고 가정하면,

    DirectoryMappingURL
    /user/deadfire//http://www.deadfire.com/
    /user/deadfire/bin/cgi-bin/http://www.deadfire.com/cgi-bin/


      html문서들은 /user/deadfire/라는 곳에 위치하고, CGI들은 /user/deadfire/bin/밑에 위치하게 되므로 서로 하이퍼링크로 연결할 때, 디렉토리를 접근하는 우선권은 URL에 있다.   뭔소리냐 하면, URL쪽에서 봤을때, Root가 /user/deadfire로 지정되어 있으므로, URL상으로는 거기서 부터 접근하는 것만을 허용한다는 말이다.

    접근 방법     디렉토리 접근 우선권이라는 말이 좀 우습지만,(사실이런말은 없다.) 웹을 사용하는 사용자 입장에서 시스템이 어떻게 구성이 되었던 간에, 또는 매핑이 어떻든 간에 사용자는 URL위주로 경로를 따라가게 된다.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 기초
서 언
준 비
용어 설명
기초 실습
기초 이론
작동 원리
Form Tag
     - GET METHOD
     - POST METHOD
Common Founction

Copyright ⓒ 1997 ~, Deadfire Program Master