Configure o apache para servir o conteúdo correto em vez de usar links simbólicos

1

Histórico:

Eu tenho muitos domínios e subdomínios apontados para o meu servidor via HTTPS (em IPs exclusivos). Há um redirecionamento na raiz para redirecioná-los para um diretório baseado na primeira parte do nome do domínio (o sistema legado não costumava usar subdomínios)

https://foo.example.com/ redireciona para https://foo.example.com/foo e https://customdomain.com/ redireciona para https://customdomain.com/customdomain

Tudo isso funciona bem e estou feliz com isso. Em última análise, esses URLs não podem mudar.

Veja o que estou procurando ajuda:

Atualmente, o DocumentRoot global usado por todos os domínios é um link simbólico para uma versão controlada, que pode ser diferente para cada domínio ( link servirá a versão 1.2.0):

foo -> /path/to/release/1.2.3
bar -> /path/to/release/1.2.3
zap -> /path/to/release/1.2.0

Isso significa que o link será veiculado no release / 1.2.3.

Isso tudo funciona APENAS BEM. No entanto, sinto que manter isso usando links simbólicos é confuso e é algo que o Apache poderia manipular para mim em um arquivo de configuração simples. E então eu posso sincronizar esse arquivo de configuração em vários servidores.

Alguém pode oferecer sugestões sobre como eu poderia fazer isso?

  • Eu certamente não quero redirecionar e veicular o link .
  • Não me importo de um arquivo de configuração que seja apenas centenas de < virtualhost > diretivas se é isso que é necessário .. como seria gerada por máquina e mantida.
por RickMeasham 16.01.2014 / 00:28

2 respostas

1

Primeiro, se você ainda não tem, precisa de uma definição de vhost por domínio (pode estar no mesmo arquivo, mas arquivos separados são melhores para clareza).

Então, a partir daí, você não pode realmente escapar da necessidade do symlink, mas uma maneira mais limpa de fazer isso seria apontar todo o seu vhost para um symlink chamado current que aponta para o seu /path/to/release/x.x.x.

Então, quando você implantar uma nova versão, basta alterar o symlink atual, isso mantém sua URL limpa e é mais fácil saber que você está apontando para a versão atual, em vez de uma pasta chamada foo.

O exemplo de Vhost seria:

<VirtualHost *:443>
    ServerName foo.example.com
    DocumentRoot /var/www/html/foo/current
    ....
</VirtualHost>

<VirtualHost *:443>
    ServerName bar.example.com
    DocumentRoot /var/www/html/bar/current
    ....
</VirtualHost>

Onde pontos atuais:

/ var / www / html / foo / atual - > /var/www/html/foo/release/x.x.x

/ var / www / html / bar / atual - > /var/www/html/bar/release/x.x.x

Espero que ajude.

    
por 16.01.2014 / 00:58
1

A maneira de fazer isso na sua configuração do Apache seria:

Alias /foo /path/to/release/1.2.3

Mas o nível de esforço necessário para trocar essa configuração (depois executar uma reinicialização elegante do serviço Apache) não é mais fácil do que trocar alguns links simbólicos, como Sven mencionou em seu comentário.

O que você realmente precisa aqui é uma ferramenta de gerenciamento de configuração como Puppet ou Chef - essas ferramentas podem gerenciar facilmente os links simbólicos ou os Alias es, e ter a mesma configuração aplicada em vários servidores com uma configuração simples e central. / p>     

por 16.01.2014 / 05:29

Tags