Apache para Iniciantes

Nos idos de 1995, havia muitas pessoas que estavam insatisfeitas com o estado atual dos servidores Web. Os comerciais, como o Microsoft IIS e a família de servidores da Netscape, ainda não haviam nascido, e os demais, desenvolvidos por estudantes universitários, eram de qualidade duvidosa. O que então os programadores mais experientes fizeram? Eles criaram seu próprio servidor Web. Chamaram esse servidor de Apache (de “a patchy server”, por se tratar de um conjunto de patches). Um patch é o que parece ser – alguma coisa para preencher lacunas em um código. Esse pequeno grupo de hackers iniciou um projeto que eventualmente criou o servidor Web mais popular do mundo.

O brilhantismo do esquema do grupo Apache não residia somente na programação, mas também no modelo de desenvolvimento. Hoje em dia esse modelo é chamado de open-source. (Uma nota curta: Existem diversos sabores de desenvolvimento open-source. O Apache permite que qualquer um crie um produto comercial baseado em seu código e não força eles a compartilhar os resultados. Se alguém disser que esse modelo é “melhor” que outros, comentários hostis com certeza seguirão o autor do comentário).

Então… voltando ao presente. Por quê você deve se importar com isso? Duas razões, principalmente: É gratuito. Isso já seria uma baita razão. Se quiser configurar um Web site, existem muitas vantagens de possuir o código fonte. Outra grande vantagem para a abordagem open-source é que o Apache tem atraído muitos desenvolvedores ao redor do mundo. Eles tem criado vários pedaços de código conhecidos no universo Apache como módulos. Muitos desses módulos fazem coisas que você deseja. E se você não puder achar um do seu gosto, pode sempre escrever o seu (Desde que saiba a linguagem C, ou usar mod_perl para estender o servidor usando Perl).

Baixando o Apache

Se você chegou nessa página, provavelmente está querendo saber como instalar e configurar o Apache. Você vai precisar de um compilador, mas não deixe isso assustar você; existem muitas versões pré-compiladas do Apache disponíveis. Você só precisará saber onde obtê-las (www.apache.org/dist/).

Você também precisará saber o tipo de sistema operacional que quer usar (meu favorito para usar Apache é o Linux, mas essa discussão começaria uma verdadeira guerra de opiniões). para o propósito desse tutorial, será assumido que o Apache será compilador com um compilador GNU C em um sistema baseado no Unix.

Uma das novidades na última versão do Apache (1.3.x) é uma coisinha chamada suporte a DSO (dynamic shared objetc). Isso significa que não precisamos compilar tudo em nosso servidor Web; só adicione o que for preciso quando for preciso. O uso do DSO pode não ser tão estável quanto compilar todos os módulos de uma vez, por isso iremos fazer isso mais tarde nesse tutorial. Sua caminhada pode variar.

Abaixo segue uma maneira popular de descompactar a distribuição. Nesse exemplo, o arquivo baixado foi apache_1.3.6.tar.gz, que foi colocado no diretório /tmp:


cooke@mymachine:/tmp%tar zxvf apache_1.3.6.tar.gz

Esse comando cria um diretório chamado apache_1.3.6 que contém todos os arquivos do código fonte do apache.

Compilando o Apache

Uma vez que descompactamos com sucesso o apache, a compilação dele é bem fácil (De verdade). Para aqueles que nunca usaram um compilador antes, essa a função de um compilador: pega tudo que é escrito em uma linguagem de programação (C, nesse caso) e cria um arquivo binário (ou um conjunto de arquivos) que o computador pode entender.

O compilador mais popular para uso com o Apache é (sem surpresa) um compilador livre e gratuito: o GNI cc (gcc). Se estiver em um sistema Unix, pode descobrir qual o compilador instalado com o comando which, dessa forma:


cooke@mymachine:/tmp%which cc

/usr/local/bin/cc

Para descobrir a versão que está instalada (se possuir o gcc), execute-o como o sufixo -v, dessa forma:


cooke@mymachine:/tmp%gcc -v Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1/specs gcc version 2.8.1

É sempre bom ter a última versão instalada, apensar disso não ser estritamente necessário. Se vocẽ tiver um outro compilador (usualmente chamado cc), também deve funcionar bem. Teste para descobrir!
O próximo passo é configurar e compilar o código. Existem dois passos diferentes para a etapa de configuração. O primeiro indica como o arquivo binário de servidor Web será compilado; o segundo configura as operações do binário e altera suas configurações. Pense dessa forma: o primeiro passo cria o programa, e o segundo diz ao programa o que fazer.

A maneira mais fácil de garantir que tudo funcione com seu compilador e sistema operacional é fazer algo parecido com isso:


cooke@mymachine:/tmp%cd apache_1.3.4 cooke@mymachine:/tmp/apache_1.3.4%./configure ; make

