Apache2 - Host virtual - erro 404 não encontrado

1

Acabou de instalar o Apache2 em uma caixa de desenvolvimento, não acessível pela Internet. Após a instalação, posso abrir um navegador do meu cliente (MAC) para o endereço IP e exibir a "Página padrão do Apache2 Ubuntu" padrão.

Estou tentando configurar um host virtual. Encontrou muitas referências, mas parece que isso não funciona.

No diretório / etc / apache2 / sites-available eu criei um "audio-site.conf" que tem o seguinte

 ServerAdmin webmaster @ localhost     DocumentRoot / home / jason / web

    <Directory />
              Options FollowSymLinks
              AllowOverride All
              Order Allow,Deny
    </Directory>

    <Directory /home/jason/web/>
              AllowOverride all
              Order allow,deny
              allow from all
    </Directory>

Em seguida, execute os comandos

sudo a2ensite audio-site sudo /etc/init.d/apache2 restart

No navegador do cliente que estou tentando acessar usando o link Eu tentei várias configurações diferentes com base em pesquisar isso, mas nada parece funcionar.

Qualquer ajuda sobre o que estou perdendo seria apreciada.

Muito obrigado, J

    
por Jason 08.05.2015 / 23:14

1 resposta

3

Não é assim que os hosts virtuais funcionam, receio;) Os hosts virtuais são usados para hospedar vários sites independentes no mesmo servidor da web.

"De volta ao dia", uma máquina hospedava um site em um endereço. Digamos que o seu servidor hospede o site "www.my-site.tld". Os arquivos para esse site (html, css, javascript, imagens, scripts, ...) são armazenados em /var/www/ . Portanto, na configuração do Apache, o DocumentRoot seria definido para esse diretório, /var/www/ .

Se você agora apontasse seu navegador para http://www.my-site.tld/welcome.html , ele exibiria o arquivo /var/www/welcome.html . Para estruturar seu site, você pode usar subpastas. Então, por exemplo, se você apontasse seu navegador para http://www.my-site.tld/holidays/summer2001.html , ele mostraria o arquivo /var/www/holidays/summer2001.html .

Até aí tudo bem. Mas e se você quisesse hospedar mais de um site na mesma máquina, no mesmo host? Vários sites sob endereços diferentes, que são (se você olhar para eles "de fora"), independentes entre si, e não apenas subdiretórios dentro do mesmo site? É aí que os hosts virtuais entram em ação.

Em uma configuração de host virtual, você pode definir muitas diretivas não globalmente para todo o servidor, mas por site . Digamos que você esteja hospedando dois sites no mesmo servidor, "www.my-site.tld" e "www.my-other-site.tld". Para isso, você pode usar duas configurações de host virtual, por exemplo

<VirtualHost *:80>
  DocumentRoot /var/www/my-site/
  ServerName www.my-site.tld
  ServerAlias my-site.tld
  DirectoryIndex welcome.html
  CustomLog /var/log/apache2/my-site.access.log "combined"
  ErrorLog /var/log/apache2/my-site.error.log
</VirtualHost>

e

<VirtualHost *:80>
  DocumentRoot /var/www/my-other-site/
  ServerName www.my-other-site.tld
  ServerAlias my-other-site.tld
  DirectoryIndex index.html
  CustomLog /var/log/apache2/my-other-site.access.log "combined"
  ErrorLog /var/log/apache2/my-other.error.log
</VirtualHost>

Você vê que o DocumentRoot é definido de maneira diferente em cada host virtual, o mesmo para o ServerName , o mesmo para o ServerAlias e assim por diante.

Espero poder ilustrar a ideia de hosts virtuais e por que hosts virtuais e subdiretórios dentro do mesmo host são duas coisas diferentes. Para torná-lo ainda mais complicado, você pode ter subdiretórios dentro de um host virtual;) Digamos, o endereço http://www.my-other-website.tld/tournaments/finals2015.html com a configuração acima apontaria para /var/www/my-other-site/tournaments/finals2015.html .

Algumas outras coisas que você pode encontrar, mas que não posso entrar em detalhes aqui:

Se você usa endereços, nomes de domínio e outros, precisa ter certeza de que todos sabem onde encontrá-los. Apenas definir ServerName my-cool-site.com não permite que "a Internet" direcione solicitações de my-cool-site.com para;) Para isso, normalmente você usaria o DNS comprando (na verdade, é mais aluguel , porque você precisa renová-lo de vez em quando) o nome de domínio e configurar uma entrada dns para o efeito "se alguém está procurando my-cool-site.com , enviá-los para o servidor tal e tal".

Quando você usa um endereço IP em vez de um nome de domínio, por exemplo, http://127.0.0.1/webstuff/how-dns-works.html , isso não altera os princípios mostrados acima. Na verdade, se o seu servidor tiver atribuído vários ips a ele, você poderá diferenciá-los em seus hosts virtuais. <VirtualHost *:80>' means "apply this to requests for any ip, on port 80". If your server has 192.168.2.101 and 192.168.2.102 assigned to it, you can differentiate between those ips in your virtual hosts. só se aplica para pedidos direcionados para192.168.2.101 , not for requests directed to 192.168.2.102 '.

Se você quiser chamar seu servidor da mesma máquina que está em execução e não quiser usar um ip diretamente, normalmente é só dizer "Mostre-me a página da Web no mesmo host em que estou agora, no host local ". Para isso, normalmente, o nome do host especial localhost está configurado. Assim, você pode digitar algo como ' link ' no campo de endereço do seu navegador.

Normalmente, você tem um "diretório pai" comum no qual todos os seus hosts virtuais DocumentRoot s estão. Por exemplo, você pode ter todos os seus hosts virtuais como subdiretórios de /var/www/ . Não é estritamente necessário usar essa estrutura, mas ela tem provado ajudá-lo a controlar as coisas, em contraste com o armazenamento de seus sites em todo o lugar;)

Para incluir um diretório de fora do DocumentRoot de um host virtual, você pode usar um Alias . Digamos que você adicione à configuração do host virtual de "www.my-site.tld" uma diretiva como

Alias /sports /home/john/some-sports

Nesse caso, http://www.my-site.tld/sports/soccer.html apontaria para /home/john/some-sports/soccer.html .

Mas esses casos são propensos a problemas de permissão. Os arquivos em /home/john/some-sports são normalmente de propriedade do usuário john , portanto, o usuário do seu software de servidor da Web (Apache) está em execução, pois pode não ter acesso a eles.

Tudo o que pode ser um pouco mais digerido de uma só vez, mas esses são alguns dos conceitos básicos que você precisa entender para executar com êxito um servidor da web. Não é tão complicado quanto parece à primeira vista.

    
por Henning Kockerbeck 09.05.2015 / 00:18