Como configurar e acessar versões locais e remotas do mesmo site / domínio?

0

Estou trabalhando no site de um cliente que está hospedado atualmente em um servidor remoto externo. Eu baixei uma cópia do site para o meu computador local, que está executando uma 'LAMP stack' configurada no Arch Linux, para usar como uma versão de desenvolvimento.

O site é construído com o WordPress, portanto, o domínio do site é armazenado no banco de dados e isso é usado sempre que os links são gerados no site. Portanto, para salvar a edição do banco de dados, configurei o site no Apache com um host virtual e configurei o nome de domínio do servidor para ser o mesmo que o do site "ao vivo", por exemplo, no meu arquivo 'vhosts.conf' ...

ServerName    live-domain-name.co.uk
ServerAlias   *.live-domain-name.co.uk


Eu também adicionei o domínio ao meu arquivo local 'hosts' como:

127.0.0.1    live-domain-name.co.uk


O que eu gostaria de poder fazer é acessar ambos sites do meu navegador, pelo menos para que, se eu tiver o Apache em execução, eu receba minha cópia local do site, mas se o Apache não for t correndo, então eu recebo a versão 'real' do site!


Eu adicionei 127.0.0.1 como a primeira entrada 'nameserver' no meu arquivo /etc/resolv.conf , o segundo sendo o IP do meu roteador de internet e também tenho um dos servidores DNS públicos do Goolge como o terceiro. No entanto, mesmo quando o Apache não está rodando, $ ping ... ainda mostra o IP do domínio como 127.0.0.1!


Eu estou supondo que eu preciso de algum tipo de resolvedor de DNS que irá verificar o meu localhost primeiro, mas se o site não for encontrado (ou seja, o Apache não está sendo executado), então ele voltará a usar um dos outros servidores DNS! - só que não tenho ideia sobre a instalação e configuração de um servidor DNS / encaminhador ...

Alguém pode me ajudar por favor?

    
por Chris 04.12.2013 / 22:53

2 respostas

2

Eu acho que o método sugerido por @piercedRichard (ou seja, excluir entrada de / etc / hosts quando o apache está desativado) é viável ...

mas também posso pensar em uma maneira distorcida (usando iptables) para rotear o endereço IP de live-domain-name.co.uk de volta para localhost. Acho que isso será muito mais robusto - porque a resolução do DNS será armazenada em cache e, além de consertar o / etc / hosts, você também precisará liberar os caches do DNS na camada do sistema operacional e em alguns navegadores (firefox, por exemplo). Alterações no iptables devem ser instantâneas ...

talvez algo como (redirecionar para local):

iptables -t nat -A OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

excluir regra (parar o redirecionamento):

iptables -t nat -D OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

Quanto a detectar se o apache está ativo ou não, coloque as regras do iptables em seu arquivo /etc/init.d/apache2 -
ou escreva um script que tente se conectar ao localhost: 80, se estiver bem, então crie a regra else delete rule ...

    
por 04.12.2013 / 23:37
0

A maioria dos sistemas operacionais será resolvida a partir do arquivo hosts antes de tentar encontrar um servidor DNS. Se você remover (ou comentar) essa linha de hosts , ela consultará o servidor DNS e descobrirá que é um IP remoto.

Você também pode ter que alterar o hostname , se estiver definido para o mesmo, pois hostname também pode ser usado para resolver IPs (pelo menos em alguns sistemas no Linux).

página man do hosts.conf - Veja mais informações sobre o order diretiva.

    
por 04.12.2013 / 23:07