httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sl...@apache.org
Subject cvs commit: httpd-2.0/docs/manual upgrading.html.ko.euc-kr new_features_2_0.html.ko.euc-kr mpm.html.ko.euc-kr index.html.ko.euc-kr dso.html.ko.euc-kr
Date Sat, 15 Jun 2002 15:34:07 GMT
slive       2002/06/15 08:34:06

  Added:       docs/manual upgrading.html.ko.euc-kr
                        new_features_2_0.html.ko.euc-kr mpm.html.ko.euc-kr
                        index.html.ko.euc-kr dso.html.ko.euc-kr
  Log:
  New Korean translations
  
  Submitted by: Jeon Jeongho <mahajjh@myscan.org>
  Reviewed by: Choi Kyusic
  
  Revision  Changes    Path
  1.1                  httpd-2.0/docs/manual/upgrading.html.ko.euc-kr
  
  Index: upgrading.html.ko.euc-kr
  ===================================================================
  <?xml version="1.0" encoding="EUC-KR"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
    <head>
      <meta name="generator" content="HTML Tidy, see www.w3.org" />
  
      <title>Upgrading to 2.0 from 1.3</title>
    </head>
    <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
  
    <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
    vlink="#000080" alink="#FF0000">
      <!--#include virtual="header.html" -->
  
      <h1 align="center">1.3에서 2.0으로 업그레이드</h1>
  
      <p>우리는 기존 아파치 사용자가 업그레이드하는 것을 돕기위해 중요한
      정보를 알려주는 문서를 유지한다. 이 문서는 간단한 설명이므로,
      <a href="new_features_2_0.html">새로운 기능</a> 문서나
      <code>src/CHANGES</code> 파일에서 정보를 찾아봐야 한다.</p>
  
      <h3>컴파일시 구성 변화</h3>
  
      <ul>
        <li>아파치는 이제 <a
        href="install.html">아파치 컴파일과 설치</a>를 위해
        <code>autoconf</code>와 <code>libtool</code> 시스템을 사용한다.
        이 시스템의 사용법은 Apache 1.3의 APACI 시스템과 같지는 않지만
        비슷하다.</li>
  
        <li>컴파일 여부를 선택할 모듈외에 Apache 2.0은 요청을 처리하는
        주요 부분을 <a href="mpm.html">아파치 다중처리 모듈</a>
        (Multi-Processing Modules, MPMs)로 옮겼다.</li>
      </ul>
  
      <h3>실행시 설정 변화</h3>
  
      <ul>
        <li>Apache 1.3에서 서버 핵심에 있었던 많은 지시어들이 이제는 MPM에
        있다. 서버가 Apache 1.3과 최대한 비슷하게 동작하길 바란다면
        <a href="mod/prefork.html">prefork</a> MPM을 선택해야 한다.
        다른 MPM은 프로세스 생성과 요청 처리를 조절하는데 다른 지시어를
        사용한다.</li>
  
        <li><a href="mod/mod_proxy.html">프록시 모듈</a>는 HTTP/1.1에 맞추어
        수정되었다. 중요한 변화중 하나는 이제 프록시 접근 제어가
        &lt;Directory proxy:&gt; 블록이 아닌 &lt;Proxy&gt; 블록에
        위치하는 점이다.</li>
  
        <li>몇몇 모듈에서 PATH_INFO (진짜 경로명 뒤에 나오는 경로 정보)
        처리가 변경되었다. 전에 핸들러였지만 이제 이제 필터로
        구현되는 모듈은 더 이상 PATH_INFO가 있는 요청을 받아들이지
        못한다. <a href="mod/mod_include.html">INCLUDES</a>와 같은
        필터는 core 핸들러 상위에 구현되기때문에 PATH_INFO가 있는
        요청을 거부한다. core 핸들러가 PATH_INFO가 있는 요청을 받아들이고
        server-side include에서 PATH_INFO를 사용하게 하려면, <a
        href="mod/core.html#acceptpathinfo">AcceptPathInfo</a> 지시어를
        사용해야 한다.</li>
  
        <li><code>CacheNegotiatedDocs</code> 지시어는 이제 아규먼트로
        <code>on</code>과 <code>off</code>를 받는다. 기존의
        <code>CacheNegotiatedDocs</code>는
        <code>CacheNegotiatedDocs on</code>으로 대체되야 한다.</li>
  
        <li>
          <code>ErrorDocument</code> 지시어는 더이상 메세지를 나타내는
          아규먼트 앞에 따옴표를 사용하지 않는다. 대신 쌍따옴표로
          메세지를 묶어야 한다. 예를 들어 과거
  
          <blockquote>
            <code>ErrorDocument 403 "Some Message</code>
          </blockquote>
          는 다음과 같이 수정되야 한다.
  
          <blockquote>
            <code>ErrorDocument 403 "Some Message"</code>
          </blockquote>
          두번째 아규먼트가 유효한 URL이나 경로명이 아니라면
          메세지로 간주한다.
        </li>
  
        <li><code>AccessConfig</code>와 <code>ResourceConfig</code>
        지시어는 더이상 없다. 기존에 사용하던 지시어는 같은 기능을 하는
        <a href="mod/core.html#include"><code>Include</code></a>
        지시어로 대체할 수 있다. 과거에 내용을 설정파일에 포함하지 않고
        이 지시어들의 기본값을 사용했다면, http.conf에
        <code>Include conf/access.conf</code>와 <code>Include
        conf/srm.conf</code>를 추가할 필요가 있다. 아파치가 이전 지시어와
        같은 순서로 설정파일을 읽게하려면 <code>Include</code> 지시어를
        httpd.conf 끝에 두고, <code>srm.conf</code>이
        <code>access.conf</code> 앞에 나와야 한다.</li>
  
        <li><code>BindAddress</code>와 <code>Port</code> 지시어는
        더이상 없다. 더 유연한
        <code><a href="mod/mpm_common.html#listen">Listen</a></code>
        지시어가 같은 기능을 한다.</li>
  
        <li>Apache-1.3에서 <code>Port</code>의 다른 용도는 자기참조 URL의
        포트 번호를 설정하는 일이였다. Apache-2.0에서 이 기능은
        새로운 <a href="mod/core.html#servername"><code>ServerName</code></a>으로
        한다. 이는 한 지시어에 호스트명<em>과</em> 자기참조 URL을 위한
        포트 번호를 같이 설정할 수 있게 수정되었다.</li>
  
        <li><code>ServerType</code> 지시어는 더이상 없다.
        요청을 서비스하는 방법은 이제 MPM 선택에 달렸다.
        현재 inetd에서 시작하도록 설계된 MPM은 없다.</li>
  
        <li><code>AgentLog</code>, <code>RefererLog</code>,
        <code>RefererIgnore</code> 지시어를 제공한
        mod_log_agent와 mod_log_referer 모듈이 없어졌다.
        agent 로그와 referer 로그는 mod_log_config의
        <a href="mod/mod_log_config.html#customlog">CustomLog</a>
        지시어를 사용하여 계속 제공된다.</li>
  
        <li><code>AddModule</code>과 <code>ClearModuleList</code>
