Como posso configurar um host virtual no Apache?

1

Estou tentando criar um host virtual em Apache in Ubuntu (em uma máquina virtual), mas não consigo obtê-lo. Eu fiz um monte de configurações, mas qualquer um deles me deu qualquer resultado, então eu criei uma nova máquina virtual para fazer isso desde o início. Vou colocar aqui todo o processo passo a passo para que todos vocês possam seguir o que estou fazendo de errado.

O que eu tenho

  • VirtualBox
  • Ubuntu 14.04 (máquina virtual no VirtualBox)
  • Eu instalei o Apache no Ubuntu ( sudo apt-get install apache2 )

O que eu preciso

  • Quando eu escrevo o url ejemplo.es no meu navegador, o arquivo que eu criei na minha pasta VirtualHost será exibido e não a página que está no www.ejemplo.es (que não é meu).

  • Use o arquivo hosts na pasta /etc em vez da configuração do DNS.

O que eu tentei

  • Primeiro de tudo: altere o diretório raiz do meu servidor

Primeiro de tudo, o que eu preciso é fazer com que meu diretório raiz do meu servidor seja /var/www/extras , então criei este novo diretório em /var/www .

sudo mkdir /var/www/extras

e crie um index.html com algum texto.

Depois de criar o novo diretório, preciso alterar meu arquivo 000-default.conf para alterar a diretiva DocumentRoot .

sudo gedit /etc/apache2/sites-available/000-default.conf

e altere a diretiva DocumentRoot da seguinte forma:

DocumentRoot /var/www/extras

e depois disso eu reinicio o Apache para salvar minhas alterações:

sudo /etc/init.d/apache2 restart

e modifique o bloco Directory no arquivo apache2.conf

sudo gedit /etc/apache2/apache2.conf

de <Directory /var/www/html> a <Directory /var/www/extras> e reinicie Apache novamente.

  • Segundo passo: criar a pasta e o arquivo do host virtual que desejo criar

Dentro do diretório /var/www/extras , vou criar uma nova pasta ( ejemplo.es ), que será a pasta do meu host virtual.

sudo mkdir /var/www/extras/ejemplo.es

e dentro dele um arquivo index.html como eu criei para o diretório raiz do meu servidor com o texto "This is an example" .

Depois disso, se eu for ao navegador e escrever localhost/ejemplo.es , posso ver o conteúdo do arquivo que criei na etapa anterior. Mas o que eu quero é acessar o mesmo conteúdo, mas digitando ejemplo.es em vez de localhost/ejemplo.es .

  • Etapa final: configure o host virtual

Eu preciso criar um novo arquivo em /etc/apache2/sites-available com a configuração do meu host virtual.

sudo gedit /etc/apache2/sites-available/ejemplo.es.conf

com a seguinte configuração:

<VirtualHost 10.0.2.15:80>
    ServerAdmin [email protected]
    ServerName ejemplo.es
    ServerAlias www.ejemplo.es
    DocumentRoot /var/www/extras/ejemplo.es
</VirtualHost>

e no arquivo apache2.conf , alterarei IncludeOptional sites-enabled/*.conf para Include sites-enabled/*.conf . (Isso foi uma prova para ver se talvez meu Apache não incluiu esta pasta e poderia ser a posibilidade de que meu VirtualHost não funcionou para isso).

Agora tenho que ativar o VirtualHost que criei:

sudo a2ensite ejemplo.es

e reinicie o Apache para salvar as alterações que fiz:

sudo /etc/init.d/apache2 restart

Se eu listar o conteúdo da pasta /etc/apache2/sites-enabled , poderei ver que meu VirtualHost está ativo agora ( ls comando para esta pasta).

Para finalizar, adiciono uma nova linha no meu arquivo hosts ( sudo gedit /etc/hosts ):

10.0.2.15   ejemplo.es

agora o arquivo tem três linhas com IP's:

127.0.0.1    localhost
127.0.1.1    user
10.0.2.15    ejemplo.es

e algumas linhas abaixo começam com ff00... , mas acho que não são relevantes para o meu propósito.

E, finalmente, tenho que executar o seguinte comando para salvar minhas últimas alterações:

sudo /etc/init.d/networking restart

mas eu recebo a página padrão de www.ejemplo.es em vez do arquivo que eu coloquei na minha pasta VirtualHost .

Tenho certeza de que estou fazendo algo errado, mas não consigo descobrir onde. É a primeira vez que eu crio um VirtualHost e todos os tutoriais que eu vi tiveram esses passos, então acho que estou perdendo alguma coisa.

Espero que você possa seguir meus passos e perguntar se você tem alguma dúvida sobre a configuração que eu fiz.

Obrigado antecipadamente!

    
por Error404 25.02.2016 / 02:27

2 respostas

1

Eu gostaria de comentar a questão para mais informações, mas não tenho tido um ponto de reputação suficiente, por isso, tente responder a esta pergunta para que você nos dê um pouco mais de informações.

Eu fiz os mesmos passos que você listou acima na minha nova VM, e funciona bem.

Eu não sei exatamente como você testa o domínio acima, seja navegador em sua caixa (ubuntu-client) ou em seu host (que está executando o virtualbox).

Se você está tentando visitar o domínio no client-ubuntu, pode adicionar mais IP na tag virtualhost:

<VirtualHost ejemplo.es:80 127.0.1.100:80 192.168.1.100:80></VirtualHost>.

Aqui 127.0.1.100 e 192.168.1.100 são exemplos de IPs que apontam para ejemplo.es.

Se você estiver tentando acessar do seu host com o IP 10.0.x.x, talvez ele não esteja acessível. Especialmente se você não selecionou o tipo de rede correto para sua VM. Você pode fazer o ping do IP antes de verificar o trabalho do domínio local. No meu caso, eu seleciono a conexão de bridge (com NAT copiado), então minha VM pode agir como qualquer outro dispositivo físico na minha rede.

Outra coisa é, se você tem seu site que já está em serviço e deseja um ambiente local para desenvolvimento e teste, é melhor usar domínios diferentes (como: .local, .dev) em vez de usar o mesmo domínio.

    
por Brian Ng 28.02.2016 / 06:31
-1

Bem, tipo de claro, sem ver todas as configurações, mas poucas coisas que posso dizer

  1. Primeiro, verifique se o NamedVirtualHosting não está comentado no arquivo ports.conf

  2. altere as permissões apenas para ter certeza sobre /var/www/

    sudo chown -R www-data.www-data /var/www/*

  3. verifique se a sintaxe do link simbólico na pasta de sites está correta ou se o link simbólico está quebrado links quebrados mostra em vermelho a sintaxe é assim 000-default e o que vem a seguir é como 001-teste ou 002-guest verifique por

    ll /etc/apache2/sites-enabled/*

Verifique se a sintaxe do ejemplo.es.conf está correta

Parece com isso. Certifique-se de que o diretório seja mencionado

Espero que isso ajude boa sorte

    
por Shantanu Bedajna 28.02.2016 / 08:13