É possível configurar vários domínios locais no localhost no Ubuntu 14.04?

2

Eu preciso de vários domínios exclusivos, todos vinculados ao endereço IP local do meu computador. Isso é para fins de teste. Eu quero ser capaz de ter diferentes domínios locais ligados a diferentes arquivos html no meu computador. Por exemplo, xxx.local e yyy.local serão ambos distintos, mas apenas acessíveis a partir do meu computador.

O que eu tentei: configurar os sites habilitados para o apache2 e os sites disponíveis para que os arquivos .xx do xxx.local e do yyy.local sejam vinculados a diferentes DocumentRoots. No entanto, isso não é resolvido e, quando eu os vinculo ao endereço IP local do meu computador, eles apenas se vinculam a arquivos HTML já vinculados ao host local do meu computador. Não para os arquivos html especificados pelo DocumentRoot nos arquivos .conf.

    
por Pearu 16.03.2016 / 00:30

2 respostas

3

A maior parte do trabalho é feita no arquivo de configuração no diretório /etc/apache2/sites-enabled/ , em um arquivo chamado algo como 000-default.conf. Esses arquivos permitirão que você tenha vários domínios virtuais, como www.example.dev ou example.local, etc. Você os configura junto com seus diretórios nesse arquivo e insere vários sites em /etc/hosts para corresponder. Todos os sites têm o mesmo endereço IP local, mas o nome direciona para o host virtual correto.

Neste arquivo, você precisa clonar as configurações padrão quantas vezes precisar, com algo assim:

Conteúdos originais

<VirtualHost *:80>
   . . .
</VirtualHost>

Entradas adicionais de host virtual

<VirtualHost *:80>
    <Directory  /var/www/html/site1>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
    DocumentRoot  /var/www/html/site1/ 
    ServerName site1.local
    ServerAlias www.site1.local
</VirtualHost>

<VirtualHost *:80>
    <Directory  /var/www/html/site2>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
    DocumentRoot  /var/www/html/site2/ 
    ServerName site2.local
    ServerAlias www.site2.local
</VirtualHost>

. . .

Para que a mágica de reescrita funcione, você também precisa verificar se o mecanismo de reescrita está ativado. Isto é feito criando um link simbólico em mods-enabled para um módulo em mods-available. Se você cd para /etc/apache2/mods-enabled , então digite ln -s ../mods-available/rewrite.load , ele habilitará o mecanismo de reescrita.

Em seguida, em /etc/hosts/ , você tem entradas correspondentes, como:

127.0.0.1  site1.local
127.0.0.1  site2.local

Isso deve levá-lo até eu completar isso, ou você tem perguntas para eu responder.

Respostas às perguntas nos comentários 1

Um problema é a diretiva "DocumentRoot": o diretório especificado deve ser simplesmente a raiz do documento do site virtual, que provavelmente não é " /var/www/arcadr.local/html " conforme especificado. Normalmente, o diretório do site estaria no final. "arcadr.local" é um nome arbitrário, mas corresponder ao site é provavelmente o melhor. Por isso, provavelmente deveria ser "/var/www/html/arcadr.local/'".

Em relação ao erro ln, se eu tivesse tido mais tempo, eu teria explicado que o resultado final é que você precisa de um link simbólico chamado "rewrite.load" no diretório mods-enabled que vincula ao arquivo real em o diretório mods-available . Então, evidentemente, você já tinha, e realmente não precisava fazer isso de novo, mas contanto que estivesse lá, deveria funcionar.

Tente a única alteração e tente entender o que ela está fazendo. Na verdade, é bastante compreensível e, quando você começa a entender, você aprende mais.

A propósito, a diretiva "alias" não é necessária, apenas adicionei isso para ilustrar como você poderia fazer isso se você quiser.

Respostas às perguntas nos comentários 2

O arquivo html padrão é simplesmente um dos vários hosts virtuais especificados no arquivo 000-default.conf. Note que originalmente deixei a extensão ".conf" do arquivo. Você achou esse arquivo correto? Deve estar em " sites-enabled " e não em " sites-available ". O mesmo que para os mods, você pode ter vários sites disponíveis , mas você precisa ter um ativado , e o padrão é " 000-default.conf " (a menos que tenha mudado desde Eu configurei isso.

Você diz que "arcadr.local apenas me redireciona para outro site .local conectado ao meu localhost". Certifique-se de ter este arquivo de configuração configurado corretamente. Deve ter uma série de blocos, como html:

<VirtualHost *:80>
   . . .
</VirtualHost>

Cada host virtual deve iniciar e terminar com essas diretivas, e você não pode ter um incorporado em outro.

Você pode encontrar uma boa documentação e exemplos no site apache.org. Foi aqui que aprendi a configurar os arquivos. Meu conselho é mantê-lo simples, e se você adicionar algo que você não entende, faça um passo de cada vez e remova qualquer coisa que não funcione. Veja alguns exemplos: Exemplos do VirtualHost

Alguns ponteiros adicionais

Sempre que você fizer alterações no arquivo de configuração em /etc/apache2/sites-enabled/000-default.conf , será necessário reiniciar o servidor Apache. Eu uso o comando sudo /etc/init.d/apache2 restart para fazer isso. Editar : Gabriel postou um comando melhor para isso:

sudo service apache2 restart

Mas ambos os comandos funcionarão, pelo menos por enquanto.

Essa mesma técnica funciona para servidores DNS dinâmicos, como noip.com, dyndns etc. Por exemplo, acabei de criar três sites de amostra no meu sistema inicial. Se meu computador estiver ligado, você pode tentar ver. Se você verificar, verá que todos os três sites têm exatamente o mesmo endereço IP, mas vão para sites virtuais diferentes (variações do padrão, que você pode ver em leftcoast.noip.us

http://site1.leftcoast.noip.us/
http://site2.leftcoast.noip.us/
http://site3.leftcoast.noip.us/
    
por Marty Fried 16.03.2016 / 04:32
1

Existem dois passos que você precisa seguir para fazer isso.

Primeiro, indique ao seu computador que você quer que ele procure por xxx.local e yyy.local em 127.0.0.1, o que geralmente significa localhost ou seu computador.

Isso é feito editando seu arquivo /etc/hosts .

Em seguida, você precisa configurar seu servidor da Web para responder de maneira diferente, de acordo com o qual o serverName está sendo solicitado, o que é feito com os hosts virtuais do apache.

A resposta de Marty é bem completa em relação a esse assunto. E não se esqueça de sudo service apache2 restart para recarregar suas configurações.

Além disso, você pode colar as configurações dos seus hosts virtuais?

    
por Gabriel Vilches Alves 16.03.2016 / 20:35