Como configurar o Apache2 em diferentes ambientes de desenvolvimento local para usar o mesmo nome de host artificial?

1

Eu tenho dois ambientes de desenvolvimento: PC no trabalho (env1), laptop em casa (env2). Ambas as máquinas rodam o Ubuntu 15.10 com o Apache 2.4.12. Uma vez terminado, o projeto deve ser implantado em um servidor web público (env3). Eu uso o Git para controle de versão e o Bitbucket para gerenciamento distribuído de repositórios.

Meu projeto é um site com WordPress. Portanto, adiciono o diretório raiz do WordPress, alguns diretórios de origem adicionais e o arquivo SQL de despejo de banco de dados Mysql mais recente para o repositório de desenvolvimento, no qual estou trabalhando atualmente. Se eu puxar e verificar as atualizações de ramificação mais recentes no outro ambiente, também executarei o arquivo de despejo de banco de dados no banco de dados local. Assim, os ambientes de desenvolvimento permanecem consistentes todas as vezes, incluindo todo o conteúdo e as alterações de configuração feitas no WordPress via backend de administração.

No entanto, os nomes dos servidores permanecem diferentes. WP (e também assumo outros aplicativos da web) tem definições de configuração como hostname , que são armazenadas no banco de dados, mas na verdade são diferentes em cada um dos ambientes. Env1 pode operar em um IP privado, digamos 192.168.xxx.yy, enquanto env2 pode não estar conectado a uma LAN e, portanto, ouvir somente localhost / 127.0.0.1 e env3 precisará do nome oficial do host, digamos mydomain.com.

A minha pergunta é, como posso configurar os servidores web Apache em env1 e env2, que eles usam algum nome de host artificial, digamos localdevname para os respectivos hosts virtuais? Então, eu poderia definir a configuração do WP hostname = localdevname:91 e chamar localdevname: 91 em env1, que resolve 192.168.xxx.yy: 91, enquanto localdevname: 91, chamado em env2, resolverá para localhost: 91?

Encontrei uma pergunta semelhante aqui . Mas a única resposta não resolve meu problema. Além disso, eu brinquei com diretivas ServerName, ServerAlias, VirtualHostName sem sucesso.

    
por Bunjip 25.01.2016 / 16:38

1 resposta

0

Minha recomendação seria criar um arquivo /etc/apache2/conf-available/network.conf diferente para cada ambiente (e a2enconf ). Esses arquivos podem ter esta aparência:

/etc/apache2/conf-available/network.conf no host env1

<VirtualHost 192.168.1.1:91>
    ServerName localdevname
    SetEnv environment env1
    SetEnv dbserver 192.168.1.1
    Include /etc/apache2/sites-available/wordpress-project.conf
</VirtualHost>

/etc/apache2/conf-available/network.conf no host env2

<VirtualHost 127.0.0.1:91>
    ServerName localdevname
    SetEnv environment env2
    SetEnv dbserver 127.0.0.1
    Include /etc/apache2/sites-available/wordpress-project.conf
</VirtualHost>

/etc/apache2/conf-available/network.conf no host de produção

<VirtualHost 11.22.33.44:80>
    ServerName mydomain.com
    SetEnv environment prod
    SetEnv dbserver mysql-prod.mydomain.com
    Include /etc/apache2/sites-available/wordpress-project.conf
</VirtualHost>

Seus arquivos de configuração wordpress-project.conf e WordPress podem ser idênticos em todos os hosts. Eles podem usar variáveis de ambiente para variar seu comportamento.

Além disso, você pode encontrar mod_macro para ser útil.

Você precisará configurar o /etc/hosts e / ou a configuração do DNS local para que localdevname resolva da maneira desejada.

    
por 25.01.2016 / 20:31