Uso e noções básicas sobre variáveis

Saiba como aproveitar o potencial das variáveis no servidor Web Apache e nos arquivos de configuração do módulo Dispatcher.

Descrição description

Ambiente

Adobe Experience Manager (AEM)

Problema

Este documento explicará como é possível aproveitar a força das variáveis no Apache Web Server e nos arquivos de configuração do módulo Dispatcher.

Variáveis

O Apache é compatível com as variáveis e versões 4.1.9 em diante do módulo do Dispatcher. Podemos aproveitá-los para executar o seguinte:

  • Verifique se tudo que é específico do ambiente não está em linha nas configurações, mas extraído para garantir que os arquivos de configuração do desenvolvimento funcionem em produção com a mesma saída funcional.
  • Ative os recursos e altere os níveis de log de arquivos imutáveis que o AMS fornece e não permitirá alterações.
  • Alterar as inclusões a serem usadas com base em variáveis como RUNMODE e ENV_TYPE.
  • Faça a correspondência dos nomes DNS DocumentRoot e VirtualHost entre as configurações do Apache e do módulo.

Resolução resolution

  1. Usando Variáveis de Linha de Base
    Devido ao fato de que os arquivos de linha de base do AMS são somente leitura e imutáveis, há recursos que podem ser desativados e ativados, além de serem configurados ao editar as variáveis que consomem.

    Variáveis de Linha de Base

    Aqui está uma amostra do conteúdo do arquivo /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
    

    Exemplo 1 - Forçar SSL

    As variáveis mostradas acima AUTHOR_FORCE_SSL ou PUBLISH_FORCE_SSL podem ser definidas como 1 para engajar em regras de regravação que forçam o redirecionamento dos usuários finais para https, ao entrarem na solicitação http.

    Esta é a sintaxe do arquivo de configuração que permite que essa alternância funcione:

    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>
    

    Como você pode ver, as regras de regravação incluem o que tem o código para redirecionar o navegador dos usuários finais, mas a variável definida como 1 é o que permite ou não que o arquivo seja usado.

    Exemplo 2 - Nível de Log

    As variáveis DISP_LOG_LEVEL podem ser usadas 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:

    code language-none
    <IfModule disp_apache2.c>
    
      DispatcherLog    logs/dispatcher.log
    
      DispatcherLogLevel ${DISP_LOG_LEVEL}
    
    </IfModule>
    

    Se precisar aumentar o nível de log do Dispatcher, basta atualizar a variável ams_default.vars DISP_LOG_LEVEL para o nível desejado.

    Os valores de exemplo podem ser um número inteiro ou a palavra:

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Nível de registro Valor inteiro Valor do Word
    Trace 4 trace
    Depuração 3 depurar
    Info 2 informações
    Aviso 1 avisar
    Erro 0 erro

    Exemplo 3 - Listas de permissões

    As variáveis AUTHOR_WHITELIST_ENABLED e PUBLISH_WHITELIST_ENABLED podem ser definidas como 1 para engajar regras de regravação que incluam regras para permitir ou proibir o tráfego de usuário final com base no endereço IP. A alternância deste recurso ON precisa ser combinada com a criação de um arquivo de regras de lista de permissões para que ele seja incluído.

    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:

    exemplo.vhost:

    code language-none
    <VirtualHost *:80>
    
      <Directory />
    
        <If "${AUTHOR_WHITELIST_ENABLED} == 1">
    
            Include /etc/httpd/conf.d/whitelists/*_whitelist.rules
    
        </If>
    
      </Directory>
    
    </VirtualHost>
    

    exemplo_lista_de_permissões.regras:

    code language-none
    <RequireAny>
    
      Require ip 10.43.0.10/24
    
    </RequireAny>
    

    Como você pode ver, o sample_whitelist.rules força a restrição de IP, mas alternar a variável permite que ela seja incluída no sample.vhost

  2. Onde colocar as Variáveis?
    Argumentos de Inicialização do Servidor Web

    O AMS colocará variáveis globais nos argumentos de inicialização do processo apache dentro do arquivo /etc/sysconfig/httpd

    Esse arquivo tem variáveis predefinidas, como mostrado aqui:

    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'
    

    Isso não é algo que você pode alterar, mas é útil para aproveitar em seus arquivos de configuração.

    Observação - Devido ao fato de que este arquivo só é incluído quando o serviço é iniciado. É necessário reiniciar o serviço para pegar 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 seu código devem residir em arquivos .vars dentro do diretório /etc/httpd/conf.d/variables/

    Esses arquivos podem ter as variáveis personalizadas desejadas. Estes são alguns exemplos de sintaxe para os seguintes arquivos de amostra:

    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 aqui. 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/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
    
  3. Usando Variáveis
    Agora que definiu as variáveis nos arquivos de variáveis, você desejará saber como usá-las corretamente dentro dos outros arquivos de configuração.

    Usaremos os arquivos .vars de exemplo 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

    code language-none
    Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars
    Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars
    

    Sabemos que quando o serviço httpd é inicializado, ele obtém 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, pois a ordem de inclusão dos arquivos em conf.d é alfanumérica e a ordem de carregamento significa 000 no nome do arquivo, o que garantirá que ele 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 qual arquivo ele realmente carregará com base no valor das variáveis ENV_TYPE e RUNMODE.

    Se o valor de ENV_TYPE for dev, o arquivo usado será:

    /etc/httpd/conf.d/variables/sample-domain_domains_dev.vars

    Se o valor ENV_TYPE for estágio, o arquivo usado será:

    /etc/httpd/conf.d/variables/sample-domain_domains_stage.vars

    Se o valor RUNMODE for visualização, o arquivo usado será:

    /etc/httpd/conf.d/variables/sample-domain_domains_preview.vars

    Quando esse arquivo for incluído, ele nos permitirá usar os nomes das variáveis que foram armazenadas no.

    Em nosso arquivo /etc/httpd/conf.d/available_vhosts/sample-domain.vhost, podemos trocar a sintaxe normal que funcionava apenas para o desenvolvimento:

    code language-none
    <VirtualHost *:80>
    
      ServerName    dev.sample-domain.com
    
      ServerAlias    dev.sample-domain.net
    

    Com uma sintaxe mais recente que usa a força das variáveis para trabalhar no desenvolvimento, preparo e produção:

    code language-none
    <VirtualHost *:80>
    
      ServerName    ${SAMPLE_DOMAIN}
    
      ServerAlias    ${SAMPLE_ALT_DOMAIN}
    

    Em nosso arquivo /etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any, podemos trocar a sintaxe normal que funcionava apenas para o desenvolvimento:

    code language-none
    "dev.sample-domain.com"
    "dev.sample-domain.net"
    

    Com uma sintaxe mais recente que usa a força das variáveis para trabalhar no desenvolvimento, preparo e produção:

    code language-none
    "${SAMPLE_DOMAIN}"
    "${SAMPLE_ALT_DOMAIN}"
    

    Essas variáveis têm uma enorme quantidade de reutilização para individualizar as configurações em execução sem precisar ter arquivos implantados diferentes por ambiente. Você essencialmente modela seus arquivos de configuração com o uso de variáveis e inclui arquivos com base em variáveis.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f