[하얀피]님이 남기신 글:
>엄..--
>그럼...
>저는 지금까지 Static 모듈로 세팅할때..
># ./configure \
>--prefix=/usr/local/apache \
>--add-module=../mod_throttle/mod_throttle.c \
>--activate-module=src/modules/php4/libphp4.a \
>--enable-module=so \
>--enable-shared=max
># make; make install
>
>DSO 모듈로 세팅할때는..
># ./configure \
>--prefix=/usr/local/apache \
>--enable-rule=SHARED_CORE \
>--enable-module=so \
>--enable-shared=max
># make; make install
>이정도만 하는데...
>그럼 둘다 차이가 없는건가요?
>전자에서는 필요한것은 미리 Static하게 아파치 코어에 붙여 놓은뒤..
>추후 DSO 모듈을 로드해서 사용하고..
전자는 so, mod_throttle, php 만 아파치 core 에 정적으로 붙고
나머지는 DSO 로 빌드됩니다.
>후자는 아무것도 없이 설치된 후.. DSO 모듈을 로드해서 사용한다..
>맞나요?
후자는 직접 mod_throttle, php 모듈에 대해서 지정이 없거나
enable 되어 있지 않기 때문에 정적이나 DSO 로 빌드되지 않습니다.
그리고 나머지는 기본적으로 enable 되어 있는 모듈만 DSO 로 빌드됩니다.
>그럼 Static과 DSO의 차이는 크게 없는건가요?? 움..--a
>아니.. 좀더 정확히 하면..
>Static으로 세팅하든 DSO로 세팅하든..
>추후 AA라는 모듈을 DSO로 로드해서 사용하면..
>둘다 차이가 없단 말인지요....
>
위의 경우는 정확히 말하면 이 양자의 차이는 크게 없습니다.
아파치 core 에 so 모듈만 정적으로 붙어 있다면 아파치를 빌드할때
DSO 로 만들어도 되고 아파치 설치를 모두 마치고 나중에 DSO 로
빌드하여도 그 결과는 정확히 같습니다.
다만 직접 위의 두가지 방법을 직접 빌드해보고 httpd -l 이나
libexec 디렉토리로 이동해서 DSO 모듈을 확인해 보세요.
(거의 차이가 없을 겁니다. 직접 정적으로 빌드하는 모듈만 제외하고)
나중에 추가로 DSO 모듈을 빌드하여 로드할 수 있는데
이때는 반드시 아파치 core 에 so 모듈이 정적으로 붙어 있어야합니다.
위의 경우는 양자 모두 so 모듈이 core 로 붙어 있기 때문에
가능합니다.
참고로 나중에 추가로 특정 모듈을 아파치 core 에 붙이려고 한다면
이것은 아파치를 다시 빌드해야함을 의미합니다.
DSO 모듈은 말그대로 아파치 core 에 떨어져 있는 동적인 모듈입니다.
>
>[산이]님이 남기신 글:
>
>>
>>[하얀피]님이 남기신 글:
>>
>>>안녕하세요.
>>>아파치 옵션중에 이해가 안되는 것이...
>>>
>>>산이님의 책자를 보면..
>>>--enable-shared=max 가..
>>>부트스트래핑 so 모듈을 제외한 모든 모듈에 대해 DSO를
>>>enable/disable 시키는 것이라고 하셨는데...
>>>
>>>저는 보통..
>>># ./configure \
>>>--prefix=/usr/local/apache \
>>>--add-module=../mod_throttle/mod_throttle.c \
>>>--activate-module=src/modules/php4/libphp4.a \
>>>--enable-module=so \
>>>--enable-shared=max
>>># make ; make install
>>>이정도를 사용하고 있거든요?
>>>제가 위에서 사용하는 --enable-shared=max의 정의를..
>>>좀더 자세히 알고 싶습니다.
>>>
>>
>>+ enabling mod_so for DSO support
>>
>>DSO 모듈은 기본적으로 so 모듈을 필요로 하기 때문에
>>어느 하나가 DSO 로 빌드되면 자동으로 so 모듈은 정적으로
>>붙습니다.
>>
>>--enable-shared=max
>>
>>standard/ 디렉토리에서
>>
>>mod_access.so mod_asis.so mod_cgi.so mod_imap.so mod_mime.so mod_status.so
>>mod_actions.so mod_auth.so mod_dir.so mod_include.so mod_negotiation.so mod_userdir.so
>>mod_alias.so mod_autoindex.so mod_env.so mod_log_config.so mod_setenvif.so
>>
>>이정도의 모듈이 DSO 로 빌드됩니다.
>>모두 다 DSO 로 빌드되지 않고 mod_rewrite, mod_auth_db 이와 같은 모듈은
>>제외됩니다. 그 기준은 아파이 버전마다 다를 수 있으므로
>>반드시 INSTALL 파일을 열어서 확인해야 합니다.
>>즉 INSTALL 파일에서 `LIST OF AVAILABLE MODULES' 에서
>>(+) 로 표시되어 있는(기본적으로 enable 됨) 모듈을 DSO 로 빌드함을
>>의미합니다.
>>
>>또한 enable-module 로 지정한 모듈(3'th 모듈 제외)도 정적으로 붙지
>>않고 이것을 DSO 모듈로 빌드합니다.
>>
>>즉
>>
>>--enable-module=rewrite \
>>--enable-shared=max
>>
>>이렇게 지정하면 rewrite 모듈은 정적으로 붙지 않고 DSO 모듈로
>>만들진다는 것을 말합니다.
>>
>>바꾸어 말하면 --enable-shared=max 이 옵션은 enable 되는 모듈을
>>모두 DSO 로 빌드하겠다는 의미가 되겠죠.
>>
>>따라서 위의 경우에서 rewreit 모듈은 정적으로 붙이고
>>이것을 제외한 나머지 enble 되는 모듈을 DSO 로 빌드하고자 한다면
>>하나씩 저정해야 합니다.
>>
>>그리고 주의할점이 있는데
>>
>>--enable-shared=rewrite
>>
>>이런 하나의 옵션을 사용하면 rewrite 모듈은 DSO 로 만들어지지
>>않습니다. 즉 rewrite 모듈은 기본적으로 disable 되어 있고
>>enable 에 대한 아무런 언급이 없기 때문에 결국 DSO 로 만드러지지
>>않습니다. 이것은 다음과 같이 지정해야 정답입니다.
>>
>>--enable-module=rewrite \
>>--enable-shared=rewrite
>>
>>참고로 --enable-shared=remain 이라는 옵션이 있는데 이것은
>>아직 enable 되어 있지 않은 모듈을 모두 DSO 로 빌드하겠다는 의미입니다.
>>
>>
>>
>>>P.S.. Static 모듈로 운영되는 APM 서버는...
>>>php 업그레이드시.. 반드시 APM 전체를 리빌드 해야 하나요?
>>>
>>
>>MySQL 은 제외하고 Apache 를 다시 빌드해야 합니다. 만약
>>PHP 와 같은 모듈이 정적으로 붙어있으면 역시 Apache + PHP 를
>>다시 빌드해야 합니다.
>>
>>>P.S2.. chattr +i 로 잠긴 파일들을 검색할 순 없을까요?
>>
>>shell> lsattr *
>>
>>이렇게 검색할 수 있습니다.
>>
>>또는
>>
>>shell> lsattr /{root,usr,lib,var,tmp,bin,sbin,home,boot,etc}/* | grep '\-i\-'
>>
>>========================================
>
>========================================
======================================== |