변수 사용 및 이해
Apache 웹 서버 및 Dispatcher 모듈 구성 파일에서 변수의 기능을 활용하는 방법을 알아봅니다.
설명 description
환경
AEM(Adobe Experience Manager)
문제
이 문서에서는 Apache 웹 서버 및 Dispatcher 모듈 구성 파일에서 변수의 기능을 활용할 수 있는 방법을 설명합니다.
변수
Apache는 Dispatcher 모듈의 변수 및 버전 4.1.9 이상을 지원합니다. 이를 활용하여 다음을 수행할 수 있습니다.
- 환경별 항목이 구성에 인라인이 아닌 추출되어 개발의 구성 파일이 동일한 기능 출력으로 프로덕션에서 작동하는지 확인하십시오.
- AMS가 제공하는 변경 불가능한 파일의 기능을 전환하고 로그 수준을 변경해도 변경되지 않습니다.
RUNMODE및ENV_TYPE과(와) 같은 변수를 기반으로 사용할 포함 항목을 변경합니다.- Apache 구성과 모듈 구성 간에 DocumentRoot와 VirtualHost DNS 이름을 일치시키십시오.
해결 방법 resolution
-
기준 변수 사용
AMS 기준 파일은 읽기 전용이며 변경할 수 없기 때문에 설정/해제하거나 사용하는 변수를 편집하여 구성할 수 있는 기능이 있습니다.기준선 변수
다음은
/etc/httpd/conf.d/variables/ams_default.vars파일의 내용 샘플입니다code language-none Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 0예 1 - SSL 강제 적용
AUTHOR_FORCE_SSL또는PUBLISH_FORCE_SSL위에 표시된 변수는 http 요청에 들어올 때 최종 사용자가 https로 리디렉션되도록 하는 재작성 규칙을 참여하도록 1로 설정할 수 있습니다.다음은 이 토글을 사용할 수 있는 구성 파일 구문입니다.
code language-none <VirtualHost *:80> <IfModule mod_rewrite.c> ReWriteEngine on <If "${PUBLISH_FORCE_SSL} == 1"> Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules </If> </IfModule> </VirtualHost>다음과 같은 재작성 규칙에 포함된 는 최종 사용자 브라우저를 리디렉션하는 코드가 있지만 1로 설정되는 변수는 파일 사용 여부를 나타냅니다.
예 2 - 로깅 수준
변수
DISP_LOG_LEVEL을(를) 사용하여 실행 중인 구성에서 실제로 사용되는 로그 수준에 사용할 항목을 설정할 수 있습니다.다음은 ams 기본 구성 파일에 있는 구문 예입니다.
code language-none <IfModule disp_apache2.c> DispatcherLog logs/dispatcher.log DispatcherLogLevel ${DISP_LOG_LEVEL} </IfModule>Dispatcher 로깅 수준을 높여야 하는 경우
ams_default.vars변수DISP_LOG_LEVEL을(를) 원하는 수준으로 업데이트하십시오.예제 값은 정수 또는 단어일 수 있습니다.
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 로그 수준 정수 값 단어 값 추적 4 추적 디버그 3 디버그 정보 2 정보 경고 1 경고 오류 0 오류 예제 3 - 허용 목록
IP 주소를 기반으로 최종 사용자 트래픽을 허용하거나 허용하지 않는 규칙을 포함하는 재작성 규칙에 참여하도록 변수
AUTHOR_WHITELIST_ENABLED및PUBLISH_WHITELIST_ENABLED을(를) 1(으)로 설정할 수 있습니다. 이 기능 ON 을(를) 전환하려면 화이트리스트 규칙 파일 만들기와 함께 이 기능을 포함해야 합니다.다음은 변수가 화이트리스트 파일 및 화이트리스트 파일의 포함을 활성화하는 방법에 대한 몇 가지 구문 예입니다.
sample.vhost:
code language-none <VirtualHost *:80> <Directory /> <If "${AUTHOR_WHITELIST_ENABLED} == 1"> Include /etc/httpd/conf.d/whitelists/*_whitelist.rules </If> </Directory> </VirtualHost>sample_whitelist.rules:
code language-none <RequireAny> Require ip 10.43.0.10/24 </RequireAny>볼 수 있듯이
sample_whitelist.rules은(는) IP 제한을 적용하지만 변수를 토글하면sample.vhost에 포함할 수 있습니다. -
변수를 배치할 위치
웹 서버 시작 인수AMS는
/etc/sysconfig/httpd파일 내에 있는 apache 프로세스의 시작 인수에 전역 변수를 넣습니다.이 파일에는 다음과 같이 미리 정의된 변수가 있습니다.
code language-none AUTHOR_IP="10.43.0.59" AUTHOR_PORT="4502" AUTHOR_DOCROOT='/mnt/var/www/author' PUBLISH_IP="10.43.0.20" PUBLISH_PORT="4503" PUBLISH_DOCROOT='/mnt/var/www/html' ENV_TYPE='dev' RUNMODE='dev'이는 변경할 수 있는 사항이 아니지만 구성 파일에서 활용하는 것이 좋습니다.
참고 - 서비스를 시작할 때만 이 파일이 포함되기 때문입니다. 변경 사항을 적용하려면 서비스를 다시 시작해야 합니다. 다시 로드하는 것만으로는 충분하지 않지만 대신 다시 시작해야 합니다.
변수 파일(.vars)
코드에서 제공한 사용자 지정 변수는
/etc/httpd/conf.d/variables/디렉터리 내의 .vars 파일에 있어야 합니다.이러한 파일에는 원하는 사용자 지정 변수가 있을 수 있습니다. 다음은 다음 샘플 파일에 대한 몇 가지 구문 예입니다.
고유한 변수를 만들 때 파일의 이름을 해당 내용에 따라 지정하고 수동 여기에 제공된 이름 지정 표준을 따르도록 지정합니다. 위의 예에서 변수 파일이 구성 파일에 사용할 변수로 다른 DNS 항목을 호스팅함을 볼 수 있습니다.
/etc/httpd/conf.d/variables/sample-domain_domains_dev.vars:
code language-none Define SAMPLE_DOMAIN dev.sample-domain.com Define SAMPLE_ALT_DOMAIN dev.sample-domain.net/etc/httpd/conf.d/variables/sample-domain_domains_stage.vars:
code language-none Define SAMPLE_DOMAIN stage.sample-domain.com Define SAMPLE_ALT_DOMAIN stage.sample-domain.net/etc/httpd/conf.d/variables/sample-domain_domains_prod.vars:
code language-none Define SAMPLE_DOMAIN www.sample-domain.com Define SAMPLE_ALT_DOMAIN www.sample-domain.net -
변수 사용
변수 파일 내에 변수를 정의했으므로 다른 구성 파일 내에서 변수를 올바르게 사용하는 방법에 대해 알아보겠습니다.위의 .vars 파일 예제를 사용하여 적절한 사용 사례를 보여 드리겠습니다.
모든 환경 기반 변수를 전체적으로 포함하려고
/etc/httpd/conf.d/000_load_env_vars.conf파일을 만듭니다.code language-none Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars Include /etc/httpd/conf.d/variables/*_${RUNMODE}.varshttpd 서비스가 시작되면 AMS가
/etc/sysconfig/httpd에서 설정한 변수를 가져오고 변수가ENV_TYPE및RUNMODE(으)로 설정되어 있는 것으로 알고 있습니다.conf.d의 포함 파일 순서는 파일 이름에 000을 의미하는 영숫자 로드 순서이므로 이 전역 .conf 파일을 가져올 때 일찍 가져옵니다. 이 순서는 디렉터리에 있는 다른 파일보다 먼저 로드됩니다.
include 문도 파일 이름에 변수를 사용합니다. 이렇게 하면
ENV_TYPE및RUNMODE변수에 있는 값에 따라 실제로 로드할 파일을 변경할 수 있습니다.ENV_TYPE값이 dev 이면 사용되는 파일은 다음과 같습니다./etc/httpd/conf.d/variables/sample-domain_domains_dev.varsENV_TYPE값이 단계 인 경우 사용되는 파일은 다음과 같습니다./etc/httpd/conf.d/variables/sample-domain_domains_stage.varsRUNMODE값이 미리 보기 인 경우 사용되는 파일은 다음과 같습니다./etc/httpd/conf.d/variables/sample-domain_domains_preview.vars해당 파일이 포함되면 내부에 저장된 변수 이름을 사용할 수 있습니다.
/etc/httpd/conf.d/available_vhosts/sample-domain.vhost파일에서 개발용으로만 작동한 일반 구문을 교환할 수 있습니다.code language-none <VirtualHost *:80> ServerName dev.sample-domain.com ServerAlias dev.sample-domain.netdev, stage 및 prod에 작동하는 변수의 기능을 사용하는 최신 구문의 경우,
code language-none <VirtualHost *:80> ServerName ${SAMPLE_DOMAIN} ServerAlias ${SAMPLE_ALT_DOMAIN}/etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any파일에서 개발용으로만 작동한 일반 구문을 교환할 수 있습니다.code language-none "dev.sample-domain.com" "dev.sample-domain.net"dev, stage 및 prod에 작동하는 변수의 기능을 사용하는 최신 구문의 경우,
code language-none "${SAMPLE_DOMAIN}" "${SAMPLE_ALT_DOMAIN}"이러한 변수는 환경당 배포된 파일이 다를 필요 없이 실행 중인 설정을 개별화하는 데 재사용률이 매우 큽니다. 기본적으로 변수를 사용하여 구성 파일을 템플릿화하고 변수를 기반으로 파일을 포함할 수 있습니다.