Conhecendo o Servidor Apache (HTTP Server Project)

Introdução

Pelo menos até o desenvolvimento deste artigo, o Apache era o servidor Web mais usado no mundo, tendo um domínio de mais de 60%. Por ser tão importante assim, nada melhor do que entender um pouco o Apache, conhecer sua história e saber como começar a utilizá-lo. É isso que você verá nas próximas linhas.

O servidor Apache

Ao acessar qualquer site, há um servidor por trás daquele endereço responsável por disponibilizar as páginas e todos os demais recursos que você pode acessar. Assim, quando você envia um e-mail através de um formulário, coloca uma mensagem em um fórum de discussão, faz uma compra on-line, etc, um servidor Web (ou um conjunto de servidores) é responsável por processar todas essas informações.

Sendo mais claro, um servidor Web é um computador que processa solicitações HTTP (Hyper-Text Transfer Protocol), o protocolo padrão da Web. Quando você usa um navegador de internet para acessar um site, este faz as solicitações devidas ao servidor Web do site através de HTTP e então recebe o conteúdo correspondente. No caso do Apache, ele não só executa o HTTP, como outros protocolos, tais como o HTTPS (O HTTP combinado com a camada de segurança SSL - Secure Socket Layer), o FTP (File Transfer Protocol), entre outros.

Como servidor Web, o Apache é o mais conhecido e usado. Os motivos incluem sua excelente performance, segurança, compatibilidade com diversas plataformas e todos os seus recursos.

Servidor ApacheO servidor Apache (ou Apache Server) surgiu no National Center of Supercomputing Applications (NCSA) através do trabalho de Rob McCool. Ao sair da NCSA, McCool parou de trabalhar no software (que nessa época recebia justamente a denominação NCSA) e então várias pessoas e grupos passaram a adaptar o servidor Web às suas necessidades. No entanto, foram Brian Behlendorf e Cliff Skolnick os principais responsáveis pela retomada do projeto, contando logo em seguida com o apoio de Brandon Long e Beth Frank. Estes últimos tinham a tarefa de continuar com o desenvolvimento do servidor, mas pela NCSA. Não demorou muito para que eles se juntassem ao Apache Group.

A origem da Fundação Apache (Apache Foundation) vem daí: Brian Behlendorf e Cliff Skolnick passaram a controlar "patches" (adição de recursos ou correções) atrás de uma lista de discussão. Dessa lista foi formado o grupo, constituído inicialmente de 8 pessoas. O nome da fundação parece ter sido baseado nessa característica (uso de patches), já que pode ser interpretado como um trocadilho com a expressão em inglês "a patchy". No entanto, segundo os desenvolvedores do servidor, o nome é baseado numa tribo americana de nome Apache.

O servidor Apache teve sua primeira versão oficial (0.6.2) lançada em 1995. No momento em que este artigo era escrito, a última versão era a 2.2.3/2.2.4. De 1995 até hoje houve várias mudanças no projeto. Talvez, a mais importante tenha sido o Shambhala, uma arquitetura para o Apache desenvolvida por Robert Thau. O Shambhala agradou tanto na época (principalmente por seu melhor gerenciamento de memória) que acabou sendo incorporado definitivamente ao servidor, tirando de cena a base existente até então. Surgia a versão 0.8.8, que tinha, além do Shambhala, recursos da versão 0.7.x. Após uma série de aperfeiçoamentos, testes e de uma documentação nova (feita por David Robinson), o Apache 1.0 foi lançado em dezembro de 1995.

Características do servidor Apache

O Apache Server é um software livre, o que significa que qualquer um pode estudar ou alterar seu código-fonte, além de poder utilizá-lo gratuitamente. É graças a essa característica que o software foi (e continua sendo) melhorado ao passar dos anos. Graças ao trabalho muitas vezes voluntário de vários desenvolvedores, o Apache continua sendo o servidor Web mais usado no mundo.

Além de estar disponível para o Linux (e para outros sistemas operacionais baseados no Unix), o Apache também conta com versões para o Windows, para o Novell Netware e para o OS/2, o que o torna uma ótima opção para rodar em computadores obsoletos (desde que este atenda aos requisitos mínimos de hardware).

