1
0
mirror of https://github.com/apache/httpd.git synced 2026-01-13 21:42:17 +03:00
Files
apache/docs/manual/programs/apxs.xml.ko
André Malo f8f79e1f34 update transformation
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1495584 13f79535-47bb-0310-9956-ffa450edef68
2013-06-21 20:24:16 +00:00

321 lines
12 KiB
XML

<?xml version='1.0' encoding='EUC-KR' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
<!-- English Revision: 105989:1494952 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manualpage metafile="apxs.xml.meta">
<parentdocument href="./">Programs</parentdocument>
<title>apxs - APache eXtenSion 도구</title>
<summary>
<p><code>apxs</code>는 아파치 하이퍼텍스트 전송 프로토콜
(HTTP) 서버의 확장모듈을 컴파일하고 설치하는 도구이다. 이
도구는 여러 소스와 오브젝트<var>파일</var>을 가지고,
<module>mod_so</module><directive
module="mod_so">LoadModule</directive> 지시어로 실행중에
아파치 서버로 읽어들일 수 있는 동적공유객체(DSO)를 만든다.</p>
<p>그래서 이런 확장방식을 사용하려면 플래폼이 DSO 기능을
지원하고 아파치 <code>httpd</code> 실행파일을
<module>mod_so</module> 모듈과 같이 컴파일해야 한다.
<code>apxs</code> 도구는 이 조건이 만족하지않으면 실행하지
않는다. 직접 명령어를 실행하여 조건이 만족하는지 알아볼
수 있다</p>
<example>
$ httpd -l
</example>
<p>목록에 <module>mod_so</module> 모듈이 나와야 한다. 조건을
만족하면 <code>apxs</code> 도구로 DSO 모듈을 설치하여
아파치서버의 기능을 쉽게 확장할 수 있다:</p>
<example>
$ apxs -i -a -c mod_foo.c<br />
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c<br />
ld -Bshareable -o mod_foo.so mod_foo.o<br />
cp mod_foo.so /path/to/apache/modules/mod_foo.so<br />
chmod 755 /path/to/apache/modules/mod_foo.so<br />
[activating module `foo' in /path/to/apache/etc/httpd.conf]<br />
$ apachectl restart<br />
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start<br />
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
/path/to/apache/sbin/apachectl restart: httpd started<br />
$ _
</example>
<p>아규먼트 <var>files</var>에는 C 소스파일 (.c) 이나
오브젝트파일 (.o), 라이브러리모음 (.a)을 사용할 수 있다.
<code>apxs</code> 도구는 확장자를 보고 자동으로 C 소스파일은
컴파일하고, 오브젝트와 모음파일은 링크에만 사용한다. 그러나
컴파일한 오브젝트를 사용하려면 동적으로 읽어들일 수 있는
공유객체로 사용하기위해 반드시 오브젝트를 위치독립코드(PIC,
position independent code)로 컴파일해야 한다. GCC의 경우
<code>-fpic</code>을 사용하면 된다. 다른 C 컴파일러는 설명서를
참고하거나 <code>apxs</code>가 오브젝트파일을 컴파일할때
사용하는 옵션을 참고하라.</p>
<p>아파치의 DSO 지원에 대한 더 자세한 내용은
<module>mod_so</module> 문서를 참고하거나
<code>src/modules/standard/mod_so.c</code> 소스파일을 읽어봐라.</p>
</summary>
<seealso><a href="apachectl.html">apachectl</a></seealso>
<seealso><a href="httpd.html">httpd</a></seealso>
<section id="synopsis"><title>개요</title>
<p><code><strong>apxs</strong> -<strong>g</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
-<strong>n</strong> <var>modname</var></code></p>
<p><code><strong>apxs</strong> -<strong>q</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
<var>query</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>c</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
[ -<strong>o</strong> <var>dsofile</var> ]
[ -<strong>I</strong> <var>incdir</var> ]
[ -<strong>D</strong> <var>name</var>=<var>value</var> ]
[ -<strong>L</strong> <var>libdir</var> ]
[ -<strong>l</strong> <var>libname</var> ]
[ -<strong>Wc,</strong><var>compiler-flags</var> ]
[ -<strong>Wl,</strong><var>linker-flags</var> ]
<var>files</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>i</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
[ -<strong>n</strong> <var>modname</var> ]
[ -<strong>a</strong> ]
[ -<strong>A</strong> ]
<var>dso-file</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>e</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
[ -<strong>n</strong> <var>modname</var> ]
[ -<strong>a</strong> ]
[ -<strong>A</strong> ]
<var>dso-file</var> ...</code></p>
</section>
<section id="options"><title>옵션</title>
<section id="options.common"><title>공통 옵션</title>
<dl>
<dt><code>-n <var>modname</var></code></dt>
<dd><code>-i</code> (install)과 <code>-g</code> (template
generation) 옵션을 사용할때 직접 모듈명을 지정한다. 이
옵션을 사용하여 모듈명을 직접 지정한다. <code>-g</code>
옵션을 사용한다면 이 옵션을 반드시 사용해야하고,
<code>-i</code> 옵션을 사용한다면 <code>apxs</code> 도구는
소스나 (마지막 시도로) 파일명을 가지고 이름을 추측한다.</dd>
</dl>
</section>
<section id="options.query"><title>질의 옵션</title>
<dl>
<dt><code>-q</code></dt>
<dd><code>apxs</code>의 설정값을 알아낸다. <var>query</var>에는
다음을 사용할 수 있다: <code>CC</code>, <code>CFLAGS</code>,
<code>CFLAGS_SHLIB</code>, <code>INCLUDEDIR</code>,
<code>LD_SHLIB</code>, <code>LDFLAGS_SHLIB</code>,
<code>LIBEXECDIR</code>, <code>LIBS_SHLIB</code>,
<code>SBINDIR</code>, <code>SYSCONFDIR</code>, <code>TARGET</code>.
<p>설정을 직접 알아낼때 사용한다.</p>
<example>
INC=-I`apxs -q INCLUDEDIR`
</example>
<p>예를 들어, 아파치 C 헤더파일을 직접 접근한다면
Makefile에서 위와 같이 사용한다.</p></dd>
</dl>
</section>
<section id="options.conf"><title>설정 옵션</title>
<dl>
<dt><code>-S <var>name</var>=<var>value</var></code></dt>
<dd>이 옵션은 위에서 설명한 apxs 설정을 변경한다.</dd>
</dl>
</section>
<section id="options.template"><title>견본(template) 생성 옵션</title>
<dl>
<dt><code>-g</code></dt>
<dd>하위디렉토리 <var>name</var>을 만들고 (<code>-n</code>
옵션 참고) 그곳에 파일 두개를 만든다: 한 파일은
<code>mod_<var>name</var>.c</code>라는 견본 모듈소스파일로,
자신의 모듈을 만들때 견본으로 사용하거나 apxs 기능을
시험해볼때 사용한다. 다른 파일은 이 모듈을 쉽게 컴파일하고
설치하기위한 <code>Makefile</code>이다.</dd>
</dl>
</section>
<section id="options.dso"><title>DSO 컴파일 옵션</title>
<dl>
<dt><code>-c</code></dt>
<dd>컴파일을 지시한다. 먼저 <var>files</var>에서 C
소스파일들(.c)을 오브젝트파일(.o)로 컴파일하고,
<var>files</var>의 나머지 오브젝트파일들(.o과 .a)과
링크하여 동적공유객체 <var>dsofile</var>을 만든다.
<code>-o</code> 옵션을 사용하지않으면 <var>files</var>
첫번째 파일명에서 이름을 추측하여 보통
<code>mod_<var>name</var>.so</code>를 사용한다.</dd>
<dt><code>-o <var>dsofile</var></code></dt>
<dd>생성할 동적공유객체 파일명을 직접 지정한다. 이름을
지정하지않고 <var>files</var> 목록에서 이름을 추측하지
못하면 마지막으로 <code>mod_unknown.so</code>를 이름으로
사용한다.</dd>
<dt><code>-D <var>name</var>=<var>value</var></code></dt>
<dd>이 옵션을 컴파일 명령어로 직접 전달한다.
컴파일때 자신의 define을 추가한다.</dd>
<dt><code>-I <var>incdir</var></code></dt>
<dd>이 옵션을 컴파일 명령어로 직접 전달한다.
컴파일때 include를 찾을 디렉토리를 추가한다.</dd>
<dt><code>-L <var>libdir</var></code></dt>
<dd>이 옵션을 링커 명령어로 직접 전달한다.
컴파일때 라이브러리를 찾을 디렉토리를 추가한다.</dd>
<dt><code>-l <var>libname</var></code></dt>
<dd>이 옵션을 링커 명령어로 직접 전달한다.
컴파일때 사용할 라이브러리를 추가한다.</dd>
<dt><code>-Wc,<var>compiler-flags</var></code></dt>
<dd>이 옵션은 추가 옵션 <var>compiler-flags</var>
<code>libtool --mode=compile</code> 명령어로 전달한다.
컴파일러 특유의 옵션을 추가할때 사용한다.</dd>
<dt><code>-Wl,<var>linker-flags</var></code></dt>
<dd>이 옵션은 추가 옵션 <var>linker-flags</var>
<code>libtool --mode=link</code> 명령어로 전달한다. 링커
특유의 옵션을 추가할때 사용한다.</dd>
</dl>
</section>
<section id="options.dsoinstall">
<title>DSO 설치과 설정 옵션</title>
<dl>
<dt><code>-i</code></dt>
<dd>설치를 지시한다. 여러 동적공유객체를 서버의
<var>modules</var> 디렉토리에 설치한다.</dd>
<dt><code>-a</code></dt>
<dd>아파치 <code>httpd.conf</code> 설정파일에 적절한
<directive module="mod_so">LoadModule</directive> 줄을
추가하거나 이미 있다면 활성화하여 모듈을 사용하도록
만든다.</dd>
<dt><code>-A</code></dt>
<dd><code>-a</code>와 비슷하지만, <directive
module="mod_so">LoadModule</directive> 지시어 앞에
우물정자(<code>#</code>)를 붙인다. <em></em>, 현재는
사용하지않지만 나중에 사용할 수 있도록 모듈을 준비한다.</dd>
<dt><code>-e</code></dt>
<dd>편집을 지시한다. <code>-a</code> 혹은 <code>-A</code>
옵션과 같이 사용할 수 있으며, <code>-i</code> 명령과
비슷하지만 모듈을 설치하지않고 아파치
<code>httpd.conf</code> 설정파일만 편집한다.</dd>
</dl>
</section>
</section>
<section id="examples"><title>예제</title>
<p>아파치서버의 기능을 확장하는 <code>mod_foo.c</code>라는
아파치 모듈이 있다고 가정하자. 먼저 다음 명령어를 사용하여
C 소스를 아파치 서버가 읽어들일 공유객체로 컴파일한다:</p>
<example>
$ apxs -c mod_foo.c<br />
/path/to/libtool --mode=compile gcc ... -c mod_foo.c<br />
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
$ _
</example>
<p>그리고 이 공유객체를 읽어들이는 <directive
module="mod_so">LoadModule</directive> 지시어를 아파치
설정에 추가한다. <code>apxs</code>는 자동으로 공유객체를
"modules" 디렉토리에 설치하고 <code>httpd.conf</code> 파일을
알맞게 수정하여 간단히 작업을 마친다. 다음 같이 실행한다:</p>
<example>
$ apxs -i -a mod_foo.la<br />
/path/to/instdso.sh mod_foo.la /path/to/apache/modules<br />
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so<br />
[/path/to/apache/conf/httpd.conf에서 `foo' 모듈을 활성화한다]<br />
$ _
</example>
<p>그러면 다음과 같은 줄을</p>
<example>
LoadModule foo_module modules/mod_foo.so
</example>
<p>설정파일에 없다면 추가한다. 이 설정을 기본적으로 사용하지
않는다면 <code>-A</code> 옵션을 사용한다. <em></em></p>
<example>
$ apxs -i -A mod_foo.c
</example>
<p>apxs를 쉽게 사용하려고 다음과 같이 아파치 모듈 견본과
Makefile을 만들 수 있다:</p>
<example>
$ apxs -g -n foo<br />
Creating [DIR] foo<br />
Creating [FILE] foo/Makefile<br />
Creating [FILE] foo/modules.mk<br />
Creating [FILE] foo/mod_foo.c<br />
Creating [FILE] foo/.deps<br />
$ _
</example>
<p>그런후 바로 견본 모듈을 공유객체로 컴파일하여 아파치
서버가 읽도록한다:</p>
<example>
$ cd foo<br />
$ make all reload<br />
apxs -c mod_foo.c<br />
/path/to/libtool --mode=compile gcc ... -c mod_foo.c<br />
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
apxs -i -a -n "foo" mod_foo.la<br />
/path/to/instdso.sh mod_foo.la /path/to/apache/modules<br />
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so<br />
[/path/to/apache/conf/httpd.conf에서 `foo' 모듈을 활성화한다]<br />
apachectl restart<br />
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start<br />
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
/path/to/apache/sbin/apachectl restart: httpd started<br />
$ _
</example>
</section>
</manualpage>