성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Apache 소스를 윈도우 환경에서 빌드하기</div> <br /> 윈도우 소스 코드의 PHP를 빌드해 봤는데요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > PHP 소스를 윈도우 환경에서 빌드하기 ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/1042'>http://www.sysnet.pe.kr/2/0/1042</a> </pre> <br /> 기왕 해본 김에 아파치도 빌드해 봐야겠지요. ^^<br /> <br /> 빌드하기 위한 문서는 다음의 위키문서를 참조했습니다. (여러분도 참조만 하시고, 믿지는 마세요. ^^;)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Build Apache 2.2.x on Windows ; <a target='_tab' href='https://wiki.php.net/internals/windows/libs/apache22'>https://wiki.php.net/internals/windows/libs/apache22</a> </pre> <br /> PHP 빌드를 시도하느라, 이미 제 컴퓨터에는 Visual C++ 2008, Windows SDK v6.1이 설치된 상태입니다. 아파치 빌드의 경우 다음과 같은 부가적인 도구들이 설치되어 있어야 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Awk ; <a target='_tab' href='http://www.cs.princeton.edu/~bwk/btl.mirror/'>http://www.cs.princeton.edu/~bwk/btl.mirror/</a> Perl ; <a target='_tab' href='http://www.activestate.com/store/activeperl/download/'>http://www.activestate.com/store/activeperl/download/</a> </pre> <br /> Awk는 소스 코드를 다운로드 하지 않고 "<a target='_tab' href='http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe'>Windows executable</a>" 링크를 클릭해서 awk95.exe를 다운로드 받았는데... 문서에 맞게 awk.exe로 이름 변경을 한 다음 PATH 등록 없이 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin 폴더에 복사해 두었습니다. <br /> <br /> ActivePerl의 경우에는 ^^ 예전에 설치해봐서 낯설지는 않군요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > TFS Team Build + Source Server = 소스 코드 디버깅 ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/600'>http://www.sysnet.pe.kr/2/0/600</a> 소스 서버 구성, 그 외의 이야기 ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/603'>http://www.sysnet.pe.kr/2/0/603</a> </pre> <br /> 오늘 (2011-05-24) 기준으로 Perl은 5.12.3 버전을 받아서 설치했습니다.<br /> <br /> 그다음, 아파치 관련 소스 코드를 차례대로 다운로드 받습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Apache 2.2.9 ; <a target='_tab' href='http://httpd.apache.org/download.cgi'>http://httpd.apache.org/download.cgi</a> zlib 1.2.3 ; <a target='_tab' href='http://www.zlib.net/'>http://www.zlib.net/</a> OpenSSL 0.9.8h ; <a target='_tab' href='http://www.openssl.org/source/'>http://www.openssl.org/source/</a> </pre> <br /> Apache는 2.2.19(released 2011-05-22)를 다운로드 받고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Win32 Source - httpd-2.2.19-win32-src.zip ; <a target='_tab' href='http://mirror.apache-kr.org//httpd/httpd-2.2.19-win32-src.zip'>http://mirror.apache-kr.org//httpd/httpd-2.2.19-win32-src.zip</a> </pre> <br /> zlib는 1.2.5 버전을 다운로드 받고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > zlib source code, version 1.2.5, tar.gz format ; <a target='_tab' href='http://zlib.net/zlib-1.2.5.tar.gz'>http://zlib.net/zlib-1.2.5.tar.gz</a> </pre> <br /> OpenSSL은 1.0.0d 버전을 다운로드 받았습니다. 하지만 Apache 2.2.19 소스 코드가 1.0.0d에는 없는 헤더파일을 하나 요구하기 때문에 0.9.8h 버전도 함께 받아둡니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Feb 8 18:29:10 2011 openssl-1.0.0d.tar.gz (MD5) (SHA1) (PGP sign) [LATEST] ; <a target='_tab' href='http://www.openssl.org/source/openssl-1.0.0d.tar.gz'>http://www.openssl.org/source/openssl-1.0.0d.tar.gz</a> openssl-0.9.8h.tar.gz ; <a target='_tab' href='http://www.openssl.org/source/openssl-0.9.8h.tar.gz'>http://www.openssl.org/source/openssl-0.9.8h.tar.gz</a> </pre> <br /> 다운로드 준비는 이것으로 끝!<br /> <br /> <hr style='width: 50%' /><br /> <br /> 역시 빌드를 위한 폴더 구조를 만들어야 하는데요. 제 경우에는 루트 폴더를 "d:\httpd_build"로 정했습니다. 그 이후, zlib, openssl, apache를 차례대로 빌드해 나갔습니다.<br /> <br /> <div style='font-size: 12pt; font-family: 맑은 고딕, Consolas; color: #2211AA; text-align: left; font-weight: bold'>zlib 빌드</div><br /> <br /> zlib-1.2.5.tar.gz 파일을 "d:\httpd_build" 하위에 압축을 풉니다.<br /> <br /> <img alt='how_to_build_apache_win_1.png' src='/SysWebRes/bbs/how_to_build_apache_win_1.png' /><br /> <br /> "시작" / "Microsoft Visual Studio 2008" / "Visual Studio Tools" / "Visual Studio 2008 Command Prompt"를 실행하고, 다음과 같이 차례대로 명령어를 실행해 줍니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > d:\Program Files (x86)\Microsoft Visual Studio 9.0\VC><b style='COLOR: blue'>cd /d D:\httpd_build\zlib</b> D:\httpd_build\zlib><b style='COLOR: blue'>nmake -f win32\Makefile.msc</b> </pre> <br /> 혹시 위의 빌드 과정에서 오류가 발생하면 다음의 글을 참고하십시오.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > zlib 빌드 오류 - inflate.obj : error LNK2001: unresolved external symbol _inflate_fast ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/1044'>http://www.sysnet.pe.kr/2/0/1044</a> </pre> <br /> 빌드 결과물은 D:\httpd_build\zlib 폴더에 그대로 쌓입니다.<br /> <br /> <div style='font-size: 12pt; font-family: 맑은 고딕, Consolas; color: #2211AA; text-align: left; font-weight: bold'>OpenSSL 빌드</div><br /> <br /> openssl-1.0.0d.tar.gz 파일을 d:\httpd_build\openssl 하위에 압축을 해제합니다. <br /> <br /> <img alt='how_to_build_apache_win_2.png' src='/SysWebRes/bbs/how_to_build_apache_win_2.png' /><br /> <br /> 이제, "시작" / "Microsoft Visual Studio 2008" / "Visual Studio Tools" / "Visual Studio 2008 Command Prompt" 명령행 윈도우를 띄우고 d:\httpd_build\OpenSSL 폴더로 이동한 후 perl을 이용해 다음과 같은 명령어를 차례로 수행해 빌드 환경을 구성해 줍니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > perl Configure VC-WIN32 no-asm ms\do_ms </pre> <br /> 아래는 실제로 제 환경에서 실행했을 때의 출력 결과입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > d:\httpd_build\openssl><b style='COLOR: blue'>perl Configure VC-WIN32 no-asm</b> Configuring for VC-WIN32 no-asm [option] OPENSSL_NO_ASM no-gmp [default] OPENSSL_NO_GMP (skip dir) no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir) no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5 no-md2 [default] OPENSSL_NO_MD2 (skip dir) no-rc5 [default] OPENSSL_NO_RC5 (skip dir) no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir) no-shared [default] no-store [experimental] OPENSSL_NO_STORE (skip dir) no-zlib [default] no-zlib-dynamic [default] IsMK1MF=1 CC =cl CFLAG =-DOPENSSL_THREADS -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE EX_LIBS = CPUID_OBJ =mem_clr.o BN_ASM =bn_asm.o DES_ENC =des_enc.o fcrypt_b.o AES_ENC =aes_core.o aes_cbc.o BF_ENC =bf_enc.o CAST_ENC =c_enc.o RC4_ENC =rc4_enc.o rc4_skey.o RC5_ENC =rc5_enc.o MD5_OBJ_ASM = SHA1_OBJ_ASM = RMD160_OBJ_ASM= CMLL_ENC= =camellia.o cmll_misc.o cmll_cbc.o PROCESSOR = RANLIB =true ARFLAGS = PERL =perl THIRTY_TWO_BIT mode BN_LLONG mode RC4_INDEX mode RC4_CHUNK is undefined Configured for VC-WIN32. d:\httpd_build\openssl><b style='COLOR: blue'>ms\do_ms</b> d:\httpd_build\openssl>perl util\mkfiles.pl 1>MINFO d:\httpd_build\openssl>perl util\mk1mf.pl no-asm VC-WIN32 1>ms\nt.mak d:\httpd_build\openssl>perl util\mk1mf.pl dll no-asm VC-WIN32 1>ms\ntdll.mak d:\httpd_build\openssl>if x == x goto skipce d:\httpd_build\openssl>perl util\mkdef.pl 32 libeay 1>ms\libeay32.def d:\httpd_build\openssl>perl util\mkdef.pl 32 ssleay 1>ms\ssleay32.def d:\httpd_build\openssl> </pre> <br /> 이어서 nmake를 다음과 같이 수행해 주면 정상적으로 빌드가 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > nmake -f ms\ntdll.mak </pre> <br /> (i7 Hyper-V 가상 머신에서 약 4분 정도 빌드 시간이 걸렸습니다.)<br /> <br /> 빌드가 복잡한 만큼 정상적으로 빌드되었는지 확인하기 위해 'nmake -f ms\ntdll.mak test' 명령어로 확인해 보았고 마지막 라인에서 'passed all tests'라는 문구를 확인했습니다.<br /> <br /> 확인해 보니까, 모든 빌드된 결과물들이 'D:\httpd_build\openssl\out32dll' 폴더에 존재했습니다. <br /> <br /> <div style='font-size: 12pt; font-family: 맑은 고딕, Consolas; color: #2211AA; text-align: left; font-weight: bold'>Apache 빌드</div><br /> <br /> 아파치 소스 코드를 이제 'd:\httpd_build\httpd' 폴더에 압축 해제합니다.<br /> <br /> <img alt='how_to_build_apache_win_3.png' src='/SysWebRes/bbs/how_to_build_apache_win_3.png' /><br /> <br /> 빌드 결과물을 포함한 zlib 폴더를(D:\httpd_build\zlib) 'd:\httpd_build\httpd\srclib\zlib' 폴더에 복사하고, openssl 내용을(D:\httpd_build\openssl) 'd:\httpd_build\httpd\srclib\openssl' 폴더에 복사합니다.<br /> <br /> <img alt='how_to_build_apache_win_4.png' src='/SysWebRes/bbs/how_to_build_apache_win_4.png' /><br /> <br /> 그다음, "openssl-0.9.8h.tar.gz" 파일을 압축해제하면 "/include/openssl/store.h" 파일이 나오는데 이것을 D:\httpd_build\httpd\srclib\openssl\inc32\openssl 폴더에 복사해줍니다.<br /> <br /> 최종적으로 다음과 같이 명령을 내려주면 "d:\httpd_build\Apache22" 폴더에 아파치 소스 코드가 빌드되어 바이너리가 생성됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > d:\httpd_build\httpd><b style='COLOR: blue'>nmake /f Makefile.win INSTDIR="d:\httpd_build\Apache22" installr</b> Microsoft (R) Program Maintenance Utility Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. <b style='COLOR: blue'>INSTDIR = d:\httpd_build\Apache22 DOMAINNAME = example.com SERVERNAME = www.example.com SERVERADMIN = admin@example.com PORT = 80 SSLPORT = 443 </b> To change these options use 'nmake -f Makefile.win [option=value]' Example: nmake -f Makefile.win PORT=8080 echo Building Win32 Release targets (R suffixes) Building Win32 Release targets (R suffixes) cd srclib\apr "d:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -nologo -f apr.mak Win32 Release" RECURSE=0 if not exist ".\LibR/" mkdir ".\LibR" tempfile.bat ...[생략]... </pre> <br /> 빌드가 완료되고 나면 "d:\httpd_build\Apache22" 폴더에 최종 결과물들이 쌓이고, <a target='_tab' href='http://httpd.apache.org/docs/2.2/platform/windows.html'>아파치 웹 서버를 구동</a>시킬 수 있습니다. 우선, "d:\httpd_build\Apache22\conf\httpd.conf" 파일에서 "Listen 80"을 원하는 포트 번호(제 경우에는 6500)로 변경하고, "d:\httpd_build\Apache22\bin\httpd.exe"를 실행시키면 http://localhost:6500과 같이 확인할 수 있습니다.<br /> <br /> 무소식이 희소식이군요. <a target='_tab' href='http://www.sysnet.pe.kr/2/0/798'>Tomcat은 실행</a> 후 제법 정보를 출력해 주던데, 아파치 httpd.exe는 실행하면 다음과 같이 아무것도 출력하지 않아서, 정상적으로 동작하는지 확인하기 위해 웹 브라우저를 사용할 수밖에 없었습니다.<br /> <br /> <img alt='how_to_build_apache_win_5.png' src='/SysWebRes/bbs/how_to_build_apache_win_5.png' /><br /> <br /> 나아가서, 아래의 글에서 설명했던 데로 PHP를 올려 보니... 역시 정상적으로 동작했습니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > .NET 개발자가 처음 설치해 본 Apache + PHP ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/1040'>http://www.sysnet.pe.kr/2/0/1040</a> </pre> <br /> 일단 다 해보고 나서 정리차원에서 글을 쓰느라 저렇게 간단하게 나오긴 했지만, 도중에 시행착오를 생각하면 간단한 작업이었다고 볼 수는 없습니다.<br /> <br /> 그래도 제가 직접 빌드한 결과물로부터 'http://localhost:6500'이 동작했을 때의 짜릿한 맛은 있군요. ^^<br /> <br /><br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1100
(왼쪽의 숫자를 입력해야 합니다.)