'Apache2'에 해당되는 글 2건

  1. 2009.05.28 | 아파치에서 IPv6,IPv4 함께 사용하기
  2. 2009.05.28 | 아파치2.x에서 mod_ssl 설치하기.

아파치에서 IPv6,IPv4 함께 사용하기

기타 | 2009. 5. 28. 17:48
Posted by 시반

모 업체에서 IPv6와 IPv4를 함께 사용할 수 있는지에 대한 문의가 있었다. 차후 IPv6를 도입할까 하는데 기존IPv4도 함께 사용할 수 있는지에 대한  부분이었는데. 아파치 등 웹서버나 WAS에서 IPv6를 지원한다는 말은 들었는데 동시에 사용할 수 있는지는 잘 몰랐었지만 마침 아파치 레퍼런스 페이지에서 찾아볼수 있어서 올려본다.

아파치를 시작하면 아파치는 컴퓨터의 어떤 포트와 주소에 연결하여, 들어오는 요청을 기다립니다. 기본적으로 아파치는 컴퓨터의 모든 주소에서 기다리게 되지만 아파치가 특정 포트나 선택한 주소만을 기다리게 해야할 경우가 있다. 또 이 문제는 아파치가 어떻게 다른 IP 주소, 호스트명, 포트에 반응할지를 결정하는 가상호스트 기능과도 관련되있다.

Listen 지시어는 서버가 특정 포트나 주소와 포트 조합에서만 요청을 받게 한다. Listen 지시어에 포트 번호만 지정하면, 서버는 모든 인터페이스에서 지정한 포트를 기다린다. 여러 Listen 지시어로 기다릴 여러 주소와 포트를 지정할 수도 있다. 서버는 열거한 주소와 포트로 요청이 들어오면 응답한다.

예를 들어, 서버가 80번과 8000번 포트 모두에서 연결을 받도록 하려면:

Listen 80
Listen 8000

서버가 지정한 두 인터페이스와 포트에서 연결을 기다리도록 하려면,

Listen 192.0.2.1:80
Listen 192.0.2.5:8000

IPv6 주소는 다음과 같이 대괄호로 묶어야 한다:

Listen [2001:db8::a00:20ff:fea7:ccea]:80

 

IPv6에서 특별히 고려할 점

IPv6를 구현한 플래폼이 늘고 있고 APR이 이들 플래폼 대부분에서 IPv6를 지원하기때문에, 아파치는 IPv6 소켓을 할당하여 IPv6로 받은 요청을 처리할 수 있다.

아파치 관리자에게 복잡한 부분은 IPv6 소켓이 IPv4 연결과 IPv6 연결을 모두 처리할 수 있느냐는 점이다. 대부분의 플래폼에서는 IPv4-대응(mapped) IPv6 주소를 사용하여 IPv6 소켓에서 IPv4 연결을 받지만, FreeBSD NetBSD OpenBSD은 시스템전체 정책때문에 기본적으로 허용하지 않는다. 그러나 기본적으로 허용하지않는 시스템이라도 아파치를 위해 특별한 설정 파라미터로 변경할 수 있다.

반면 리눅스와 Tru64 같은 일부 플래폼에서 IPv4 IPv6을 모두 처리하려면 대응 주소를 사용해야만 한다. 아파치가 최소한의 소켓을 사용하여 IPv4 연결과 IPv6 연결을 모두 받도록하려면, IPv4-대응 IPv6 주소를 사용하고 configure 옵션 --enable-v4-mapped를 지정한다.

--enable-v4-mapped FreeBSD, NetBSD, OpenBSD를 제외한 모든 플래폼에서 기본값이고, 아마도 당신의 아파치도 마찬가지일 것이다.

플래폼과 APR의 지원여부와 관계없이 아파치가 IPv4 연결만을 받도록하려면, 다음 예제와 같이 모든 Listen 지시어에 IPv4 주소를 사용한다:

Listen 0.0.0.0:80
Listen 192.0.2.1:80

플래폼에서 지원하며 아파치가 서로 다른 소켓으로 IPv4 연결과 IPv6 연결을 받도록하려면 ( IPv4-대응 주소를 사용하지 않으려면), configure 옵션 --disable-v4-mapped를 지정한다. --disable-v4-mapped FreeBSD, NetBSD, OpenBSD에서 기본값이다.

 

