1
0
mirror of https://github.com/apache/httpd.git synced 2025-05-28 13:41:30 +03:00
apache/docs/manual/platform/win_compiling.xml.ko
William A. Rowe Jr 37af7a852e Sync anchor href alt titles
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@567134 13f79535-47bb-0310-9956-ffa450edef68
2007-08-17 20:42:56 +00:00

425 lines
16 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:567128 (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="win_compiling.xml.meta">
<parentdocument href="./">Platform Specific Notes</parentdocument>
<title>Microsoft Windows용 아파치 컴파일</title>
<summary>
<p>아파치를 컴파일하기 전에 주의할 점이 많다. 미리 <a
href="windows.html">Microsoft Windows에서 아파치 사용법</a>
참고하라.</p>
</summary>
<section id="requirements">
<title>요구사항</title>
<p>아파치를 컴파일하려면 다음이 정상적으로 설치되야 한다:</p>
<ul>
<li>
<p>디스크 공간</p>
<p>남은 디스크 공간이 최소한 50 MB는 되야 한다. 아파치
설치후에는 빨리 증가하는 로그와 캐쉬파일을 제외하고
약 10 MB 정도가 필요하다. 실제 디스크 사용량은 선택한
구성과 제삼자가 만든 모듈 혹은 라이브러리에 따라 크게
다르다.</p>
</li>
<li>
<p>Microsoft Visual C++ 5.0 이상.</p>
<p>아파치는 명령행 도구를 사용하거나 Visual Studio IDE
Workbench 안에서 컴파일할 수 있다. 명령행에서 컴파일한다면
<code>vcvars32</code> 배치파일이 설정하는 <code>PATH</code>,
<code>INCLUDE</code>, <code>LIB</code> 등 환경변수가
필요하다:</p>
<example>
"c:\Program Files\DevStudio\VC\Bin\vcvars32.bat"
</example>
</li>
<li>
<p>Windows Platform SDK.</p>
<p>어떤 아파치 기능을 사용하려면 Visual C++ 5.0에 추가로
최신 Microsoft Windows Platform SDK가 필요하다. 명령행에서
컴파일한다면 <code>setenv</code> 배치파일이 Platform
SDK 환경을 만든다:</p>
<example>
"c:\Program Files\Platform SDK\setenv.bat"
</example>
<p>Visual C++ 6.0 이상에 포함된 Platform SDK 파일은
충분하다. 이 버전을 사용하는 사용자는 이 과정을 생략해도
된다.</p>
<note>모든 <module>mod_isapi</module> 기능을 사용하려면
최신 Windows Platform SDK가 필요하다. 최신 버전이 아니면
MSVC++ 5.0은 <module>mod_isapi</module> 기능의 일부를
사용할 수 없다고 경고한다. <a
href="http://msdn.microsoft.com/downloads/sdks/platform/platform.asp"
>http://msdn.microsoft.com/downloads/sdks/platform/platform.asp</a>
최신 버전이 있다.</note>
</li>
<li>
<p>awk 도구 (awk, gawk 등).</p>
<p>컴파일한 시스템에 아파치를 설치하려면
<code>awk.exe</code> 도구를 사용하여 여러 파일을 수정해야
한다. (Perl이나 WSH/VB과 비교하여) 다운받기에 매우 작고
파일 생성 작업이 가능하여 awk를 선택했다. Brian Kernighan의
<a href="http://cm.bell-labs.com/cm/cs/who/bwk/"
>http://cm.bell-labs.com/cm/cs/who/bwk/</a> 사이트에
컴파일된 Win32 실행파일 <a
href="http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe"
>http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe</a>
있다. 이름을 <code>awk95.exe</code> 대신
<code>awk.exe</code>로 변경해야 한다.</p>
<note>Developer Studio IDE는 Tools 메뉴 Options...
Directories 탭의 (Developer Studio 7.0이라면 Projects
- VC++ Directories pane) Executable files 경로 목록에서만
<code>awk.exe</code>를 찾는다. 이 목록에 <code>awk.exe</code>
경로를 추가하고, 필요하다면 <code>PATH</code> 환경변수에도
추가한다.</note>
<note>Cygwin을 (<a href="http://www.cygwin.com/"
>http://www.cygwin.com/</a>) 사용한다면
<code>gawk.exe</code>라는 이름으로 awk 도구가 있으며,
<code>awk.exe</code> 파일은 <code>gawk.exe</code> 파일의
심볼링크임을 주의하라. Windows 명령 프롬프트가 심볼링크를
인식하지 못하기때문에 InstallBin을 컴파일할때 실패한다.
해결책은 cygwin에서 <code>awk.exe</code>를 삭제하고
<code>gawk.exe</code> 이름을 <code>awk.exe</code>
바꾼다.</note>
</li>
<li>
<p>[선택적인] OpenSSL 라이브러리 (<module>mod_ssl</module>
<code>ab.exe</code>의 ssl 지원에 사용)</p>
<p><strong>주의: 강력한 암호화와 특허가 걸린 지적재산권을
전세계에 배포하는데는 상당한 제약이 있다.</strong>
OpenSSL은 미국 수출규제법이 규제하며 미국과 기타 지역에서
특허로 보호되는 지적재산권인 강력한 암호화를 포함한다.
Apache Software Foundation과 OpenSSL 프로젝트는 OpenSSL
프로젝트가 제공하는 코드를 소유, 사용, 배포하는데 따른
법적 자문을 제공하지 않는다. <strong>직접 법률 상담을
받길 바란다. 당신 행동의 책임은 당신에게 있다.</strong></p>
<p><module>mod_ssl</module>이나 (SSL을 지원하는
<code>ab.exe</code>) abs 프로젝트를 컴파일하려면, OpenSSL을
<a href="http://www.openssl.org/source/"
>http://www.openssl.org/source/</a>에서 다운받아서
<code>srclib</code><code>openssl</code>이라는
하위디렉토리에 설치해야 한다. <code>release</code>
<code>debug</code>로 아파치를 컴파일할때 사용하며 0.9.7
버전에 있는 특허가 걸린 기능을 사용하지 않는다면, 아래
컴파일 명령어를 사용한다:</p>
<example>
perl Configure VC-WIN32<br />
perl util\mkfiles.pl &gt;MINFO<br />
perl util\mk1mf.pl dll no-asm no-mdc2 no-rc5 no-idea VC-WIN32 &gt;makefile<br />
perl util\mk1mf.pl dll debug no-asm no-mdc2 no-rc5 no-idea VC-WIN32 &gt;makefile.dbg<br />
perl util\mkdef.pl 32 libeay no-asm no-mdc2 no-rc5 no-idea &gt;ms\libeay32.def<br />
perl util\mkdef.pl 32 ssleay no-asm no-mdc2 no-rc5 no-idea &gt;ms\ssleay32.def<br />
nmake<br />
nmake -f makefile.dbg
</example>
</li>
<li>
<p>[선택적인] zlib 소스 (<module>mod_deflate</module>
사용)</p>
<p>Zlib을 <code>srclib</code><code>zlib</code>라는
하위디렉토리에 설치해야 하지만, 소스를 미리 컴파일할
필요는 없다. 컴파일 시스템은 이 압축소스를
<module>mod_deflate</module> 모듈과 같이 컴파일한다.
Zlib은 <a href="http://www.gzip.org/zlib/"
>http://www.gzip.org/zlib/</a>에서 구할 수 있다 --
<module>mod_deflate</module>는 1.1.4 버전과 정상적으로
컴파일되었다.</p>
</li>
</ul>
</section>
<section id="commandbuild">
<title>명령행에서 컴파일하기</title>
<p>먼저 적당한 디렉토리에 아파치 배포본 압축을 푼다. 명령행
프롬프트를 열고 그 디렉토리로 <code>cd</code>한다.</p>
<p><code>Makefile.win</code> 파일에 아파치 makefile 명령이
있다. Windows NT에서 <code>release</code><code>debug</code>
컴파일하는 명령어는 각각 다음과 같다:</p>
<example><pre>
nmake /f Makefile.win _apacher
nmake /f Makefile.win _apached
</pre></example>
<p>두 명령어 모두 아파치를 컴파일한다. 후자는 결과파일에
디버깅 정보를 포함하여 버그를 찾고 문제를 추적하기 쉽게
한다.</p>
</section>
<section id="workspacebuild">
<title>Developer Studio Workspace IDE에서 컴파일하기</title>
<p>VC++의 Visual Studio 개발 환경을 사용하여 아파치를 컴파일할
수도 있다. 과정을 쉽게 하려고 Visual Studio workspace
<code>Apache.dsw</code>를 제공한다. 이 workspace는 완전한
아파치 바이너리 배포본에 필요한 <code>.dsp</code> 프로젝트
목록을 담고있다. 또, 알맞은 순서로 컴파일하기위한 프로젝트간
의존성 정보도 포함한다.</p>
<p><code>Apache.dsw</code> workspace를 열고
<code>InstallBin</code>을 (<code>Release</code>
<code>Debug</code> 중 원하는 것을) Active Project로 선택한다.
<code>InstallBin</code>은 관련된 모든 프로젝트를 컴파일하고,
컴파일된 실행파일과 dll을 옮기는 <code>Makefile.win</code>
호출한다. <code>InstallBin</code>의 Settings, General 탭,
Build command line 항목을 수정하여 <code>INSTDIR=</code>
변경할 수 있다. <code>INSTDIR=</code> 기본값은
<code>/Apache2</code> 디렉토리이다. (설치하지않고) 테스트로
컴파일만 해보려면 대신 <code>BuildBin</code> 프로젝트를
사용한다.</p>
<p><code>.dsp</code> 프로젝트 파일은 Visual C++ 6.0 형식이다.
Visual C++ 5.0 (97)에서도 이 파일을 사용할 수 있다. Visual
C++ 7.0 (.net)은 <code>Apache.dsw</code><code>.dsp</code>
파일들을 <code>Apache.sln</code><code>.msproj</code>
파일들로 변환한다. <code>.dsp</code> 소스파일을 수정하면
반드시 <code>.msproj</code> 파일로 다시 변환하라! 그냥 VC++
7.0 IDE에서 <code>Apache.dsw</code>를 다시 열기만 하면 된다.</p>
<p>또, Visual C++ 7.0 (.net) 사용자는 Build 메뉴, Configuration
Manager 대화창에서 <code>Debug</code><code>Release</code>
abs, <module>mod_ssl</module>, <module>mod_deflate</module>
Solution modules 선택을 해제해야 한다. <code>srclib</code>
<code>openssl</code>이나 <code>zlib</code> 디렉토리가 있는
경우에만 <code>nmake</code>를 실행하거나 (이 모듈을 명시적으로
컴파일하는) IDE <code>BinBuild</code> 대상을 사용하여 모듈을
컴파일 할 수 있다.</p>
<p>Export한 <code>.mak</code> 파일들이 혼란스럽지만, Visual
C++ 5.0 사용자가 <module>mod_ssl</module>, abs (SSL을 지원하는
ab), <module>mod_deflate</module>를 컴파일할때 필요하다.
VC++ 7.0 (.net) 사용자에게도 <code>binenv</code> 보다
<code>nmake</code>를 사용하면 컴파일이 더 빠르다. VC++ 5.0이나
6.0 IDE에서 전체 프로젝트를 컴파일하고, Project 메뉴의 Export
for all makefiles를 사용하라. 동적으로 자동 생성하는 대상을
모두 컴파일하고 올바른 의존성 정보를 얻기위해서는 먼저
프로젝트를 컴파일해야 한다. 다음 명령어를 사용하여 경로를
수정하면 어떤 경로에서도 컴파일할 수 있다:</p>
<example>
perl srclib\apr\build\fixwin32mak.pl
</example>
<p><code>httpd</code> 소스 <em>최상위</em> 디렉토리에서
명령어를 실행해야 한다. 현재 디렉토리와 하위디렉토리에 있는
모든 <code>.mak</code><code>.dep</code> 프로젝트파일을
수정하고, <code>.dsp</code>를 고려하여 파일시간을 수정한다.</p>
<p>프로젝트파일을 다듬어서 패치를 보낸다면, 프로젝트파일을
Visual Studio 6.0 형식으로 만들어야 한다. 변경은 간단하고,
VC++ 5.0에서 7.0까지 모든 환경에서 인식하는 최소한의 컴파일
옵션과 링커 옵션을 사용해야 한다.</p>
</section>
<section id="projectcomponents">
<title>프로젝트 구성요소</title>
<p><code>Apache.dsw</code> workspace와 <code>makefile.win</code>
<code>nmake</code> 스크립트는 다음 순서대로 아파치 서버
<code>.dsp</code> 프로젝트를 컴파일한다:</p>
<ol>
<li><code>srclib\apr\apr.dsp</code></li>
<li><code>srclib\apr\libapr.dsp</code></li>
<li><code>srclib\apr-util\uri\gen_uri_delims.dsp</code></li>
<li><code>srclib\apr-util\xml\expat\lib\xml.dsp</code></li>
<li><code>srclib\apr-util\aprutil.dsp</code></li>
<li><code>srclib\apr-util\libaprutil.dsp</code></li>
<li><code>srclib\pcre\dftables.dsp</code></li>
<li><code>srclib\pcre\pcre.dsp</code></li>
<li><code>srclib\pcre\pcreposix.dsp</code></li>
<li><code>server\gen_test_char.dsp</code></li>
<li><code>libhttpd.dsp</code></li>
<li><code>Apache.dsp</code></li>
</ol>
<p>또, <code>modules\</code> 하위디렉토리 아래 대부분의
모듈에는 프로젝트파일이 있다.</p>
<p><code>support\</code> 디렉토리에는 아파치를 실행하는데
필요하지는 않지만, 관리자가 아파치를 검사하거나 암호파일과
로그파일을 관리하는데 사용할 추가 프로그램들의 프로젝트파일이
있다. Windows 전용 지원 프로그램은 <code>support\win32\</code>
디렉토리에 따로 있다.</p>
<ol>
<li><code>support\ab.dsp</code></li>
<li><code>support\htdigest.dsp</code></li>
<li><code>support\htpasswd.dsp</code></li>
<li><code>support\logresolve.dsp</code></li>
<li><code>support\rotatelogs.dsp</code></li>
<li><code>support\win32\ApacheMonitor.dsp</code></li>
<li><code>support\win32\wintty.dsp</code></li>
</ol>
<p>아파치를 컴파일하면 server root 디렉토리에 설치해야 한다.
기본값은 같은 디스크의 <code>\Apache2</code> 디렉토리이다.</p>
<p>컴파일하고 모든 파일을 원하는 폴더 <em>dir</em>에 자동으로
설치하려면 다음 <code>nmake</code> 명령어중 하나를 사용한다:</p>
<example><pre>
nmake /f Makefile.win installr INSTDIR=<em>dir</em>
nmake /f Makefile.win installd INSTDIR=<em>dir</em>
</pre></example>
<p><code>INSTDIR</code><em>dir</em> 아규먼트는 설치디렉토리를
뜻한다. 생락하면 <code>\Apache2</code>에 아파치를 설치한다.</p>
<p>다음과 같이 설치한다:</p>
<ul>
<li><code><em>dir</em>\bin\Apache.exe</code> - 아파치
실행파일</li>
<li><code><em>dir</em>\bin\ApacheMonitor.exe</code> -
서비스 감시용 작업표시줄 아이콘 도구</li>
<li><code><em>dir</em>\bin\htdigest.exe</code> - Digest
auth 암호파일 도구</li>
<li><code><em>dir</em>\bin\htdbm.exe</code> - SDBM auth
데이터베이스 암호파일 도구</li>
<li><code><em>dir</em>\bin\htpasswd.exe</code> - Basic
auth 암호파일 도구</li>
<li><code><em>dir</em>\bin\logresolve.exe</code> - 로그파일에서
dns 이름을 찾는 도구</li>
<li><code><em>dir</em>\bin\rotatelogs.exe</code> - 로그파일
순환 도구</li>
<li><code><em>dir</em>\bin\wintty.exe</code> - 콘솔창
도구</li>
<li><code><em>dir</em>\bin\libapr.dll</code> - Apache
Portable Runtime 공유 라이브러리</li>
<li><code><em>dir</em>\bin\libaprutil.dll</code> - Apache
Utility Runtime 공유 라이브러리</li>
<li><code><em>dir</em>\bin\libhttpd.dll</code> - Apache
Core 라이브러리</li>
<li><code><em>dir</em>\modules\mod_*.so</code> - 읽어들일
수 있는 아파치 모듈</li>
<li><code><em>dir</em>\conf</code> - 설정 디렉토리</li>
<li><code><em>dir</em>\logs</code> - 비어있는 로그
디렉토리</li>
<li><code><em>dir</em>\include</code> - C 언어 헤더파일</li>
<li><code><em>dir</em>\lib</code> - 링크 라이브러리파일</li>
</ul>
<section id="projectcomponents-warn">
<title>개발중인 아파치 버전을 컴파일할때 경고</title>
<note><code>.dsp</code> 파일은 <code>release</code>마다
새로 만들어진다. 개발자의 시간낭비를 막기위해
<code>.mak</code> 파일은 새로 만들지 않는다. 그러므로
<code>NMAKE</code> 명령어를 사용하여 새로운 <code>.dsp</code>
프로젝트파일을 컴파일할 수 없다. 프로젝트에서 직접 모든
<code>.mak</code> 파일을 export해야 한다. Microsoft Developer
Studio 환경에서 컴파일한다면 이 작업이 필요없다.</note>
<note>또, makefile을 export하기 전에 <code>BuildBin</code>
프로젝트를 (혹은 <code>_apacher</code><code>_apached</code>
명령행 대상) 컴파일하면 매우 도움이 된다. 컴파일중에 많은
파일이 자동으로 만들어진다. 전체를 컴파일해야만 정상적으로
컴파일할때 필요한 의존파일을 모두 만든다.</note>
<p>배포용 <code>.mak</code> 파일을 만드려면 항상
<code>.mak</code> (혹은 <code>.dep</code>)에서 Platform
SDK 등의 의존성을 점검하라.
<code>DevStudio\SharedIDE\bin\</code> (VC5)나
<code>DevStudio\Common\MSDev98\bin\</code> (VC6) 디렉토리에는
모든 예외 목록이 담긴 <code>sysincl.dat</code> 파일이
있다. 이 파일에 의존성 정보를 추가한다
(<code>sys/time.h</code><code>sys\time.h</code>와 같이,
경로는 슬래쉬를 사용한 것과 백슬래쉬를 사용한 것 모두를
추가한다). 배포할 <code>.mak</code> 파일에 현재 컴퓨터에만
해당하는 설치경로가 있다면 컴파일이 완전히 실패한다.
그러므로 <code>srclib/apr/build/fixwin32mak.pl</code>
실행해하여 <code>.mak</code> 파일에 있는 절대경로를 없애야
한다.</p>
</section>
</section>
</manualpage>