O servidor Apache é capaz de executa código em PHP, Perl, Shell Script e até em ASP e pode atuar como servidor FTP, HTTP, entre outros. Sua utilização mais conhecida é a que combina o Apache com a linguagem PHP e o banco de dados MySQL (combinação usada aqui no InfoWester, por exemplo).

A exigência de hardware do Apache depende de sua aplicação, mas um PC Pentium com 64 MB de memória RAM é capaz de executá-lo tranqüilamente em um ambiente corporativo pequeno. No entanto, quando se trata de um site na internet, é interessante ter máquinas tão poderosas quanto o que exige o nível de acesso.

Abaixo, segue um resumo com as principais características (extraído do Guia Foca Linux):

- Possui suporte a scripts cgi usando linguagens como Perl, PHP, Shell Script, ASP, etc;
- Suporte a autorização de acesso podendo ser especificadas restrições de acesso separadamente para cada endereço/arquivo/diretório acessado no servidor;
- Autenticação requerendo um nome de usuário e senha válidos para acesso a alguma página/sub-diretório/arquivo (suportando criptografia via Crypto e MD5);
- Negociação de conteúdo, permitindo a exibição da página Web no idioma requisitado pelo Cliente Navegador;
- Suporte a tipos mime;
- Personalização de logs;
- Mensagens de erro;
- Suporte a virtual hosting (é possível servir 2 ou mais páginas com endereços/ portas diferentes através do mesmo processo ou usar mais de um processo para controlar mais de um endereço);
- Suporte a IP virtual hosting;
- Suporte a name virtual hosting;
- Suporte a servidor Proxy ftp e http, com limite de acesso, caching (todas flexivelmente configuráveis);
- Suporte a proxy e redirecionamentos baseados em URLs para endereços Internos;
- Suporte a criptografia via SSL,Certificados digitais;
- Módulos DSO (Dynamic Shared Objects) permitem adicionar/remover funcionalidades e recursos sem necessidade de recompilação do programa.

Instalando o Apache no Linux

A instalação do servidor Apache no Linux é fácil, principalmente por estar, na maioria das vezes, atrelada a facilidades existentes na própria distribuição Linux. Por exemplo, se você usa um sistema operacional baseado no Debian (ou o próprio), como o Ubuntu, pode instalar o Apache através do comando apt-get:

apt-get install apache

O mais recomendável é instalar as versões do Apache preparadas para sua distribuição, já que provavelmente o software estará otimizado para rodar nela. Se preferir, você pode baixar pacotes "genéricos" no site da Apache Foundation. Feito isso, a instalação pode ser executada da seguinte forma:

Supondo que você baixou o pacote httpd-2.2.2.tar.bz2, digite em um terminal:

tar -xjvf httpd-2.2.2.tar.bz2
cd httpd-2.2.2 (supondo que esta é a pasta criada)

O comando acima descompactou o pacote e o de baixo inicia o processo de compilação e instalação:

./configure --prefix=/etc/httpd (se preferir, indique após o sinal de igual o local de instalação do Apache)

Na verdade, o comando anterior pode ser incrementado com a adição ou a remoção de módulos. Para isso, após "configure", informe "--enable-módulo" para adicionar um módulo ou "--disable-módulo" para fazer o contrário. Por exemplo, se você digitar:

./configure --enable-ssl --enable-rewrite --prefix=/etc/httpd

Significa que você está habilitando o suporte a SSL e ao "rewrite" que, basicamente, permite "reescrever" endereços usando expressões regulares.

Findo este processo, digite: make e, em seguida, make install para concluir a instalação.

Executando o Apache no Linux

Após instalar o Apache, é hora de executá-lo. Para isso há mais de uma forma, uma delas é a seguinte, que você pode digitar em um terminal:

/etc/httpd/bin/apachectl start

No comando acima, altere para o caminho correspondente, caso o Apache esteja instalado em um diretório diferente. Em alguns casos, basta abrir o terminal e digitar apenas "apachectl start". Isso será suficiente para iniciar o Apache.

O parâmetro start pode ser substituído por outros, como:

restart - para reiniciar o Apache;
stop - para parar o Apache;
status - para mostrar o status do processo do Apache.

Após iniciar o Apache, é possível testá-lo: abra um navegador de internet instalado na máquina e digite no campo de endereço: http://localhost:80 (em alguns casos, basta digitar localhost). Se o Apache estiver funcionando corretamente, uma página como a mostrada abaixo será exibida no browser:

Página de teste do Apache

Provavelmente você irá querer que o Apache inicie automaticamente toda vez que o sistema operacional for carregado. Isso pode ser feito da seguinte forma: abra o arquivo /etc/rc.d/rc.local (ou equivalente, de acordo com o seu sistema operacional) e acrescente nele a linha:

/etc/httpd/bin/apachectl start

Existem várias formas de iniciar o Apache automaticamente. Outra opção, para quem utiliza o Fedora Core em português, por exemplo, é a seguinte (considerando que o Apache está devidamente instalado): acesse o menu (chapéu vermelho), vá em Configurações do Sistema / Configurações do Servidor / Serviços. No menu à esquerda, habilite a opção "httpd" e clique no botão Salvar.

O passo seguinte é configurar o Apache (é recomendável fazer isso com o servidor parado). Para isso, deve-se acessar o diretório conf - em nosso caso, /etc/httpd/conf - e abrir os arquivos de configuração. Nessa pasta você encontra, basicamente, os arquivos httpd.conf, srm.conf (dependendo da versão) e access.conf (dependendo da versão).

Dos três citados, o primeiro é o mais importante, pois é responsável pelas configurações usadas pelo daemon do Apache, o httpd (daemon é uma espécie de programa que executa tarefas em segundo plano). O arquivo srm.conf tem a tarefa de indicar os recursos que o Apache precisa, enquanto que o access.conf contém diretivas de segurança para controlar o acesso a arquivos e diretórios.

Por este ser um artigo introdutório, não serão dados detalhes sobre como configurar esses arquivos, mas o último tópico desta página contém ótimos links que ensinam a fazer isso.

TUX

Não, esse tópico não trata do simpático pingüim símbolo do Linux, mas sim do TUX servidor, uma criação da Red Hat que trabalha como se "acoplado" ao Apache. Seu objetivo é disponibilizar páginas estáticas da maneira mais otimizada possível.

A otimização possível com o TUX existe porque esse software executa em nível de kernel, o que o faz ser pouco indicado a iniciantes. Para obter mais detalhas do TUX, acesse www.redhat.com/docs/manuals/tux.

A Apache Foundation

A Apache Foundation, ou "Fundação Apache", é responsável por uma grande quantidade de projetos de código aberto, sendo o principal, evidentemente, o servidor Web que leva seu nome.

Constituída por nomes de peso, como o chairman Greg Stein, os desenvolvedores Ken Coar, J. Aaron Farr, Cliff Schmidt, entre muitos outros, a Apache Foundation se mostra como uma entidade séria, colaborativa, mantida principalmente por doações e contando com o apoio de grandes corporações, como IBM e Sun, tanto no que diz respeito ao desenvolvimento de produtos, quanto no fornecimento de hardware ou até mesmo no aspecto financeiro.

As atividades da Apache Foundation podem ser conhecidas em seu site oficial: www.apache.org.

Finalizando

O servidor Apache é um software poderoso, robusto, seguro e amplamente usado no mundo. Seu leque de configurações o faz ser uma ferramenta que requer tempo para ser dominada. Se esse é seu objetivo, o site oficial da Apache Foundation contém uma documentação muito abrangente, mas também é possível encontrar bom material no Brasil, como o oferecido pelo Guia Foca Linux:

Documentação da Apache: httpd.apache.org/docs-project*;

Documentação do Guia Foca Linux: focalinux.cipsga.org.br/guia/avancado/ch-s-apache.htm*;

Documentação do site Laureano: www.laureano.eti.br/guias/GuiaInstApache.php*.

Boa Leitura!

*Acessado em maio de 2006. Caso o link esteja quebrado, por favor, avise-nos do problema entrando em contato.

Escrito por - Publicado em 15_05_2006 - Atualizado em 15_05_2006