Listen은 가상호스트를 만들지 않는다. 이는 단지 주서버가 어떤 주소와 포트를 기다릴지만 알려준다. <VirtualHost> 지시어를 사용하지 않으면, 서버는 받은 모든 요청을 똑같이 처리한다. 그러나 <VirtualHost>로 여러 주소와 포트에 대해 다른 행동을 지정할 수 있다. 가상호스트를 만들려면 먼저 서버에게 사용할 주소와 포트를 알려줘야 한다. 그리고 특정 주소와 포트에 대한 가상호스트의 행동을 지정할 <VirtualHost> 섹션이 필요하다. 주서버가 기다리지않는 주소와 포트를 사용하는 <VirtualHost>는 접근할 수 없음을 주의하라.

Copyright 2009 The Apache Software Foundation.
Licensed under the
Apache License, Version 2.0.

 

 

아파치2.x에서 mod_ssl 설치하기.

기타 | 2009. 5. 28. 17:12
Posted by 시반
이 문서는 아파치를 설치하고 공유객체를 이용하여 동적으로 아파치 확장모듈을 설치하기 위한 가이드라인을 제공하기 위해 작성되었습니다. AIX5.3을 기준으로 작성되었지만 테스트 환경이 AIX였을 뿐 리눅스에서도 동일하게 테스트 할 수 있을것입니다. 운영중에 있던 아파치서버에 보안서버를 구축하던 중 mod_ssl이 설치되지 않아 아파치를 재설치를 해야 하는지에 대한 문의가 있었기 때문에 mod-ssl 등의 아파치 확장모듈을 등록하는방법 위주로 설명하겠습니다.(SSL 설정 등 보안서버 구축부분은 이번 문서에서는 제외하겠습니다).

 

준비사항
1. http://httpd.apache.org 에서 아파치 2.2.2(https-2.2.2.tar.gz)를 다운받는다
2.
http://www.ibm.com/servers/aix/products/aixos/linux/download.html에서  gcc를 다운받는다

  (gcc 4.0 ß GNU C compiler version 4 for AIX 5.3 )
3.
http://www.ibm.com/servers/aix/products/aixos/linux/download.html에서 AIX 5.3 을 위한 GCC라이브러리를 다운받는다.(libgcc 4.0)

AIX에서 Apache2설치하기

먼저 아파치의 컴파일과 설치에 대해 알아보겠습니다. 기본적으로 최소 50M이상의 여유공간과 ANSI-C 컴파일러(gcc추천), apxs등의 지원 스크립트를 위한  Perl5 인터프리터를 필요로 합니다. 여러 종류의 Perl이 설치되어 있는 시스템이라면 configure가 올바른 것을 찾을수 있도록 –with-perl 옵션을 이용합니다.

 

먼저 다운로드 받은 apache 설치 파일의 압축을 풉니다.

  • tar –xvf httpd-2.2.NN.tar.gz

설치파일은 httpd-2.2.NN.tar.gz의 형태를 가집니다. 이때 NN은 버전정보입니다.이제 configure를 이용하여 아파치 구성정보를 설정합니다,

  • configure --prefix=PREFIX --enable-so CC=/usr/bin/gcc
  • configure --prefix= PREFIX --enable-modules=all --enable-so --enable-ssl --with-ssl=/usr/bin/openssl CC=/usr/bin/gcc

첫번째 라인은 기본적인 아파치 설정구문입니다. PREFIX는 아파치 설치경로로서 기본값으로 /usr/local/apache2를 사용하게 됩니다. --enable-so는 운영중에 동적으로 공유객체를 이용하여 아파치를 확장하기 위한 옵션입니다. CC는 컴파일에 사용할 C컴파일러 명령어를 지정하는데요. 일반적으로 gcc를 사용하기 때문에 gcc가 설치된 위치를 지정하면 됩니다.

두번째 라인은 아파치 설치와 동시에 배포본에 있는 특정모듈을 함께 설치하고자  할 때 사용되는 예제입니다. 기본설정에서는 비활성화된 상태로 컴파일되는 mod_ssl을 사용하기 위해 --enable-ssl 옵션을 명시해야 합니다. 또한 mod_ssl을 사용하기 위해서는 아파치 설치전 openssl이 설치되어 있어야 합니다.(없으면 미설치) –with-ssl 옵션을 통하여 참조할 openssl위치를 지정합니다.

다음으로는 설정한 아파치를 컴파일해야 합니다

좀더 자세한 configure 구성옵션을 알기 원한다면 http://httpd.apache.org/docs/2.2/programs/configure.html 를 참조하세요.

  • make

다소 간단한 명령어지만 컴파일시간은 다소 시간이 걸립니다. 이 시간은 하드웨어와 포함한 모듈수에 따라 달라집니다. 또한 다시 설정을 하고자 한다면 make clean을 통해 컴파일내용을 초기화할 수 있습니다.

이젠 다음 명령어로 컴파일한 아파치를 지정한 설치 위치에 설치합니다.

  • make install