지시어는
        더이상 없다. 이 지시어들은 모듈을 올바른 순서로 활성화하려고
        사용되었다. 새로운 Apache 2.0 API는 모듈이 활성화되는 순서를 명시적으로
        지정할 수 있게하여, 이 지시어들이 불필요하게 되었다.</li>
  
        <li><code>FancyIndexing</code> 지시어가 없어졌다.
        같은 기능이 <a
        href="mod/mod_autoindex.html#indexoptions">IndexOptions</a>
        지시어의 <code>FancyIndexing</code> 옵션으로 제공된다.</li>
  
      </ul>
  
      <h3>기타 변화</h3>
  
      <ul>
        <li>가상호스트 설정을 출력하기위한 <code>httpd</code>의 명령행
        옵션 <code>-S</code>가 <code>-t -D
        DUMP_VHOSTS</code>로 대체되었다.</li>
  
        <li>Apache 1.3에서 실험적이였던 mod_auth_digest 모듈이
        이제 표준 모듈이 되었다.</li>
  
        <li>Apache 1.3에서 실험적이였던 mod_mmap_static 모듈이
        mod_file_cache로 대체되었다.</li>
  
        <li>배포본이 완전히 새로 구성되어 더이상 독립된 <code>src</code>
        디렉토리가 없다. 대신 소스는 주 배포본 디렉토리 아래 논리적으로
        구성되고, 컴파일된 서버는 독립된 디렉토리에 설치해야 한다.</li>
      </ul>
  
      <h3>추가 모듈</h3>
  
      <p>Apache 2.0에서 서버 API가 많이 변경되었다. Apache 1.3 API에
      맞춰진 기존 모듈은 수정없이 Apache 2.0에서 사용할 수
      <strong>없다</strong>. 자세한 정보는 <a href="developer/">개발자
      문서</a>를 참고하라.</p>
      <!--#include virtual="footer.html" -->
    </body>
  </html>
  
  
  
  
  1.1                  httpd-2.0/docs/manual/new_features_2_0.html.ko.euc-kr
  
  Index: new_features_2_0.html.ko.euc-kr
  ===================================================================
  <?xml version="1.0" encoding="EUC-KR"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
    <head>
      <meta name="generator" content="HTML Tidy, see www.w3.org" />
  
      <title>Apache 2.0의 새로운 기능</title>
    </head>
    <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
  
    <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
    vlink="#000080" alink="#FF0000">
      <!--#include virtual="header.html" -->
  
      <h1 align="center">Apache 2.0의 새로운 기능 개요</h1>
  
      <p>나아진 점: <a href="#core">핵심</a> | <a
      href="#module">모듈</a></p>
      <hr />
  
      <h2><a id="core" name="core">핵심에서 나아진 점:</a></h2>
  
      <dl>
        <dt><strong>유닉스 쓰레드</strong></dt>
  
        <dd>POSIX 쓰레드를 지원하는 유닉스 시스템에서 아파치를
        여러 프로세스와 여러 쓰레드로 혼합해서 실행할 수 있다.
        전부는 아니지만 많은 경우 범위성(scalability)을 향상시킨다.</dd>
  
        <dt><strong>새로운 컴파일 시스템</strong></dt>
  
        <dd>컴파일 시스템이 autoconf와 libtool을 사용하도록
        재작성되었다. 그래서 아파치 구성 시스템이 다른 패키지들과
        좀더 비슷해졌다.</dd>
  
        <dt><strong>여러 프로토콜 지원</strong></dt>
  
        <dd>이제 아파치는 여러 프로토콜을 서비스할 수 있는 구조를
        갖췄다. mod_echo가 그 예로 작성되었다.</dd>
  
        <dt><strong>비유닉스 플래폼의 더 나은 지원</strong></dt>
  
        <dd>Apache 2.0는 BeOS, OS/2, 윈도우즈와 같은 비유닉스
        플래폼에서 더 빠르고 안정화되었다. 이제 아파치는 이들 플래폼에서
        버그가 많고 성능이 느렸던 POSIX 호환층 대신 자체 API로 구현된
        플래폼 특유의 <a href="mpm.html">multi-processing module</a> (MPM)과
        Apache Portable Runtime (APR)으로 구현된다.</dd>
  
        <dt><strong>새로운 아파치 API</strong></dt>
  
        <dd>모듈 API가 2.0에서 상당히 변했다. 1.3의 많은 모듈
        순서와 우선순위 문제가 사라졌다. 2.0은 이를 대부분 자동으로 하며,
        모듈 순서는 이제 더 유연한 훅(hook) 단위로 정한다. 또,
        아파치 서버 핵심을 수정하지 않고 새로운 모듈 기능을 제공하기위한
        함수가 추가되었다.</dd>
  
        <dt><strong>IPv6 지원</strong></dt>
  
        <dd>하위 Apache Portable Runtine 라이브러리가 IPv6를 지원하는
        시스템에서 아파치는 기본적으로 IPv6 소켓을 기다린다.
        또, Listen, NameVirtualHost, &lt;VirtualHost&gt; 지시어가
        IPv6 숫자 주소 문자열을 지원한다. (예, "Listen [fe80::1]:8080").</dd>
  
        <dt><strong>필터링</strong></dt>
  
        <dd>이제 아파치 모듈을 서버로 오고가는 내용 흐름에 대한
        필터로 사용할 수 있다. 예를 들어 mod_include의 INCLUDES 필터를
        사용하여 CGI 스크립트의 출력에서 Server Side Include 지시어를
        파싱할 수 있다.</dd>
  
        <dt><strong>다국어 오류 응답</strong></dt>
  
        <dd>브라우저로 보내는 오류 응답 메세지가 이제 SSI 문서를
        사용하여 다국어로 제공된다. 관리자가 일관된 외양을 위해 이 문서를
        수정할 수 있다.</dd>
  
        <dt><strong>간단해진 설정</strong></dt>
  
        <dd>혼란을 주던 많은 지시어들이 간단해졌다. 자주 혼란을 주던
        Port와 BindAddress 지시어는 없어지고 IP 주소 바인딩에
        Listen 지시어만이 사용된다. ServerName 지시어는 리다이렉션과
        가상호스트 인식을 위해서만 서버명과 포트를 지정한다.</dd>
  
        <dt><strong>Windows NT 유니코드 자체 지원</strong></dt>
  
        <dd>Windows NT에서 Apache 2.0은 이제 모든 파일명 인코딩에
        utf-8을 사용한다. 이는 하위 유니코드 파일시스템에 직접 전달되어,
        Windows 2000과 Windows XP를 포함한 모든 Windows NT기반 시스템에
        다국어 지원을 제공한다. <em>이 기능은 Windows 95, 98, ME에는
        지원되지않고, 파일시스템 접근에 전과 같이 시스템의 지역 코드페이지를
        사용한다.</em></dd>
  
      </dl>
      <hr />
  
      <h2><a id="module" name="module">모듈에서 나아진 점:</a></h2>
  
      <dl>
        <dt><strong>mod_ssl</strong></dt>
  
        <dd>Apache 2.0에서 새로 추가되었다. 이 모듈은 OpenSSL이 제공하는
        SSL/TLS 암호화 프로토콜의 인테페이스다.</dd>
  
        <dt><strong>mod_dav</strong></dt>
  
        <dd>Apache 2.0에서 새로 추가되었다. 이 모듈은 웹 내용을
        올리고 유지하기위한 HTTP Distributed Authoring and Versioning
        (DAV) 명세를 구현한다.</dd>
  
        <dt><strong>mod_auth_digest</strong></dt>
  
        <dd>공유메모리를 사용하여 프로세스간 세션 캐싱을 지원한다.</dd>
  
        <dt><strong>mod_charset_lite</strong></dt>
  
        <dd>Apache 2.0에서 새로 추가되었다. 이 실험적인 모듈은
        문자셋 변환과 재작성 기능을 제공한다.</dd>
  
        <dt><strong>mod_file_cache</strong></dt>
  
        <dd>Apache 2.0에서 새로 추가되었다. 이 모듈은 Apache 1.3의
        mod_mmap_static 기능에 더 나은 캐쉬 기능을 추가했다.</dd>
  
        <dt><strong>mod_headers</strong></dt>
  
        <dd>이 모듈은 Apache 2.0에서 더 유연해졌다. 이제 mod_proxy가
        사용하는 요청 헤더를 수정할 수 있고, 경우에 따라서 응답
        헤더를 설정할 수도 있다.</dd>
  
        <dt><strong>mod_proxy</strong></dt>
  
        <dd>이 프록시 모듈은 새로운 필터 구조를 이용하고 더 믿을만한 HTTP/1.1
        프록시를 구현하기위해 완전히 재작성되었다. 추가로 새로운
        &lt;Proxy&gt; 설정 섹션은 프록시 설정을 더 쉽게 (그리고 내부적으로
        더 빠르게) 만든다. 과거 &lt;Directory "proxy:..."&gt; 설정은 이제
        지원하지 않는다. 모듈은 proxy_connect, proxy_ftp, proxy_http와 같이
        지원하는 프로토콜 별로 나눠졌다.</dd>
  
        <dt><strong>mod_negotiation</strong></dt>
  
        <dd>새로운 <a
        href="mod/mod_negotiation.html#forcelanguagepriority"
        >ForceLanguagePriority</a> 지시어는 클라이언트가 NOT ACCEPTABLE이나
        MULTIPLE CHOICES 응답 대신 모든 경우 한 문서를 받는 것을 보장한다.
        추가로 협상 알고리즘과 MultiViews 알고리즘이 더 일관된 결과를
        내도록 수정되었고, 문서 내용을 포함할 수 있는 새로운 형식의
        type map이 추가되었다.</dd>
  
        <dt><strong>mod_autoindex</strong></dt>
  
        <dd>자동으로 생성된 디렉토리 목록이 이제 더 깔끔한 형식을 위해
        HTML 표를 사용할 수 있게 되었고, 버전 정렬을 포함하여 정렬을
        자세히 조절할 수 있고, 디렉토리 목록을 와일드카드로 걸러낼 수 있다.</dd>
  
        <dt><strong>mod_include</strong></dt>
  
        <dd>새로운 지시어로 SSI 요소의 기본 시작 태그와 마침 태그를
        수정할 수 있고, 오류와 시간형식 설정이 SSI 문서가 아닌
        주 설정파일에서 가능하게 되었다. mod_include에서 (이제 Perl
        정규표현식 문법에 기반한) 정규표현식 파싱과 그룹 결과를
        $0 ... $9 변수로 얻을 수 있다.</dd>
  
        <dt><strong>mod_auth_dbm</strong></dt>
  
        <dd>이제 <a href="mod/mod_auth_dbm.html#authdbmtype">AuthDBMType</a>
        지시어를 사용하여 여러 DBM류 데이터베이스를 지원한다.</dd>
  
        <dt><strong>mod_auth_db</strong></dt>
  
        <dd>AuthDBMType 지시어가 있는 mod_auth_dbm이 기능을
        대신하기때문에 없어졌다.</dd>
  
  
      </dl>
      <!--#include virtual="footer.html" -->
    </body>
  </html>
  
  
  
  
  1.1                  httpd-2.0/docs/manual/mpm.html.ko.euc-kr
  
  Index: mpm.html.ko.euc-kr
  ===================================================================
  <?xml version="1.0" encoding="EUC-KR"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
    <head>
      <meta name="generator" content="HTML Tidy, see www.w3.org" />
  
      <title>Apache Multi-Processing Modules (MPMs)</title>
    </head>
    <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
  
    <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
    vlink="#000080" alink="#FF0000">
      <!--#include virtual="header.html" -->
  
      <h1 align="center">아파치 다중처리 모듈</h1>
  
      <p>아파치 웹서버는 다양한 환경의 다양한 플래폼에서 동작할 수 있도록
      강력하고 유연하게 설계되었다. 다른 플래폼과 다른 환경은 보통
      다른 기능을 요구하며, 어떤 기능을 가장 효율적으로 구현하는
      방법이 다를 수도 있다. 아파치는 모듈화된 설계로 이런 다양한
      환경에 항상 적응해왔다. 그래서 웹마스터는 컴파일시 혹은
      실행시 어떤 모듈을 읽어들일지 선택하여 어떤 기능을 서버에
      포함할지 결정할 수 있다.</p>
  
      <p>Apache 2.0는 이런 모듈화된 설계를 웹서버의 가장 기본적인
      기능에까지 확장했다. 서버는 시스템에서 네트웍 포트에 연결하고,
      받아들인 요청을 처리할 자식들에게 분배하는
      다중처리 모듈 (Multi-Processing Modules, MPMs)을 선택할 수 있다.</p>
  
      <p>서버를 이 정도로 모듈화하면 두가지 중요한 장점이 있다:</p>
  
      <ul>
        <li><a href="mod/mpm_winnt.html">mpm_winnt</a>가 Apache 1.3에서
        사용한 POSIX층 대신 자체 네트웍 기능을 사용할 수 있는 등,
        아파치는 여러 다양한 운영체제를 더 깔끔하고 효율적으로
        지원할 수 있다. 이 장점은 특수화된 MPMs를 구현하는 다른
        운영체제에도 적용된다.</li>
  
        <li>서버는 특정 사이트의 요구조건에 더 특수화될 수 있다.
        예를 들어 많은 범위성(scalability)이 필요한 사이트는
        <a href="mod/worker.html">worker</a>와 같은 쓰레드 MPM을
        사용하고, 안정성과 오래된 소프트웨어와 호환성이 필요한
        사이트는 <a href="mod/prefork.html">preforking MPM</a>을
        사용할 수 있다. 추가로 다른 사용자아이디로 여러 호스트를
        서비스하는 것(<a href="mod/perchild.html">perchild</a>)과
        같은 특별한 기능도 제공된다.</li>
      </ul>
  
      <p>사용자가 보기에 MPMs는 다른 아파치 모듈과 거의 비슷해 보인다.
      주된 차이는 한번에 오직 한 MPM만이 서버에 로드되야 한다는 점이다.
      가능한 MPMs 목록은 <a href="mod/">모듈 목록 페이지</a>에 있다.</p>
  
      <h2 align="center">MPM 선택하기</h2>
  
      <p>MPMs는 구성중에 선택하여 서버에 컴파일되야 한다.
      컴파일러는 쓰레드를 사용한다는 것을 알면 많은 함수를
      최적화할 수 있다. 유닉스에서 몇몇 MPMs는 쓰레드를 쓰고 나머지는
      아니므로, MPM이 구성중에 선택되어 아파치에 컴파일될때 아파치는
      더 빠른 속도를 낸다.</p>
  
      <p>원하는 MPM을 선택하려면 ./configure 스크립트에
      with-mpm= <em>NAME</em> 아규먼트를 사용하라. <em>NAME</em>은
      원하는 MPM 이름이다.</p>
  
      <p>서버가 컴파일된후 <code>./httpd -l</code>로 선택된 MPM을
      알 수 있다.  이 명령어는 MPM을 포함하여 서버에 컴파일된 모든
      모듈을 알려준다.</p>
  
      <h2 align="center">MPM 기본값</h2>
  
      <ul>
        <li>BeOS: beos</li>
  
        <li>OS/2: mpmt_os2</li>
  
        <li>유닉스: prefork</li>
  
        <li>윈도우즈: winnt</li>
      </ul>
      <!--#include virtual="footer.html" -->
    </body>
  </html>
  
  
  
  
  1.1                  httpd-2.0/docs/manual/index.html.ko.euc-kr
  
  Index: index.html.ko.euc-kr
  ===================================================================
  <?xml version="1.0" encoding="EUC-KR"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
  <head>
  <title>아파치 설치 검사용 페이지</title>
  <!-- original translation by Lee, Kuk Hyun <errai@hitel.net>, March 1 2000 -->
  <!-- minor correction by Jeon, Jeongho <mahajjh@myscan.org>, June 6 2002 -->
  </head>
  <!-- Background white, links blue (unvisited), navy (visited), red
  (active) -->
  <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
  vlink="#000080" alink="#FF0000">
  <p>이 페이지가 보인다면 시스템에
  <a href="http://www.apache.org/foundation/preFAQ.html">Apache 웹서버</a>
  소프트웨어가 성공적으로 설치되었음을 의미합니다. 이제 이 디렉토리에
  내용을 추가하고 이 페이지를 바꿀 수 있습니다.</p>
  
  <hr width="50%" size="8" />
  <h2 align="center">예상한 웹사이트 대신 이 페이지가 보입니까?</h2>
  
  <p>사이트 관리자가 웹서버 설정을 변경했기 때문에 이 페이지가
  보이는 것 입니다. <strong>질문사항은 이 서버의 관리자에게 문의하시길
  바랍니다.</strong> Apache Software Foundation은 이 사이트 관리자가
  사용하는 웹서버를 만든 단체일 뿐, 사이트 관리와 아무런 관계가 없고
  설정문제에 관한 도움을 드릴 수 없습니다.</p>
  
  <hr width="50%" size="8" />
  <p>아파치 <a href="manual/">문서</a>는 이 배포판에 포함되어 있습니다.</p>
  
  <p>아파치를 사용하는 웹서버에서 아래 이미지를 사용하는건 여러분의
  자유입니다. 아파치를 사용해 주셔서 감사합니다!</p>
  
  <div align="center"><img src="apache_pb.gif" alt="" /></div>
  </body>
  </html>
  
  
  
  
  1.1                  httpd-2.0/docs/manual/dso.html.ko.euc-kr
  
  Index: dso.html.ko.euc-kr
  ===================================================================
  <?xml version="1.0" encoding="EUC-KR"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
  <!-- 용어 같이 기제 -->
    <head>
      <meta name="generator" content="HTML Tidy, see www.w3.org" />
  
      <title>동적공유객체 (DSO) 지원</title>
    </head>
    <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
  
    <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
    vlink="#000080" alink="#FF0000">
      <!--#include virtual="header.html" -->
  
      <h1 align="center">동적공유객체 (DSO) 지원</h1>
  
      <p>아파치 웹서버는 관리자가 모듈들을 선택하여 서버에 포함할
      기능을 결정할 수 있는 모듈화된 프로그램이다. 모듈은 서버가 컴파일될때
      <code>httpd</code> 실행파일에 정적으로 컴파일될 수 있다.
      아니면 모듈은 중심이 되는 <code>httpd</code> 실행파일과 별도로
      동적공유객체(Dynamic Shared Objects, DSOs)로 컴파일될 수 있다.
      DSO 모듈은 서버가 컴파일될때 컴파일하거나 Apache Extension
      Tool (<a href="programs/apxs.html">apxs</a>)을 사용하여 나중에
      컴파일하고 추가할 수 있다.</p>
  
      <p>이 문서는 DSO 모듈 사용법과 관련된 이론을 설명한다.</p>
  
      <ul>
        <li><a href="#implementation">구현</a></li>
  
        <li><a href="#usage">사용법 요약</a></li>
  
        <li><a href="#background">배경지식</a></li>
  
        <li><a href="#advantages">장점과 단점</a></li>
      </ul>
      <hr />
  
      <table border="1">
        <tr>
          <td valign="top"><strong>관련된 모듈</strong><br />
           <br />
           <a href="mod/mod_so.html">mod_so</a><br />
           </td>
  
          <td valign="top"><strong>관련된 지시어</strong><br />
           <br />
           <a href="mod/mod_so.html#loadmodule">LoadModule</a><br />
           </td>
        </tr>
      </table>
  
      <h2><a id="implementation"
      name="implementation">구현</a></h2>
  
      <p>아파치 모듈을 읽어들이기위한 DSO 지원은 아파치 핵심에
      정적으로 컴파일되야할
      <a href="mod/mod_so.html"><code>mod_so.c</code></a>라는
      모듈이 제공한다. 이는 <code>core.c</code>를 제외하고
      DSO가 될 수 없는 유일한 모듈이다. 실제로 다른 모든 아파치 모듈은
      각각 <a href="install.html">설치 문서</a>에서 설명한
      <code>configure</code>의 <code>--enable-<i>module</i>=shared</code>
      옵션을 사용하여 DSO로 컴파일할 수 있다. 모듈이
      <code>mod_foo.so</code>와 같이 DSO로 컴파일된후 <code>httpd.conf</code>
      파일에 <a href="mod/mod_so.html"><code>mod_so</code></a>의
      <a href="mod/mod_so.html#loadmodule"><code>LoadModule</code></a>
      명령어를 사용하여 서버 시작시 혹은 재시작시 그 모듈을 읽어들일
      수 있다.</p>
  
      <p>아파치 모듈(특히 제삼의 모듈)로 사용할 DSO 파일을 쉽게
      만들기위해 <a href="programs/apxs.html">apxs</a> (<em>APache
      eXtenSion</em>)라는 새로운 지원 프로그램이 있다.
      이는 아파치 소스 트리 <em>밖에서</em> DSO로 사용할 모듈을
      컴파일할때 사용한다. 개념은 쉽다. 아파치를 설치할때
      <code>configure</code>와 <code>make install</code>이
      아파치 C 헤더파일을 설치하고, DSO 파일을 컴파일하기위한
      플래폼 특유의 컴파일러 옵션과 링커 옵션을 <code>apxs</code>
      프로그램에 쓴다. 그래서 사용자는 <code>apxs</code>를
      사용하여 아파치 배포본 소스 트리없이, 또 DSO 지원을 위한 플래폼
      특유의 컴파일러 옵션와 링커 옵션에 신경을 쓰지않고 자신의
      아파치 모듈 소스를 컴파일할 수 있다.</p>
  
      <h2><a id="usage" name="usage">사용법 요약</a></h2>
  
      <p>Apache 2.0의 DSO 기능에 대한 짧고 간략한 요약이다:</p>
  
      <ol>
        <li>
          <em>배포본에 있는</em> 아파치 모듈을 컴파일하고 설치하는 경우.
          예를 들어 <code>mod_foo.c</code>를 DSO <code>mod_foo.so</code>로:
  
          <table bgcolor="#f0f0f0" cellpadding="10">
            <tr>
              <td>
  <pre>
  $ ./configure --prefix=/path/to/install
          --enable-foo=shared
  $ make install
  </pre>
              </td>
            </tr>
          </table>
        </li>
  
        <li>
          <em>제삼의</em> 아파치 모듈을 컴파일하고 설치하는 경우. 예를 들어
          <code>mod_foo.c</code>를 DSO <code>mod_foo.so</code>로:
  
          <table bgcolor="#f0f0f0" cellpadding="10">
            <tr>
              <td>
  <pre>
  $ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c 
          --enable-foo=shared
  $ make install
  </pre>
              </td>
            </tr>
          </table>
        </li>
  
        <li>
          공유 모듈을 <em>다음에 설치하기위해</em> 아파치를 구성하는 경우:
  
          <table bgcolor="#f0f0f0" cellpadding="10">
            <tr>
              <td>
  <pre>
  $ ./configure --enable-so
  $ make install
  </pre>
              </td>
            </tr>
          </table>
        </li>
  
        <li>
          <em>제삼의</em> 아파치 모듈을 컴파일하고 설치하는 경우.
          <code>mod_foo.c</code>를 <a href="programs/apxs.html">apxs</a>를
          사용하여 아파치 소스 트리 <em>밖에서</em> DSO
          <code>mod_foo.so</code>로:
  
          <table bgcolor="#f0f0f0" cellpadding="10">
            <tr>
              <td>
  <pre>
  $ cd /path/to/3rdparty
  $ apxs -c mod_foo.c
  $ apxs -i -a -n foo mod_foo.so
  </pre>
              </td>
            </tr>
          </table>
        </li>
      </ol>
  
      <p>모든 경우 일단 공유 모듈이 컴파일되면, <code>httpd.conf</code>에
      <a href="mod/mod_so.html#loadmodule"><code>LoadModule</code></a>
      지시어를 사용하여 아파치가 그 모듈을 활성화하게 해야한다.</p>
  
      <h2><a id="background" name="background">배경지식</a></h2>
  
      <p>현대적인 유닉스류에는 <em>동적공유객체</em> (DSO)의
      동적 링킹/로딩이라고 하여, 특별한 형식의 실행코드 조각을 만들어
      실행중 실행프로그램의 주소공간에 읽어들이는 멋진 기능이 있다.</p>
  
      <p>이 로딩은 보통 두가지 방법으로 가능하다. 하나는 실행프로그램이
      시작할때 <code>ld.so</code>라는 시스템 프로그램이 로딩을
      자동으로 하는 경우고, 다른 하나는 실행중인 프로그램에서
      <code>dlopen()/dlsym()</code> 시스템콜로 유닉스 로더의
      시스템 인터페이스을 사용하여 직접 로딩하는 경우다.</p>
  
      <p>첫번째 경우 DSO는 보통 <em>공유라이브러리(shared libraries)</em>
