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

Este documento explicará como é possível aproveitar a força 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, desde a versão 4.1.9, o módulo do dispatcher também!

Podemos aproveitar isso para fazer várias coisas úteis, como:

  • Assegurar que tudo que for específico do ambiente não esteja alinhado nas configurações, mas seja extraído para garantir que os arquivos de configuração de desenvolvimento funcionem na produção com o mesmo resultado funcional.
  • Alternar os recursos e alterar os níveis de log dos arquivos imutáveis que o AMS fornece e não permite que você altere.
  • Alterar as inclusões que deve ser usadas com base em variáveis como RUNMODE e ENV_TYPE
  • Fazer a correspondência dos nomes DNS do DocumentRoot e do VirtualHost entre as configurações do apache e as configurações do módulo.

Uso das variáveis de linha de base

Como os arquivos de linha de base do AMS são somente leitura e imutáveis, existem recursos que podem ser desativados e desativados, além de serem configurados ao editar as variáveis que consomem.

Variáveis de linha de base configuráveis e prontas para uso

Todas as variáveis prontas para uso devem ser definidas em /etc/httpd/conf.d/variables/ootb.vars. Verifique também se há um valor padrão definido para todas as variáveis da linha de base.Após os arquivos padrão serem carregados, os outros arquivos .vars substituirão os valores definidos no arquivo ootb.vars.

Qualquer variável de ootb.vars que você desejar alterar pode ser ajustada no arquivo editável /etc/httpd/conf.d/variables/ams_default.vars

Veja alguns exemplos de variáveis:

Define DISP_LOG_LEVEL info 
Define AUTHOR_WHITELIST_ENABLED 0 
Define PUBLISH_WHITELIST_ENABLED 0 
Define AUTHOR_FORCE_SSL 1 
Define PUBLISH_FORCE_SSL 1

Exemplo 1 - Forçar SSL

As variáveis mostradas acima AUTHOR_FORCE_SSL ou PUBLISH_FORCE_SSL podem ser definidas como 1 para ativar as 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:

</VirtualHost *:80> 
 <IfModule mod_rewrite.c> 
  ReWriteEngine on 
  <If &quot;${PUBLISH_FORCE_SSL} == 1&quot;> 
   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 definida como 1 permite que o arquivo seja usado ou não

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 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 log do dispatcher, basta atualizar a variável ams_default.vars DISP_LOG_LEVEL para o nível que você gostaria.

O exemplo de Valores pode ser um número inteiro ou a palavra:

Nível de log

Valor inteiro

Valor da palavra

Traço

4

traçar

Depuração

3

depuração

Informações

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 ativar as 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 ativação desse recurso precisa ser combinada com a criação de um arquivo de regras da lista de permissões, bem como para sua inclusão.

Estes são alguns exemplos de sintaxe de como a variável permite 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 &quot;${AUTHOR_WHITELIST_ENABLED} == 1&quot;> 
   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 força a restrição de IP, mas alternar a variável permite que ela seja incluída no sample.vhost

Exemplo 4 - Nível do arquivo stat

A variável DEFAULT_STAT_LEVEL pode ser configurada com um número que permita que cada farm que use essa variável saiba quantos diretórios ela tem que criar.Arquivos stat ao limpar o cache

ams_defaults.vars:

Define DEFAULT_STAT_LEVEL 7

Cada farm que usa essa variável agora definirá seu nível de arquivo stat como 7.Felizmente, essa configuração global pode ser facilmente aplicada em várias farms.Esta é uma seção de exemplo de um arquivo de farm que usa a variável

002_ams_publish_farm.any:

/publishfarm { 
	/cache {
		/statfileslevel &quot;${DEFAULT_STAT_LEVEL}&quot;
	}
}

Onde as variáveis devem ser colocadas

Argumentos de inicialização do servidor Web

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

Este arquivo possui variáveis predefinidas como mostrado aqui:

AUTHOR_IP=&quot;10.43.0.59&quot; 
AUTHOR_PORT=&quot;4502&quot; 
AUTHOR_DOCROOT='/mnt/var/www/author' 
PUBLISH_IP=&quot;10.43.0.20&quot; 
PUBLISH_PORT=&quot;4503&quot; 
PUBLISH_DOCROOT='/mnt/var/www/html' 
ENV_TYPE='dev' 
RUNMODE='dev'

Não é algo que você possa mudar, mas pode ser aproveitado nos 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 selecionar as alterações.  Isso significa que uma recarga não é suficiente, mas uma reinicialização é necessária

Arquivos de variáveis (.vars)

Variáveis personalizadas fornecidas pelo código devem estar ativas nos arquivos .vars no diretório /etc/httpd/conf.d/variables/

Esses arquivos podem ter as variáveis personalizadas desejadas e alguns exemplos de sintaxe podem ser vistos nos arquivos de amostra a seguir

/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

Ao criar seus próprios arquivos de variáveis, nomeie-os de acordo com o 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.

Uso de variáveis

Agora que você definiu as variáveis nos arquivos de variáveis, vai querer saber usá-las adequadamente em outros arquivos de configuração.

Usaremos o exemplo dos 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 é 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 é recebido, ele é recebido antes porque a ordem de inclusão dos arquivos no conf.d é alfanumérica, a média da ordem de carregamento 000 no nome do arquivo garante que ele seja carregado antes dos outros arquivos no diretório.

A instrução de inclusão também está usando uma variável no nome do arquivo.  Isso pode alterar qual arquivo ele realmente carregará com base em qual valor está nas variáveis ENV_TYPE e RUNMODE.

Se o valor ENV_TYPE é de desenvolvimento, o arquivo usado é:

/etc/httpd/conf.d/variables/weretail_domains_dev.vars

Se o valor ENV_TYPE é de preparo, o arquivo usado é:

/etc/httpd/conf.d/variables/weretail_domains_stage.vars

Se o valor RUNMODE é de pré-visualização, o arquivo usado é:

/etc/httpd/conf.d/variables/weretail_domains_preview.vars

Quando esse arquivo é incluído, isso permite usar os nomes de variáveis que foram armazenados internamente.

No arquivo /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 a força das variáveis para trabalhar no desenvolvimento, preparo e produção:

<VirtualHost *:80> 
 ServerName ${WERETAIL_DOMAIN} 
 ServerAlias ${WERETAIL_ALT_DOMAIN}

No arquivo /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any, podemos trocar a sintaxe normal que funcionava apenas para o desenvolvimento:

&quot;dev.weretail.com&quot; 
&quot;dev.weretail.net&quot;

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

&quot;${WERETAIL_DOMAIN}&quot; 
&quot;${WERETAIL_ALT_DOMAIN}&quot;

Essas variáveis têm uma enorme quantidade de reutilização para individualizar as configurações de execução, sem a necessidade de implantar diferentes arquivos de acordo com o ambiente.  Basicamente, modele os arquivos de configuração com o uso de variáveis e inclua os arquivos com base nas variáveis.

Próximo ➡ Liberação

 Adobe

Receba ajuda com mais rapidez e facilidade

Novo usuário?

Adobe MAX 2024

Adobe MAX:
a conferência da criatividade

14 a 16 de outubro, Miami Beach e online

Adobe MAX

A conferência da criatividade

14 a 16 de outubro, Miami Beach e online

Adobe MAX 2024

Adobe MAX:
a conferência da criatividade

14 a 16 de outubro, Miami Beach e online

Adobe MAX

A conferência da criatividade

14 a 16 de outubro, Miami Beach e online