추가모듈이 있는 경우 httpd.conf파일에 LoadModule=추가모듈SDO가 자동으로 추가가 됩니다.

나중에 별도로 설치하는 경우에는 수동으로 직접 편집할  수 있습니다. 설치를 마쳤다면 운영환경에 맞춰 설정파일을 편집합니다

  • 아파치 설치디렉토리로 이동합니다(PREFIX)
  • vi PREFIX/conf/httpd.conf

설치디렉토리 하위디렉토리의 conf디렉토리에 들어있는 httpd.conf 파일을 열어 아파치 웹서버를 설정합니다.

ssl을 구성한다면 PREFIX/conf/extra/http-ssl.conf 파일에서 설정하도록 권장하고 있습니다.

단 이 구성정보를 사용하기 위해 httpd.conf파일에서 Include conf/extra/httpd-ssl.conf 항목의 주석을 해제해야 합니다. (또는 별도 설정파일 지정)

웹서버 설정파일과 관련하여 좀더 자세한 사항을 알기를 원하신다면 http://httpd.apache.org/docs/2.2/configuring.html 를 참조하세요.

  • PREFIX/bin/httpd –l  을 통하여 httpd를 통하여 등록된 모듈정보를 확인할 수 있습니다.
  • PREFIX/bin/httpd –t 를 통해 httpd.conf의 유효성검사를 수행할 수 있습니다.
  • http://httpd.apache.org/docs/2.2/mod/ 에서 아파치 패키지내 모듈에 대한 정보를 확인할 수 있습니다.

이제 구동 및 정지를 수행하도록 합니다.

  • PREFIX/bin/apachectl start 를 통하여 아파치를 구동합니다
  • start stop restart 를 사용할 수 있습니다.
  • 2.2 버전에서는 이전버젼에서 ssl 설정시 사용했던 apachectl startssl을 더 이상 사용하지 않습니다
  • 앞서 보았던 환경설정(http-ssl.conf)를 읽어 https를 지원합니다. (PREFIX/bin/apachectl start)

추후 버전 업그레이드를 하는 경우에는 기존 설치파일이 있는 경우 쉽게 진행될 수 있습니다. 기존 설치파일경로에 있는config.nice파일에는 소스를 구성할 때 사용했던 configure명령행 옵션을 그대로 저장하고 있기 때문에 추후 새로운 버전 소스에 config.nice파일을 복사하고 실행하면 됩니다.

  • config.nice 복사
  • make
  • make install

동적 공유객체를 이용하여 아파치 모듈 확장하기

