Ambiente
Adobe Experience Manager
Problema/Sintomas
Este documento explicará como você pode aproveitar o potencial das variáveis no servidor Web apache e nos arquivos de configuração do módulo Dispatcher.
Variáveis
O Apache suporta variáveis e versões 4.1.9 e posteriores do módulo do dispatcher. Podemos aproveitá-los para executar o seguinte:
RUNMODE
e ENV_TYPE
Uso das variáveis de linha de base
Devido ao fato de os arquivos de linha de base do AMS serem somente leitura e imutáveis, há recursos que podem ser desativados e ativados, bem como configurados ao editar as variáveis que consomem.
Variáveis da linha de base
Esta é uma amostra do conteúdo do arquivo /etc/httpd/conf.d/variables/ams_default.vars
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
Exemplo 1 - Forçar SSL
As variáveis mostradas acima AUTHOR_FORCE_SSL
ou PUBLISH_FORCE_SSL
pode ser definido como 1 para engajar regras de regravação que forçam os usuários finais ao entrarem na solicitação http a serem redirecionados para https.
Esta é a sintaxe do arquivo de configuração que permite que essa alternância funcione:
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
Como você pode ver, a inclusão das regras de regravação tem o código para redirecionar o navegador dos usuários finais, mas a variável que está sendo definida como 1 é a que permite que o arquivo seja usado ou não.
Exemplo 2 - Nível de registro
As variáveis DISP_LOG_LEVEL
pode ser usada para definir o que você deseja ter para o nível de log que é realmente usado na configuração em execução.
Este é o exemplo de sintaxe que existe nos arquivos de configuração da linha de base do AMS:
IfModule disp_apache2.c
DispatcherLog logs/dispatcher.log
DispatcherLogLevel ${DISP_LOG_LEVEL}
/IfModule
Se você precisar aumentar o nível de registro do dispatcher, basta atualizar a ams_default.vars
variável DISP_LOG_LEVEL
ao nível que você gostaria.
Os valores de exemplo podem ser um inteiro ou a palavra:
Nível de log | Valor inteiro | Valor da palavra |
---|---|---|
Rastreio | 4 | traçar |
Depurar | 3 | depurar |
Info | 2 | informações |
Aviso | 1 | aviso |
Erro | 0 | error |
Exemplo 3 - Listas de permissões
As variáveis AUTHOR_WHITELIST_ENABLED
e PUBLISH_WHITELIST_ENABLED
pode ser definido como 1 para engajar regras de regravação que incluem regras para permitir ou impedir o tráfego do usuário final com base no endereço IP. A alternância desse recurso precisa ser combinada com a criação de um arquivo de regras da lista de permissões, bem como para incluir.
Estes são alguns exemplos de sintaxe de como a variável habilita as inclusões dos arquivos da lista de permissões e um exemplo de arquivo da lista de permissões:
sample.vhost:
VirtualHost *:80
Directory /
If "${AUTHOR_WHITELIST_ENABLED} == 1"
Include /etc/httpd/conf.d/whitelists/*_whitelist.rules
/If
/Directory
/VirtualHost
sample_whitelist.rules:
RequireAny
Require ip 10.43.0.10/24
/RequireAny
Como você pode ver o sample_whitelist.rules
aplica a restrição de IP, mas a alternância da variável permite que ela seja incluída no sample.vhost
Onde colocar as variáveis?
Argumentos de inicialização do servidor da Web
O AMS colocará variáveis globais nos argumentos de inicialização do processo de apache dentro do arquivo /etc/sysconfig/httpd
Esse arquivo tem variáveis predefinidas, como mostrado aqui:
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'
Isso não é algo que você pode alterar, mas é bom para aproveitar em seus arquivos de configuração.
Observação - Devido ao fato de que esse arquivo só é incluído quando o serviço é iniciado. É necessário reiniciar o serviço para coletar as alterações. Isso significa que uma recarga não é suficiente, mas uma reinicialização é necessária.
Arquivos de variáveis (.vars)
As variáveis personalizadas fornecidas pelo código devem estar ativas em arquivos .vars dentro do diretório /etc/httpd/conf.d/variables/
Esses arquivos podem ter as variáveis personalizadas que você desejar. Estes são alguns exemplos de sintaxe para os seguintes arquivos de exemplo:
Ao criar seus próprios arquivos de variáveis, nomeie-os de acordo com seu conteúdo e siga os padrões de nomenclatura fornecidos no manual here. No exemplo acima, você pode ver que o arquivo de variáveis hospeda as diferentes entradas DNS como variáveis a serem usadas nos arquivos de configuração.
/etc/httpd/conf.d/variables/weretail_domains_dev.vars:
Define WERETAIL_DOMAIN dev.weretail.com
Define WERETAIL_ALT_DOMAIN dev.weretail.net
/etc/httpd/conf.d/variables/weretail_domains_stage.vars:
Define WERETAIL_DOMAIN stage.weretail.com
Define WERETAIL_ALT_DOMAIN stage.weretail.net
/etc/httpd/conf.d/variables/weretail_domains_prod.vars:
Define WERETAIL_DOMAIN www.weretail.com
Define WERETAIL_ALT_DOMAIN www.weretail.net
Uso de variáveis
Agora que você definiu suas variáveis dentro dos arquivos de variáveis, será necessário saber como usá-las corretamente em outros arquivos de configuração.
Usaremos o exemplo de arquivos .vars acima para ilustrar um caso de uso adequado.
Queremos incluir todas as variáveis baseadas em ambiente globalmente, criaremos o arquivo /etc/httpd/conf.d/000_load_env_vars.conf
Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars
Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars
Sabemos que, quando o serviço httpd é iniciado, ele recebe as variáveis definidas pelo AMS em /etc/sysconfig/httpd
e tem o conjunto de variáveis de ENV_TYPE
e RUNMODE
Quando esse arquivo .conf global for recebido, ele será recebido antecipadamente porque a ordem de inclusão dos arquivos no conf.d é alfanumérica da ordem de carregamento média 000 no nome do arquivo garantirá que seja carregado antes dos outros arquivos no diretório.
A instrução include também está usando uma variável no nome do arquivo. Isso pode alterar o arquivo que ele realmente carregará com base no valor na variável ENV_TYPE
e RUNMODE
variáveis.
Se a variável ENV_TYPE
valor é dev então o arquivo usado é:
/etc/httpd/conf.d/variables/weretail_domains_dev.vars
Se a variável ENV_TYPE
valor é estágio então o arquivo usado é:
/etc/httpd/conf.d/variables/weretail_domains_stage.vars
Se a variável RUNMODE
valor é visualização então o arquivo usado é:
/etc/httpd/conf.d/variables/weretail_domains_preview.vars
Quando esse arquivo for incluído, ele nos permitirá usar os nomes de variáveis que foram armazenados no .
Em nosso /etc/httpd/conf.d/available_vhosts/weretail.vhost
podemos trocar a sintaxe normal que funcionava apenas para o desenvolvimento:
VirtualHost *:80
ServerName dev.weretail.com
ServerAlias dev.weretail.net
Com uma sintaxe mais recente que usa o poder das variáveis para funcionar no desenvolvimento, estágio e produção:
VirtualHost *:80
ServerName ${WERETAIL_DOMAIN}
ServerAlias ${WERETAIL_ALT_DOMAIN}
Em nosso /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any
podemos trocar a sintaxe normal que funcionava apenas para o desenvolvimento:
"dev.weretail.com"
"dev.weretail.net"
Com uma sintaxe mais recente que usa o poder das variáveis para funcionar no desenvolvimento, estágio e produção:
"${WERETAIL_DOMAIN}"
"${WERETAIL_ALT_DOMAIN}"
Essas variáveis têm uma grande quantidade de reutilização para individualizar as configurações de execução sem precisar ter arquivos implantados diferentes por ambiente. Basicamente, modele seus arquivos de configuração com o uso de variáveis e inclua arquivos com base em variáveis.