Como hospedar vários sites com um servidor Apache

Apache Virtual Hosts é um recurso que permite hospedar vários sites independentes a partir de uma instalação do Apache. Cada site tem seu próprio diretório de sistema de arquivos e nome de domínio. Você pode veicular sites diferentes para visitantes diferentes com base no domínio que eles estão usando.
Hosts virtuais são criados usando o < VirtualHost > diretiva nos arquivos de configuração do Apache. Eles normalmente são armazenados no diretório de sites disponíveis no local de instalação do Apache. Em sistemas Debian, geralmente é / etc / apache2; outras distribuições podem usar / etc / httpd.
Assumiremos que você já tem o Apache instalado e funcionando. Criaremos dois hosts virtuais separados, a. example. com e b. example. com. Não há limite para o número de hosts virtuais que você pode usar – se você precisar de uma dúzia de sites em um servidor, o Apache o fará.
Configurando os sites
Cada site precisa de seu próprio diretório de sistema de arquivos. Você colocará os arquivos do site, como HTML, CSS e JavaScript, neste diretório. É denominado DocumentRoot pelo Apache, pois é a raiz a partir da qual os documentos são servidos.
Você pode localizar seus sites em qualquer lugar do sistema. Freqüentemente, você verá hosts virtuais armazenados em / var / www, com cada site recebendo sua própria pasta:
sudo mkdir -p /var/www/a. example. com sudo mkdir -p /var/www/b. example. com
/ var / www normalmente pertence ao root, então estamos usando sudo para criar os subdiretórios. Em seguida, altere a propriedade das raízes do documento para seu próprio usuário e defina as permissões apropriadas. Isso permitirá que o Apache leia os arquivos e, ao mesmo tempo, forneça acesso de gravação para que você possa adicionar seu conteúdo.
sudo chown -R $ USER: $ USER /var/www/a. example. com sudo chown -R $ USER: $ USER /var/www/b. example. com sudo chmod -R 755 / var / www
Copie os arquivos do seu site nos diretórios. Usaremos dois arquivos index. html simples:
a. example. com/index. html
< html > < body > < h1 > a. example. com < / h1 > < / body > < / html >
b. example. com/index. html
< html > < body > < h1 > b. example. com < / h1 > < / body > < / html >
Configurando o Apache
Agora você está pronto para configurar seus hosts virtuais. Crie um novo arquivo de Host Virtual para cada um dos sites. Não importa o nome do arquivo; por convenção, geralmente corresponde ao nome do host do seu site.
No mínimo, cada host virtual precisa declarar duas propriedades:
- Nome do servidor – O nome do host (domínio) a partir do qual o site será servido.
- DocumentRoot – O local do sistema de arquivos para servir para este host virtual.
Aqui está um exemplo de configuração para nossos dois sites:
/etc/apache2/sites-available/a. example. com. conf
< VirtualHost *: 80 > Nome do servidor a. example. com DocumentRoot /var/www/a. example. com < / VirtualHost >
/etc/apache2/sites-available/b. example. com. conf
< VirtualHost *: 80 > Nome do servidor b. example. com DocumentRoot /var/www/b. example. com < / VirtualHost >
Esta configuração básica é suficiente para colocar os dois sites no ar! O *: 80 significa que o Apache irá considerar o uso deste Host Virtual para qualquer solicitação que chegue na porta 80. Eles serão eliminados mais tarde pelas declarações ServerName.
Habilitando hosts virtuais
Adicionar um host virtual aos sites-available torna-o disponível, mas não ativo. Você precisa habilitar manualmente cada site que deseja usar. As configurações do host virtual a serem ativadas devem ser vinculadas simbolicamente a / etc / apache2 / sites-enabled (ou / etc / httpd / sites-enabled).
Em sistemas Debian, você pode usar o comando a2ensite para simplificar esta etapa:
a2ensite a. example. com a2ensite b. example. com
Em outras distribuições, use o comando ln para criar um link simbólico manualmente.
sudo ln -s /etc/httpd/sites-available/a. example. com. conf /etc/httpd/sites-enabled/a. example. com. conf sudo ln -s / etc / httpd /sites-available/a. example. com. conf /etc/httpd/sites-enabled/b. example. com. conf
Finalmente, reinicie o Apache para aplicar sua nova configuração. As alterações do host virtual exigem a reinicialização do servidor após você adicioná-los aos sites habilitados.
sudo apache2ctl restart
Agora você deve conseguir ver o Apache servindo seus dois sites diferentes. Se você não tiver o DNS resolvido para o seu servidor, poderá modificar o arquivo / etc / hosts do sistema para testar a configuração.
Adicione as seguintes linhas a / etc / hosts:
127.0.0.1 a. example. com 127.0.0.1 b. example. com
Isso forçará ambos os domínios a resolver de volta para o seu próprio sistema. Agora você poderá visitá-los em seu navegador para ver as duas páginas de host virtual diferentes.
Aliases de site
Se você deseja servir o mesmo site em múltiplos domínios, use a diretiva ServerAlias em seu Host Virtual. Cada alias será considerado quando o Apache comparar seu Host Virtual com as solicitações de entrada. O Host Virtual será usado se o cabeçalho do Host da solicitação corresponder a um ServerAlias ou ao ServerName.
< VirtualHost *: 80 > ServerName a. example. com ServerAlias example. com ServerAlias www. example. com DocumentRoot /var/www/a. example. com < / VirtualHost >
Este exemplo serviria a um site em três domínios, sem ter que repetir nenhum detalhe de configuração. Você deve usar ServerAlias para definir múltiplos domínios – repetir ServerName é possível, mas substituirá os usos anteriores.
Outras opções de configuração
Muitas das opções de configuração do servidor do Apache podem ser usadas com hosts virtuais. Eles substituirão as configurações globais do servidor quando o Apache manipular uma solicitação usando o host virtual.
< VirtualHost *: 80 > Nome do servidor a. example. com DocumentRoot /var/www/a. example. com DirectoryIndex my-index. html < Directory /var/www/a. example. com> AllowOverride All Options -Indexes Requer todos os concedidos < / Directory > ErrorLog $ / error. log CustomLog $ / access. log combinado < / VirtualHost >
Este Host Virtual aplica muito mais configurações. my-index. html é servido por padrão, em vez de index. html, e locais de registro personalizados são usados. Além disso, configurações extras são aplicadas à própria raiz do documento, usando o bloco Directory. Substituições de . htaccess são permitidas (AllowOverride All) e as páginas de listagem de diretório padrão do Apache estão desabilitadas (Opções -Indexos).
Hosts de endereço IP
O Apache também oferece suporte a hosts baseados em IP, além dos hosts baseados em nomes que vimos até agora. Os hosts baseados em IP são ideais quando seu servidor tem várias interfaces de rede, como uma rede interna da empresa e a Internet pública. Você pode servir a um site diferente dependendo da interface de rede usada.
< VirtualHost 172.17.0.1 > Nome do servidor a. example. com DocumentRoot / var / www / a < / VirtualHost > < VirtualHost 172.17.0.1 > ServerName b. example. com DocumentRoot / var / www / b < / VirtualHost > < VirtualHost 192.168.0.1 > Nome do servidor a. example. com DocumentRoot / var / www / a2 < / VirtualHost
Neste exemplo, as solicitações feitas a a. example. com por meio da interface com IP 192.168.0.1 receberiam conteúdo diferente daquele enviado por 172.17.0.1. Além disso, os usuários do último IP poderiam acessar b. example. com. Este site não está exposto a usuários que se conectam via 192.168.0.1.
Essa abordagem permite que você use um servidor para sua intranet corporativa e site público. Vincule os sites internos ao IP da LAN do seu servidor; execute os hosts públicos em seu endereço WAN.
Correspondência de host virtual
A rotina de resolução de host virtual do Apache é bem documentada e bastante direta.
Em geral, o Apache tenta combinar o cabeçalho da solicitação de Host com um campo ServerName ou ServerAlias em uma configuração de Host Virtual. Se houver várias correspondências, o Apache usará o primeiro host virtual correspondente que encontrar.
Os hosts virtuais são classificados em ordem de nome de arquivo. Se você precisar que um site corresponda a outro, renomeie seu arquivo de configuração para que ele seja classificado antes do site de destino. Você pode adicionar um prefixo numérico, como 000-a. example. com. conf. Na maioria das vezes, isso será desnecessário – se todos os seus sites tiverem domínios exclusivos, você nunca deverá encontrar um conflito.
Conclusão
Os hosts virtuais Apache permitem que você divida a configuração de vários sites em arquivos de definição autocontidos. Você pode habilitar e desabilitar independentemente cada site, vinculando-o a sites habilitados.
Muitas opções de configuração estão disponíveis para hosts virtuais. Você pode substituir algumas configurações do servidor Apache por host, para ter controle total sobre a configuração de cada site virtualizado.
Nenhum comentário