Você deve ver a seguinte saída na tela:


Configuring for Apache, Version 1.3.4

+ Warning:Configuring Apache with default settings.
+ This is probably not what you really want.
+ Please read the README.configure and INSTALL files
+ first or at least run './configure --help' for
+ a compact summary of available options.
+ using installation path layout:Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
+ configured for Solaris 260 platform
+ setting C compiler to gcc
+ setting C pre-processor to gcc -E
+ checking for system header files
+ adding selected modules
+ doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/main
Creating Makefile in src/ap
Creating Makefile in src/regex
Creating Makefile in src/os/unix
Creating Makefile in src/modules/standard
===> src
===> src/os/unix
gcc -c -I../../os/unix -I../../include -DSOLARIS2=260 `../../apaci` os.c
gcc -c -I../../os/unix -I../../include -DSOLARIS2=260 `../../apaci` os-inline.c
rm -f libos.a
ar cr libos.a os.o os-inline.o
ranlib libos.a
<=== src/os/unix

Você verá muito mais disso até o final.

Se ocorrer uma falha e uma mensagem de erro aparecer, você pode desejar tentar baixar os binários pré-compilados. Ou, se estiver usando Linux, obtenha o RPM (ou DEB).

Uma vez que a compilação tiver sido concluída, teste os binários para garantir que tudo esteja funcionando. Usualmente é feito o seguinte:


cooke@mymachine:/tmp/apache_1.3.4% cd src cooke@mymachine:/tmp/apache_1.3.4/src% ./httpd -l

Que deve retornar:


Compiled-in modules:

http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_access.c
mod_auth.c
mod_setenvif.c

O comando httpd -1 mostra a lista de módulos que foram compilados junto com o Apache sem iniciar o programa.

O Apache assume que você deseja instalar o programa no diretório /usr/local/apache/ (chamado de ServerRoot) e os arquivos de configuração usados para iniciar o servidor será /usr/local/apache/conf/httpd.conf. Se isso estiver bom para você, siga em frente e copie o arquivo httpd para /usr/local/apache/bin/ (depois de criar esse diretório, obviamente).

Agora vamos ver o que faz parte dos arquivos de configuração (estamos quase terminando a instalação).

Configurando o Apache

Agora que vocẽ tem um binário funcional, é hora de configurar o Apache. Essa é geralmente a parte principal do trabalho muitas vezes, e existem tantas opções disponíveis que pode valer a pena comprar um livre, como o recentemente revisado livro da O’Reilly sobre Apache, que é muito bom. Mas se for como eu, vocẽ provavelmente irá mexer no arquivo de configuração e deixará o livro num canto até esbarrar em algum problema que não puder resolver.

Os passos básicos são bem fáceis de notar:

Veja que o arquivo httpd.conf-dist e todos os outros arquivos *.conf do sub-diretório /conf perdem o sufixo. Todos as diretivas (comando Apache) são listadas no web site do Apache, que é a melhor fonte de documentação. E muitas pessoas podem usar somente as versões padrões dos arquivos *.conf e serem perfeitamente felizes com esses arquivos. Se você executar ./httpd -h, poderá ver uma lista completa de diretivas que o binário suporta (essa dica é útil em caso de esquecer como alguma coisa é chamada).

Você também vai precisar especificar o username que o Apache usa (“Nobody” é padrão canônico, mas você pode usar qualquer nome que quiser).

Certifique-se que o username que você escolher tenha permissões para fazer as coisas em seu servidor, como ler, escrever e executar arquivos e diretórios. É bom resolver todos os problemas com permissões agora, para que eles não lhe incomodem mais tarde.

Bem cedo você vai querer fazer coisas como controle de acesso para certos documentos ou diretórios, combinar diferentes arquivos HTML para navegadores diferentes, ou fre-escrever as URLs no lado do servidor para satisfazer uma necessidade própria de seu servidor. O Apache terá sempre uma resposta para seus problemas. Às vezes a resposta será fácil, e às vezes será mais difícil. Nunca lhe foi prometido um mar de rosas.

Usando Apache, você terá aos eu alcance o use de outros projetos open-source legais como PHP, uma excelente interface para banco de dados e um tipo de competidor para o ASP, e p mod_perl, uma maneira de embutir programas em seu binário de forma bastante rápida.

Existem algumas maneiras de executar coisas depois de ter compilado e configurado o Apache. Muitas pessoas apenas digitam /usr/local/apache/src/httpd, e o Apache inicia tranquilamente – se você configurou tudo corretamente. Se não o fez, pode esbarrar em uma mensagem de erro na linha de comando, informando a diretiva que contém o erro, além de poder ver o erro no arquivo error_log, que reside no diretório /usr/local/apache/logs.

Traduzido de