Layout básico do arquivo
<- Anterior: O que é "A Dispatcher"
Este documento explica o conjunto de arquivos de configuração padrão do AMS e a filosofia por trás desse padrão de configuração
Estrutura de pastas padrão do Enterprise Linux
No AMS, a instalação básica usa o Enterprise Linux como o sistema operacional básico. Ao instalar o Apache Webserver, ele tem um arquivo de instalação padrão definido. Estes são os arquivos padrão que são instalados por meio da instalação dos RPMs básicos fornecidos pelo repositório yum
/etc/httpd/
├── conf
│ ├── httpd.conf
│ └── magic
├── conf.d
│ ├── autoindex.conf
│ ├── README
│ ├── userdir.conf
│ └── welcome.conf
├── conf.modules.d
│ ├── 00-base.conf
│ ├── 00-dav.conf
│ ├── 00-lua.conf
│ ├── 00-mpm.conf
│ ├── 00-proxy.conf
│ ├── 00-systemd.conf
│ └── 01-cgi.conf
├── logs -> ../../var/log/httpd
├── modules -> ../../usr/lib64/httpd/modules
└── run -> /run/httpd
Ao seguir e honrar o design/a estrutura de instalação, obtemos os seguintes benefícios:
- Mais fácil oferecer suporte a um layout previsível
- Familiarizado automaticamente com qualquer pessoa que tenha trabalhado em instalações HTTPD do Enterprise Linux no passado
- Permite ciclos de patch totalmente compatíveis com o sistema operacional sem conflitos ou ajustes manuais
- Evita violações do SELinux de contextos de arquivo rotulados incorretamente
"Nota"
As imagens dos servidores Adobe Managed Services normalmente têm pequenas unidades raiz do sistema operacional. Colocamos nossos dados em um volume separado, que normalmente é montado em /mnt
Em seguida, usamos esse volume em vez dos padrões dos seguintes diretórios padrão
DocumentRoot
- Padrão:
/var/www/html
- AMS:
/mnt/var/www/html
Log Directory
- Padrão:
/var/log/httpd
- AMS:
/mnt/var/log/httpd
Lembre-se de que os diretórios antigos e novos são mapeados de volta ao ponto de montagem original para eliminar a confusão.
Usar um volume separado não é vital, mas é digno de nota
Complementos do AMS
O AMS complementa a instalação básica do Apache Web Server.
Raízes do documento
Raízes padrão do documento AMS:
- Autor:
/mnt/var/www/author/
- Publish:
/mnt/var/www/html/
- Manutenção de captura e verificação de integridade
/mnt/var/www/default/
Preparo e diretórios do VirtualHost ativados
Os diretórios a seguir permitem criar arquivos de configuração com uma área de preparação na qual você pode trabalhar e só ativar quando estiverem prontos.
/etc/httpd/conf.d/available_vhosts/
- Esta pasta hospeda todos os VirtualHost/arquivos chamados
.vhost
- Esta pasta hospeda todos os VirtualHost/arquivos chamados
/etc/httpd/conf.d/enabled_vhosts/
- Quando estiver pronto para usar os arquivos
.vhost
, você terá dentro da pastaavailable_vhosts
o symlink deles usando um caminho relativo para o diretórioenabled_vhosts
- Quando estiver pronto para usar os arquivos
Diretórios conf.d
adicionais
Há partes adicionais comuns nas configurações do Apache e criamos subdiretórios para permitir uma maneira limpa de separar esses arquivos e não ter todos os arquivos em um diretório
Substitui o Diretório
Este diretório pode conter todos os _rewrite.rules
arquivos criados por você que contêm a sintaxe típica RewriteRulesyntax que envolve o módulo mod_rewrite dos servidores Web Apache
/etc/httpd/conf.d/rewrites/
Diretório de listas de permissões
Este diretório pode conter todos os _whitelist.rules
arquivos que você cria que contêm sua IP Allow
ou Require IP
sintaxe típica que envolve os controles de acesso dos servidores Web Apache
/etc/httpd/conf.d/whitelists/
Diretório de variáveis
Este diretório pode conter todos os arquivos .vars
criados por você, que contêm variáveis que podem ser consumidas em seus arquivos de configuração
/etc/httpd/conf.d/variables/
Diretório de configuração específico do módulo Dispatcher
O Apache Web Server é muito extensível e, quando um módulo tem muitos arquivos de configuração, é recomendável criar seu próprio diretório de configuração no diretório base de instalação, em vez de desorganizar o padrão.
Seguimos as práticas recomendadas e criamos a nossa própria
Diretório do arquivo de configuração do módulo
/etc/httpd/conf.dispatcher.d/
Preparo e Farm Habilitado
Os diretórios a seguir permitem criar arquivos de configuração com uma área de preparação na qual você pode trabalhar e só ativar quando estiverem prontos.
/etc/httpd/conf.dispatcher.d/available_farms/
- Esta pasta hospeda todos os arquivos do
/myfarm {
chamados_farm.any
- Esta pasta hospeda todos os arquivos do
/etc/httpd/conf.dispatcher.d/enabled_farms/
- Quando estiver pronto para usar o arquivo farm, você terá dentro da pasta available_farms os vinculando através de um caminho relativo para o diretório enabled_farms
Diretórios conf.dispatcher.d
adicionais
Há partes adicionais que são subseções das configurações de arquivo do farm do Dispatcher e criamos subdiretórios para permitir uma maneira limpa de separar esses arquivos e não ter todos os arquivos em um diretório
Diretório de cache
Esse diretório contém todos os arquivos _cache.any
, _invalidate.any
criados por você, que contêm suas regras sobre como você deseja que o módulo lide com os elementos em cache provenientes do AEM, bem como a sintaxe de regras de invalidação. Mais detalhes sobre esta seção estão aqui aqui
/etc/httpd/conf.dispatcher.d/cache/
Diretório de Cabeçalhos do Cliente
Esse diretório pode conter todos os _clientheaders.any
arquivos criados por você que contenham listas de Cabeçalhos do cliente que você deseja passar para o AEM quando entrar uma solicitação. Mais detalhes sobre esta seção estão aqui
/etc/httpd/conf.dispatcher.d/clientheaders/
Diretório de filtros
Este diretório pode conter todos os _filters.any
arquivos que você criar e que contenham todas as suas regras de filtro para bloquear ou permitir o tráfego pelo Dispatcher para alcançar AEM
/etc/httpd/conf.dispatcher.d/filters/
Diretório de renderizações
Este diretório pode conter todos os _renders.any
arquivos criados por você que contenham os detalhes de conectividade para cada servidor back-end do qual o Dispatcher consumirá conteúdo
/etc/httpd/conf.dispatcher.d/renders/
Diretório Vhosts
Este diretório pode conter todos os arquivos _vhosts.any
criados por você que contenham uma lista dos nomes de domínio e caminhos para corresponder a um farm específico para um servidor back-end específico
/etc/httpd/conf.dispatcher.d/vhosts/
Estrutura completa da pasta
O AMS estruturou cada um dos arquivos com extensões de arquivo personalizadas e com a intenção de evitar problemas/conflitos de namespace e qualquer confusão.
Este é um exemplo de um conjunto de arquivos padrão de uma implantação padrão do AMS:
/etc/httpd/
├── conf
│ ├── httpd.conf
│ └── magic
├── conf.d
│ ├── 000_init_ootb_vars.conf
│ ├── 001_init_ams_vars.conf
│ ├── README
│ ├── autoindex.conf
│ ├── available_vhosts
│ │ ├── 000_unhealthy_author.vhost
│ │ ├── 000_unhealthy_publish.vhost
│ │ ├── aem_author.vhost
│ │ ├── aem_flush.vhost
│ │ ├── aem_flush_author.vhost
│ │ ├── aem_health.vhost
│ │ ├── aem_publish.vhost
│ │ └── ams_lc.vhost
│ ├── dispatcher_vhost.conf
│ ├── enabled_vhosts
│ │ ├── aem_author.vhost -> ../available_vhosts/aem_author.vhost
│ │ ├── aem_flush.vhost -> ../available_vhosts/aem_flush.vhost
│ │ ├── aem_health.vhost -> /etc/httpd/conf.d/available_vhosts/aem_health.vhost
│ │ └── aem_publish.vhost -> ../available_vhosts/aem_publish.vhost
│ ├── logformat.conf
│ ├── mimetypes3d.conf
│ ├── remoteip.conf
│ ├── rewrites
│ │ ├── base_rewrite.rules
│ │ └── xforwarded_forcessl_rewrite.rules
│ ├── security.conf
│ ├── userdir.conf
│ ├── variables
│ │ ├── ams_default.vars
│ │ └── ootb.vars
│ ├── welcome.conf
│ └── whitelists
│ └── 000_base_whitelist.rules
├── conf.dispatcher.d
│ ├── available_farms
│ │ ├── 000_ams_catchall_farm.any
│ │ ├── 001_ams_author_flush_farm.any
│ │ ├── 001_ams_publish_flush_farm.any
│ │ ├── 002_ams_author_farm.any
│ │ ├── 002_ams_lc_farm.any
│ │ └── 002_ams_publish_farm.any
│ ├── cache
│ │ ├── ams_author_cache.any
│ │ ├── ams_author_invalidate_allowed.any
│ │ ├── ams_publish_cache.any
│ │ └── ams_publish_invalidate_allowed.any
│ ├── clientheaders
│ │ ├── ams_author_clientheaders.any
│ │ ├── ams_common_clientheaders.any
│ │ ├── ams_lc_clientheaders.any
│ │ └── ams_publish_clientheaders.any
│ ├── dispatcher.any
│ ├── enabled_farms
│ │ ├── 000_ams_catchall_farm.any -> ../available_farms/000_ams_catchall_farm.any
│ │ ├── 001_ams_author_flush_farm.any -> ../available_farms/001_ams_author_flush_farm.any
│ │ ├── 001_ams_publish_flush_farm.any -> ../available_farms/001_ams_publish_flush_farm.any
│ │ ├── 002_ams_author_farm.any -> ../available_farms/002_ams_author_farm.any
│ │ └── 002_ams_publish_farm.any -> ../available_farms/002_ams_publish_farm.any
│ ├── filters
│ │ ├── ams_author_filters.any
│ │ ├── ams_lc_filters.any
│ │ └── ams_publish_filters.any
│ ├── renders
│ │ ├── ams_author_renders.any
│ │ ├── ams_lc_renders.any
│ │ └── ams_publish_renders.any
│ └── vhosts
│ ├── ams_author_vhosts.any
│ ├── ams_lc_vhosts.any
│ └── ams_publish_vhosts.any
├── conf.modules.d
│ ├── 00-base.conf
│ ├── 00-dav.conf
│ ├── 00-lua.conf
│ ├── 00-mpm.conf
│ ├── 00-mpm.conf.old
│ ├── 00-proxy.conf
│ ├── 00-systemd.conf
│ ├── 01-cgi.conf
│ └── 02-dispatcher.conf
├── logs -> ../../var/log/httpd
├── modules -> ../../usr/lib64/httpd/modules
└── run -> /run/httpd
Mantendo-o ideal
O Enterprise Linux tem ciclos de patch para o Apache Webserver Package (httpd).
Os arquivos padrão menos instalados que você altera são melhores, por razões que, se houver correções de segurança ou melhorias de configuração corrigidas, são aplicadas por meio do comando RPM / Yum, elas não aplicarão as correções sobre um arquivo alterado.
Em vez disso, ele cria um arquivo .rpmnew
ao lado do original. Isso significa que você perderá algumas alterações desejadas e criará mais lixo em suas pastas de configuração.
Ou seja, o RPM durante a instalação da atualização observará httpd.conf
, se estiver no estado unaltered
, ele substituirá o arquivo e você obterá as atualizações vitais. Se o httpd.conf
era altered
, então não substituirá o arquivo e, em vez disso, criará um arquivo de referência chamado httpd.conf.rpmnew
, e as muitas correções desejadas estarão nesse arquivo que não se aplica na inicialização do serviço.
O Enterprise Linux foi configurado adequadamente para lidar com esse caso de uso de maneira melhor. Elas fornecem áreas em que você pode estender ou substituir os padrões definidos para você. Dentro da instalação base do httpd você encontrará o arquivo /etc/httpd/conf/httpd.conf
, que contém a sintaxe como:
Include conf.modules.d/.conf
IncludeOptional conf.d/.conf
A ideia é que o Apache deseje estender os módulos e as configurações ao adicionar novos arquivos aos diretórios /etc/httpd/conf.d/
e /etc/httpd/conf.modules.d/
com uma extensão de arquivo de .conf
Como exemplo perfeito ao adicionar o módulo Dispatcher ao Apache, você criaria um arquivo do módulo .so
em /etc/httpd/modules/
e o incluiria adicionando um arquivo em /etc/httpd/conf.modules.d/02-dispatcher.conf
com o conteúdo para carregar o arquivo do módulo .so
LoadModule dispatcher_module modules/mod_dispatcher.so
Agora consumimos nosso módulo em nosso arquivo /etc/httpd/conf.d/dispatcher_vhost.conf
, que inicializa nosso módulo e carrega o arquivo de configuração inicial específico do módulo
<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d/dispatcher.any
...SNIP...
</IfModule>
Novamente, você observará que adicionamos arquivos e módulos, mas não alteramos nenhum arquivo original. Isso nos dá a funcionalidade desejada e nos protege contra a falta de correções de patches desejadas, além de manter o mais alto nível de compatibilidade com cada atualização do pacote.