혹은
      <em>DSO 라이브러리</em>라고 부르며, 파일은 <code>libfoo.so</code>나
      <code>libfoo.so.1.2</code> 같은 이름을 가진다. 이들은
      시스템 디렉토리(보통 <code>/usr/lib</code>)에 있고,
      컴파일시 링커 명령어에 <code>-lfoo</code>를 주어 실행파일과
      연결된다. 이렇게 직접 써준 라이브러리는 실행파일에 참조되여서,
      링커 옵션 <code>-R</code>로 직접 지정하였거나 환경변수
      <code>LD_LIBRARY_PATH</code>로 지정한 경로인 <code>/usr/lib</code>에서
      유닉스 로더가 프로그램이 시작할때 <code>libfoo.so</code>를
      찾을(resolve) 수 있다. 그러면 실행프로그램의 (아직 못찾은)
      심볼(symbol)을 DSO에서 찾게된다.</p>
  
      <p>DSO는 보통 실행프로그램의 심볼을 찾지않기 때문에 (DSO가
      재사용가능한 일반적인 코드의 라이브러리이므로) 찾기는 여기서 끝난다.
      유닉스 로더가 심볼 찾기를 완전히 담당하므로 실행프로그램이 직접
      DSO에서 심볼을 찾을 필요가 없다. (사실 <code>ld.so</code>를
      부르는 코드는 정적이 아닌 모든 실행프로그램에 링크되는 실행시
      시작코드의 일부다.) 공통된 라이브러리 코드를 동적으로 읽어들이는
      장점은 명확하다. 라이브러리 코드가 모든 프로그램에 저장되는 대신
      <code>libc.so</code>와 같은 시스템 라이브러리에 한번만 저장되기
      때문에 디스크 공간이 절약된다.</p>
  
      <p>두번째 경우 DSO는 보통 <em>공유객체(shared objects)</em> 혹은
      <em>DSO 파일</em>이라고 부르고, (규칙상 이름은 <code>foo.so</code>이지만)
      파일의 확장자는 자유롭다. 이 파일들은 보통 프로그램 자체 디렉토리에
      위치하고 실행프로그램에 자동으로 연결되지 않는다. 대신 실행프로그램은
      <code>dlopen()</code>을 사용하여 DSO를 실행시 주소공간에 직접
      읽어들여야 한다. 이때 실행프로그램은 DSO에서 심볼을 찾지 않는다.
      대신 유닉스 로더가 자동으로 실행파일과 실행파일이 이미 읽어들인 DSO
      라이브러리(특히 항상있는 <code>libc.so</code>의 모든 심볼)에서
      DSO의 (아직 못찾은) 심볼을 찾는다. 그래서 DSO는 마치 처음부터
      실행프로그램에 정적으로 링크된것과 같이 실행파일의 심볼을
      알게된다.</p>
  
      <p>DSO의 API를 이용하기위해서 마지막으로 실행프로그램은
      <code>dlsym()</code>로 DSO에서 특정 심볼을 찾아서,
      앞으로 사용하기위해 디스패치(dispatch) 표 <em>등</em>에
      저장한다. 다른 말로 실행프로그램은 사용할 모든 실볼을 직접
      찾아야한다. 이런 구조의 장점은 프로그램의 선택적인 일부을
      프로그램이 필요할때까지 읽어들이지 않아도 (그래서
      메모리를 낭비하지 않게) 된다는 점이다. 기본 프로그램의 기능을
      확장하기위해 필요할때 이 부분을 동적으로 읽어들일 수 있다.</p>
  
      <p>이런 DSO 구조가 자연스럽게 보이지만, 최소한 어려운 점이
      하나있다. 이는 프로그램을 확장하기위해 DSO를 사용할때
      DSO가 실행프로그램의 심볼을 찾는 일이다. 왜? DSO가 실행프로그램의
      심볼을 "역으로 찾는 것"은 (라이브러리는 사용되는 프로그램에 대해
      모른다는) 라이브러리 설계에 반하며, 모든 플래폼에서 지원되지
      않고 표준화되지도 않았기 때문이다. 실제로 실행파일의
      전역심볼(global symbol)은 자주 익스포트(export)되지 않기때문에
      DSO가 사용할 수 없다. DSO를 사용하여 실행중 프로그램을 확장하려면
      링커에게 모든 전역심볼을 익스포트하도록 강제하는 것이 주요한
      해결책이다.</p>
  
      <p>공유라이브러리는 DSO 구조를 위해 설계되었기때문에 전형적이고,
      운영체제가 제공하는 거의 모든 종류의 라이브러리에 사용된다.
      반대로 많은 프로그램은 프로그램을 확장하기위해 공유객체를
      사용하지 않는다.</p>
  
      <p>1998년 실행중 실제로 기능을 확장하기위해
      DSO 구조를 사용한 소프트웨어 패키지는 (XS 구조와 DynaLoader 모듈을
      사용한) Perl 5, Netscape Server <em>등</em>으로 드물었다.
      아파치는 이미 기능을 확장하기위해 모듈 개념을 사용했고 외부
      모듈을 아파치 핵심기능에 연결하기위해 내부적으로 디스패치목록을 이용한
      접근방법을 사용했기때문에 1.3 버전부터 여기에 합류했다. 그래서
      아파치는 실행중 모듈을 읽어들이는데 DSO를 사용하도록 운명지워졌다.</p>
  
      <h2><a id="advantages" name="advantages">장단점</a></h2>
  
      <p>앞에서 말한 DSO를 사용하면 다음과 같은 장점이 있다:</p>
  
      <ul>
        <li>실제 서버 프로세스가 컴파일시 <code>configure</code>
        옵션대신 <code>httpd.conf</code>의 <a
        href="mod/mod_so.html#loadmodule"><code>LoadModule</code></a>로
        실행중에 결합되므로 서버 패키지가 실행시 더 유연하다. 예를 들어 
        한번의 아파치 설치만으로 다른 서버(표준 버전과 SSL 버전, 최소화 버전과
        기능추가 버전 [mod_perl, PHP3] <em>등</em>)를 실행할 수 있다.</li>
  
        <li>서버는 설치후에도 제삼의 모듈로 쉽게 확장이 가능하다.
        최소한 기업의 패키지 제작자는 아파치 핵심 패키지와 별도로 PHP3, mod_perl,
        mod_fastcgi 등을 추가 패키지로 만들 수 있어서 큰 이득이 된다.</li>
  
        <li>DSO와 <code>apxs</code>를 가지고 아파치 소스 트리
        밖에서 작업하고 <code>apxs -i</code>와
        <code>apachectl restart</code> 명령어만으로 현재 개발한
        모듈의 새 버전을 실행중인 아파치 서버에 반영할 수 있어서 더 쉽게
        아파치 모듈을 개발할 수 있다.</li>
      </ul>
  
      <p>DSO는 다음과 같은 단점이 있다:</p>
  
      <ul>
        <li>프로그램의 주소공간에 코드를 동적으로 읽어들이는 기능을
        지원하지않는 운영체제가 있기 때문에 모든 플래폼에서 DSO를
        사용할 수 없다.</li>
  
        <li>서버는 시작시 약 20% 정도 늦다.
        because of the symbol resolving overhead the Unix loader now
        has to do.</li>
  
        <li>서버는 위치독립코드(position independent code, PIC)때문에
        절대주소지정(absolute addressing)만큼 빠르지 않는 상대주소지정(relative
        addressing)의 복잡한 어셈블러 기법이 필요하므로 어떤 플래폼에서
        실행시 약 5% 정도 늦다.</li>
  
        <li>DSO 모듈이 다른 DSO기반 라이브러리(<code>ld -lfoo</code>)에
        링크할 수 없는 플래폼이 있기때문에 (예를 들어 ELF기반 플래폼은
        지원하지만 a.out기반 플래폼은 보통 이 기능을 지원하지 않는다)
        모든 종류의 모듈에 DSO를 사용할 수 없다. 다른 말로
        DSO 파일로 컴파일되는 모듈은 아파치 핵심과 아파치 핵심이
        사용하는 C 라이브러리(<code>libc</code>)와 다른 동적/정적
        라이브러리, 위치독립코드를 담고 있는 정적 라이브러리
        아카이브(<code>libfoo.a</code>)의 심볼만을 사용할 수 있다.
        다른 코드를 사용하는 방법은 아파치 핵심이 그것을 참조하던지,
        <code>dlopen()</code>으로 직접 코드를 읽어들이는 것이다.</li>
      </ul>
      <!--#include virtual="footer.html" -->
    </body>
  </html>
  
  
  
  

Mime
View raw message