Unidade D - Instalação e configuração do servidor HTTP

D.3. Instalando e configurando do servidor Apache

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.

 

 

Para consultar a documentação completa das instruções utilizadas pelo apache acesse: http://httpd.apache.org/docs/2.0/mod/core.html

 

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.

 

 

Como dissemos, você também pode utilizar outra estratégia para controlar o armazenamento de sites chamada name-based virtual hosting. Para mais informações consulte: http://httpd.apache.org/docs/2.0/vhosts/name-based.html