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

Descrição

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:

  • Certifique-se de que qualquer item específico do ambiente não esteja em linha nas configurações, mas seja extraído para garantir que os arquivos de configuração do dev funcionem na produção com a mesma saída funcional.
  • Alterne recursos e altere os níveis de log de arquivos imutáveis que o AMS fornece e não permite que você altere.
  • Alterar as inclusões que devem ser usadas com base em variáveis como RUNMODE e ENV_TYPE
  • Corresponder os nomes DNS do DocumentRoot e do VirtualHost entre as configurações do apache e as configurações do módulo.

Resolução

  1. 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_SSLou 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

  2. 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
      
  3. 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.

Nesta página