앞에서는 아파치를 설치하면서 함께 확장모듈을 등록하는 방법을 살펴보았다면 이번엔 이미 설치된 아파치에서 DSO기능을 이용하여 어떻게 모듈을 추가하는지를 살펴보도록 하겠습니다.(http://httpd.apache.org/docs/2.2/dso.html 참고).

 

DSO기능을 언제 사용하는지 간략하게 요약하면 ..

  • 공유모듈을 나중에 사용하기 위해 아파치를 구성하는 경우
  • 아파치 배포본에 있는 추가모듈을 컴파일하고 설치하는 경우
  • 제삼자가 만든 아파치 모듈을 컴파일하고 설치하는 경우
  • 제삼자가 만든 아파치 모듈을 컴파일하고 설치하는 경우 apxs를 사용하여 설치하는 경우

머 어떤 경우라도 일단 공유모듈이 컴파일되면 httpd.conf LoadModule 지시어를 사용하여 아파치에 모듈을 추가할 수 있습니다.

먼저 공유모듈을 나중에 사용하기 위해 아파치를 구성하는 경우가 있는데 이건 앞에서 설치부분에서 설명한바 있으니깐 패스.

  • configure --enable-so
  • make install

제삼자가 만든 아파치 모듈을 컴파일하고 설치하는 경우는(예를들어mod_foo.c를 설치하는 경우) --add-module옵 사용하여 제삼자가 만든 아파치 모듈을 지정합니다 이때 해당 모듈을 공유객체로 지정한다는 의미로 –enable-foo=shared 옵션을 사용합니다

  • configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
  • make install

제 삼자가 만든 아파치 모듈을 컴파일하고 apxs를 사용하여 아파치 소스트리 밖에서 설치하는 방법입니다. 일반적으로 제 삼자가 만든 아파치 모듈의 경우 이 방법을 많이 매뉴얼로 제공하고 있습니다. 대부분 압축파일로 제공하고 있는 모듈의 압축을 풀어 해당 위치로 이동한후 아피치의 apxs를 이용하여 컴파일하고 설치를 진행합니다.(예를 들어 mod_foo.c 모듈을 설치하는 경우)

좀더 상세한 정보를 원하신다면 http://httpd.apache.org/docs/2.2/programs/apxs.html 를 참조하세요

  • cd /path/to/3rdparty
  • apxs -c mod_foo.c
  • apxs -i -a -n foo mod_foo.la

마지막으로 아파치 배포본(설치파일)에 있는 아파치 모듈을 설치하고자 하는 경우입니다. 이 문서에서 다루고자 한 부분이구요. 이번 예제는 앞서 설치 예제에서 보았던 ssl설정 부분을 아파치가 이미 설치가 된 이후에 추가하는 것으로 진행해보도록 하겠습니다.

앞서 말했듯이 PREFIX는 아파치가 설치된 경로를 말합니다. –with-apr 옵션을 사용하지 않는다면 배포본에 포함되어 있는 Apache Portable Runtime(APR)이 자동으로 웹서버와 함께 컴파일됩니다. 따라서 컴파일 및 설치시에 그만큼의 시간이 더 소모되기 때문에 이미 설치된 APR을 대신 사용한다는 것을 명시해주어야 합니다. APR 이 설치된 절대경로,파일명,디렉토리명을 사용할 수 있으며 지정한 디렉토리나 그 디렉토리의 하위 디렉토리 bin apr-config가 존재해야 합니다. 역시 마찬가지로 http 배포폰에 포함된 APU(apache portable runtime utilities) 대신 이미 설치된 아파치의 APU를 사용하기 위해 –with-apr-util 옵션을 사용하여 경로를 지정합니다. --enable-ssl 옵션은 기본설치에는 비활성화되어있으며 2.x 부터 통합된 mod_ssl을 사용하기 위한 옵션입니다. --with-ssl mod_ssl을 사용하는 경우 configure에서 설치된 openssl을 찾을수 있도록 하는 옵션입니다.openssl이 설치된 경로를 지정합니다. --enable-module=shared 옵션은 해당 모듈을 DSO모듈로 컴파일하는 옵션입니다.

마지막으로 CC는 추천하고 있는 C컴파일러의 경로를 지정합니다.

  • configure --prefix=PREFIX --with-apr=PREFIX/bin --with-apr-util=PREFIX/bin --enable-so --enable-ssl=ssl --with-ssl=/usr/bin/openssl --enable-module=shared CC=/usr/bin/gcc
  • make install

Q&A

 

설치에 관한 질문이 있다면…*^^*..

  • configure는 배포본의 최상위경로에서만 해야하나여?

configure는 특정플랫폼에서 아파치 웹서버를 컴파일하고 설치하기 위해 소스트리를 구성하기 위한 스크립트입니다.유닉스와 유닉스류 시스템에서는 최상위 디렉토리에서 실행하도록 되어있으며 다른 플랫폼을 사용한다면 해당 플랫폼 문서에서 확인할 수 있다고 하네요.

  • 아파치 패키지에 있는 추가모듈을 설치하고자 할 때 이미 아파치가 설치되어 있는 경우에는 기존 설정정보를 덮어쓰지 않을까요

확인 결과 패키지 내 추가모듈만을 설치할 때에는 기존 httpd.conf파일에 해당 부분이 추가가 될 뿐입니다. 단지 --with-apr --with-apr-util 를 명시하지 않은 경우에는 재설치로 해당 APR이나 APU  사용하기 위해 배포본에서 함께 컴파일 및 인스톨하게 됩니다. 패키지내 모듈을 추가하실 때에는 이 두 옵션을 사용하시면 됩니다. 참고로 새로이 설정작업을 하시는 경우에는 make clean을 통해 컴파일 정보를 삭제할 수 있습니다. 하지만 언제나 백업은 필수겠죠…..

  • 아파치 2.2버전에서 SSL을 추가 설치했는데요. mod_ssl.so를 확인할 수 없습니다.

아파치는 mod_so LoadModule 지시어로 실행중에 동적공유객체를 서버로 읽어들일수 있으며 이런 확장방식을 사용하기 위해서는 플랫폼이 DSO 기능을 지원하고 아파치 httpd 실행파일을 mod_so모듈과 함께 컴파일해야 합니다. apxs도구는 이 조건이 만족하지 않으면 실행되지 않습니다. httpd –l을 이용하면 설치된 모듈목록을 확인할 수 있습니다. 하지만 mod_ssl.c 항목을 발견하셨다면 해당 모듈이 앞서말한 이유로 공유객체가 아닌 정적으로 설치되었기 때문입니다. 즉 아파치가 구동과 동시에 항상 로드되도록 구성되었다는 의미이며  이 경우 httpd.conf에서 LoadModule ssl_module modules/mod_ssl.so 라인이 추가되지 않습니다. 하지만 정상적으로 설치된 상태입니다.

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)