Um dos servidores HTTP mais utilizados mundialmente é o Apache. Para instalá-lo no servidor Debian/Linux utiliza-se o comando:
#apt-get install apache2
Com este servidor, é possível gerenciar diversos sites hospedados em um mesmo servidor que, no caso do Debian, são armazenados a partir da pasta o /var/www. O Apache já vem com um site pré-configurado, que utiliza exatamente esta pasta para armazenar os seus arquivos. Este site é utilizado para verificar se o servidor está funcionando corretamente. Você pode acessar este site informando a seguinte URL na barra de endereços do seu navegador local: http://localhost. Se o Apache foi instalado corretamente, será exibida uma página com o conteúdo semelhante ao da Figura D3.1.1 Além do endereço de loopback, como o servidor também responderá por solicitações realizadas através do endereço IP do servidor (como por exemplo http://192.168.1.10) ou seu nome DNS.
O diretório padrão do apache é o /etc/apache2/, onde podem ser encontrados principais arquivos de configuração utilizados pelo servidor, sendo que o principal deles é o apache2.conf. Neste arquivo podem ser inseridas instruções ou apontamentos para arquivos externos de configuração. Dentre estes últimos estão os arquivos que gerenciam os sites, que são armazenados no diretório /etc/apache2/sites-avaliable. Também neste diretório é possível criar arquivos de configuração específicos para controlar o comportamento de cada um dos sites armazenados no servidor. Estes arquivos de configuração devem ser habilitados para que o Apache passe a gerenciar os sites informados pelos mesmos. Para tanto, utiliza-se o comandoa2ensite. Com este comando, o site é copiado para a pasta /etc/apache2/sites-enable (ou sites habilitados) e passa a ser controlado pelo servidor após ser reiniciado.
Para desabilitar um site, utiliza-se o comando a2dissite. Se um site for desabilitado ele será removido da pasta /etc/apache2/sites-enable não será mais disponibilizado pelo servidor web. O arquivo de configuração não é apagado da pasta /etc/apache2/sites-avaliable e, caso seja necessário colocar o site novamente no ar, basta habilitá-lo novamente.
No diretório do apache também se encontram dois diretórios, que têm um comportamento semelhante: /etc/apache2/mods-avaliable e /etc/apache2/mods-enable. Neste encontram-se os módulos ou bibliotecas que, se necessárias, deverão ser habilitadas juntamente com o servidor apache, como é o caso do módulo SSL que veremos mais adiante. Para habilitar ou desabilitar módulos utilizamos respectivamente os comandos:
# a2enmod nome_do_modulo
# a2dismod nome_do_modulo
Para compreender melhor este processo, nada melhor que um exemplo prático. Vamos supor que você deva armazenar um novo site no seu servidor web. O primeiro passo, é claro, será criar a pasta onde o mesmo será armazenado. No nosso caso, vamos criar uma pasta chamada site1 no diretório /var/www:
#mkdir /var/www/site1
Agora, vamos nos posicionar neste diretório e criar o arquivo principal do site.
#cd /var/www/site1
#gedit index.html
Criaremos um arquivo simples, já que a nossa intensão é verificar o funcionamento do site e vamos inserir no mesmo o seguinte conteúdo:
<html>
<body>
<h1>Site 1</h1>
<p>Esta é a página principal do meu primeiro site!</p>
</body>
</html>
Bem, agora vamos criar o arquivo de configuração do site. O primeiro passo é nos posicionarmos no diretório /etc/apache2/sites-avaliable e após criar o arquivo de configuração. Vamos chamá-lo de site1 da mesma forma que o diretório que armazenará o site.
#cd /etc/apache2/sites-avaliable
#gedit site1
Neste arquivo, vamos inserir as instruções iniciais de acesso do nosso site:
<VirtualHost 192.168.1.10:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site1
<Directory /var/www/site1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Cada site armazenado é considerado pelo servidor um host virtual. Dessa forma, o conteúdo do arquivo de configuração dos sites deve iniciar com a cláusula <VirtualHost> e encerrar com a cláusula </Virtualhost> (linhas 1 e 10). A cláusula DocumentRoot (linha 3) define a raiz do site, ou seja, o diretório principal onde o servidor automaticamente se posicionará quando o site for solicitado. Por fim, o bloco de comando indicado pelas clásulas <Directory> e </Directory> (linhas 4 e 9) definem o contexto de controle de acesso ao diretório indicado. A instrução AllowOverride None (linha 6) indica um acesso padrão sem restrições de autenticação.
| ||||
| ||||
|
Observe que na cláusula <VirtualHost> estamos informando o endereço IP de uma das interfaces do nosso servidor. Isso irá mudar a forma como o servidor receberá as requisições. Como dissemos anteriormente, após a instalação padrão do Apache, poderíamos acessar o site padrão informando no navegador o endereço de loopback (http://localhost), o endereço IP do servidor (http://192.168.1.10) ou seu nome DNS. Até esse momento essas requisições solicitavam ao servidor os arquivos armazenados em /var/www (conforme instruções do site default do servidor). Porém, no momento em que habilitarmos o site, o endereço IP ou nome DNS associados ao mesmo determinam que servidor se posicione em outro diretório, no nosso caso em /var/www/site1 (comportamento definido pela cláusula DocumentRoot) e, a partir deste, realizar a transferência de arquivos.
Após salvar o arquivo de configuração devemos habilitar o site com o comando:
#a2ensite site
É necessário reiniciar o servidor para colocar o site em funcionamento. Para tanto, devemos executar o comando:
#invoke-rc.d apache2 restart
Assim como nos demais serviços, também temos as opções invoke-rc.d apache2 start e invoke-rc.d apache2 stop. Se o servidor reiniciar sem problemas, você poderá acessar o novo site, informando o endereço IP do mesmo no navegador, veja na Figura D3.1.2.
Para armazenar mais sites em um mesmo servidor podemos utilizar duas estratégias para identificá-los: distingui-los através de endereços IP (IP-based) ou através de nomes DNS (Name-based). Ambas são válidas, sendo a primeira mais indicada para o acesso SSL, que veremos na sequência.
Um recurso que é utilizado comumente para habilitar sites por diferentes IPs é a inclusão de interfaces virtuais no servidor (IP Alias). Por exemplo, supondo que o nosso servidor tenha IP fixo 192.168.1.10 , definido na eth0 podemos informar no arquivo de interfaces que esta mesma placa de rede também responderá por outro endereço IP, basta adicionar as informações correspondentes no arquivo de configuração:
#gedit /etc/network/interfaces
Ao final do arquivo deve-se adicionar as instruções referentes à interface virtual que é referenciada sempre com o seu nome (ethx – onde x é o número da interface), caractere “:” e um número sequencial. Veja no exemplo:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
auto eth0
iface eth0:0 inet static
address 192.168.1.20
netmask 255.255.255.0
auto eth0:0
Na linha 8, encontra-se a declaração da interface virtual no caso a eth0:0 e na sequência o seu endereço IP e máscara. Após salvar o arquivo de configuração, devemos reiniciar o serviço de rede:
# invoke-rc.d networking restart
Vamos criar agora o diretório onde este novo site será armazenado e criar o seu arquivo principal:
# mkdir /var/www/aulaisr2
# cd /var/www/aulaisr2
#gedit index.html
Vamos inserir no mesmo o seguinte conteúdo:
<html>
<body>
<h1>Site 2</h1>
<p>Esta é a página principal do meu segundo site!</p>
</body>
</html>
Agora vamos criar o arquivo de configuração do mesmo
# cd /etc/apache2/sites-avaliable
# gedit site2
<VirtualHost 192.168.1.20:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site2
<Directory /var/www/site2>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Veja que na cláusula <VirtualHost> (linha1) informamos o endereço IP que deverá ser utilizado para acessar o site, assim como nas cláusulas DocumentRoot e o contexto <Directory> (linhas 3 e 4) informamos onde o segundo site inicia e como o acesso ao mesmo deverá ocorrer. Para colocar o novo site em funcionamento, após salvar o arquivo de configuração, devemos habilitá-lo e reiniciar o Apache:
#a2ensite site2
#invoke-rc.d apache2 restart
Se tudo correr bem, você também poderá acessar o seu segundo site diretamente através do endereço IP. Veja na figura D3.1.3:
Dessa forma, teremos dois sites armazenados no servidor que responderão por endereços IP ou nomes DNS (se configurados no servidor) distintos.
| ||||
| ||||
|