Você está na página 1de 11

Guia Rápido de Instalação e Configuração do Apache

versão 2.0, Janeiro 2007

por António Manuel Dias

Copyright © 2003 - 2007 António Manuel Dias

Este documento pode ser copiado e distribuído segundo a licença Creative Commons Atribuição – Partilha nos Termos da Mesma Licença 2.5. Esta licença permite que o documento seja copiado, distribuído e lido sob as seguintes condições:

Atribuição. O utilizador deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.

Partilha nos termos da mesma Licença. Se alterar, transformar, ou criar outra obra com base nesta, só poderá distribuir a obra resultante através de uma licença idêntica a esta.

Para cada reutilização ou distribuição, deverá deixar claro para outros os termos da licença desta obra. Qualquer uma destas condições podem ser renunciadas, desde que obtenha permissão por parte do au- tor. Qualquer direito de uso legítimo (ou "fair use") concedido por lei, ou qualquer outro direito prote- gido pela legislação local, não são em hipótese alguma afectados pelo disposto acima. Para mais infor- mações, pode consultar o texto jurídico, na íntegra, no endereço web:

Conteúdo

1 Introdução

2

2 Instalação

2

3 Configuração

4

3.1 Endereço do administrador do site

5

3.2 Nome do sítio web

5

3.3 Raiz do site

5

3.4 Autorizar a execução de CGIs e Server-Side Includes (SSI)

6

3.5 Nomes dos ficheiros de índice

6

3.6 Indicar directoria para os CGIs

7

3.7 Indicar a extensão dos ficheiros CGI

8

1

3.8

Indicar extensão dos ficheiros SSI

8

4 Testar a configuração

9

5 Iniciar o Apache no arranque do sistema

10

6 Glossário e créditos

10

6.1 Glossário

10

6.2 Créditos

11

1 Introdução

Com o rápido aumento dos acessos à Internet em banda larga, por cabo ou ADSL, tem-se também assistido a um interesse cada vez maior em manter sítios individu- ais, não alojados nos seus fornecedores de serviço (ISP) ou em sites de alojamento gratuito, mas antes nos seus próprios PC com os seus próprios servidores web. Também nas redes internas das empresas se tem verificado uma proliferação de mini-sítios, quer individuais quer a nível de secção ou departamento, alojados nos próprios PC em vez de no servidor central da empresa.

Muitas vezes o mais difícil é escolher, instalar e configurar um servidor web, uma vez que, melhor ou pior, todos sabem fazer as páginas HTML necessárias, usando desde editores de texto básicos a processadores de texto, editores HTML especiali- zados e mesmo ferramentas avançadas de criação de sites.

Este é um pequeno tutorial que pretende mostrar como instalar e configurar o ser- vidor web com a maior base instalada do mundo (ou pelo menos é o que dizem as estatísticas 1 — o Apache — a partir do código fonte, sobre Linux. Se preferires, podes também instalar uma versão já compilada (binária) quer sobre Linux, quer sobre outro sistema operativo (MS Windows incluído). Nesse caso, apenas a parte da configuração deste documento te poderá ser útil.

2 Instalação

Antes de iniciar de iniciar a instalação, convém verificar se o Apache já não está instalado no teu sistema, visto que algumas distribuições o instalam por omissão. Deves consultar a documentação o teu sistema para saber como verificar se esta aplicação já está instalada (podes verificar se ele está a correr abrindo um navega- dor web no endereço http://127.0.0.1). Em caso afirmativo, o melhor será prova- velmente passares ao próximo capítulo para configurar o sistema já existente. Toma em atenção que tens de procurar o ficheiro de configuração do Apache, httpd.conf.

Para instalar o servidor, a primeira coisa a fazer é transferir a versão que preten-

2

demos instalar do site oficial do Apache (http://www.apache.org/) ou de um dos vá- rios mirrors disponíveis. Em Portugal pode usar-se o da telepac:

Existem sempre várias distribuições disponíveis mas o melhor é, normalmente, usar a última versão para a nossa plataforma. Neste caso deves escolher a última versão em código fonte para Unix, que deverá chamar-se qualquer coisa como httpd-2.2.x.tar.bz2. Também poderíamos ter escolhido uma versão binária mas, como a maior parte das distribuições de Linux tem a vantagem de trazer consigo as ferramentas necessárias para a compilação de aplicações, o ideal é aproveitar- mo-nos desse facto e compilarmos nós mesmos o servidor, para que ele fique o mais ajustado possível à máquina e sistema operativo onde ficará instalado.

Para alguns dos passos seguintes devem ser dados será necessário ter privilégios de administrador. Em Ubuntu, ou noutras distribuições que, tal como esta, não te- nham a conta de root activa, deve usar-se o comando sudo antes de qualquer des- tes passos. Para as outras, os comandos serão precedidos de su -c, que os execu- ta como root. É também necessário um ambiente em que se possam compilar pro- gramas de C (compilador gcc, make, etc.).

Em primeiro lugar descompacta-se o ficheiro transferido para uma directoria onde possa ser compilado (qualquer uma serve):

$ cd local/onde/está/o/ficheiro

$ tar xvfj httpd-2.2.x.tar.bz2

Nota que local/onde/está/o/ficheiro deve ser substituído pelo caminho para a directoria onde guardaste o ficheiro httpd-2.2.x.tar.bz2 que acabaste de trans- ferir (substitui x pelo número da versão que transferiste; deves fazer o mesmo sempre que este número aparecer daqui em diante).

Neste momento deves ter uma directoria chamada httpd-2.2.x debaixo da direc- toria onde descompactaste o ficheiro. Para compilar o programa deves então mu- dar para essa directoria e executar a sequência de comandos habitual nestas situa- ções:

$ cd httpd-2.2.x/

$ ./configure --prefix=/usr/local/apache-2.2.x

$ make

$ su -c “make install”

$ su -c “ln -s /usr/local/apache-2.2.x /usr/local/apache”

O parâmetro --prefix=/usr/local/apache-2.2.x indica a directoria onde irá ser instalado o servidor e podes alterá-la à tua vontade. Eu prefiro instalar cada ver- são do Apache numa directoria única debaixo de /usr/local. Em seguida crio uma ligação simbólica, /usr/local/apache, apontando para a versão em uso cor- rente. Desta forma posso instalar uma nova versão com a anterior em funciona-

3

mento, bastando-me alterar a ligação simbólica e reiniciar o servidor no fim da ins- talação para colocar a nova versão online. Tenho ainda a vantagem de se, por al- guma razão, a nova versão não funcionar correctamente, bastar alterar novamente

a ligação simbólica para colocar de novo a versão anterior a funcionar.

Em todos os exemplos seguintes irei assumir que o Apache está instalado neste lo-

cal pelo que, se o colocaste noutro sítio, deves também modificar os exemplos para

o reflectir.

Se tudo correu bem, podes agora testar a tua instalação iniciando o servidor com o

comando:

$ su -c “/usr/local/apache/bin/apachectl start”

e, com um navegador (Firefox, Konqueror, etc.), tentar visualizar a página por omissão do teu novo servidor digitando o endereço http://127.0.0.1/ . Se apa- recer uma página felicitando-te por teres instalado o Apache, então parabéns: tens tudo bem instalado! Podes então parar o servidor e remover os ficheiros da insta- lação, certificando-te primeiro que já tens o ficheiro original bem guardado (pode ser necessário outra vez).

$ su -c “/usr/local/apache/bin/apachectl stop”

$ cd

$ rm -rf httpd-2.2.x

Como tenho quase a certeza que não queres um servidor web para mostrar as pá- ginas exemplo do Apache, o melhor é configurá-lo para apresentar o teu sítio.

3

Configuração

Antes de iniciar a configuração propriamente dita, convém decidir qual irá ser a di- rectoria raiz do teu site. Neste exemplo vou usar /home/www como raiz e /home/www/cgi-bin para guardar os scripts CGI. Para criar estas directorias de- ves dar os seguintes comandos na consola:

$

su -c “mkdir /home/www”

$

su -c “mkdir /home/www/cgi-bin”

O

Apache configura-se editando o seu ficheiro de configuração httpd.conf na di-

rectoria conf localizada na raiz da instalação do servidor (/usr/local/apache, no nosso exemplo). Podes usar o teu editor favorito — vi, emacs, Kate — mas lembra-

te que tens de ter privilégios de administrador para conseguir alterar o ficheiro.

Abre então o ficheiro /usr/local/apache/conf/httpd.conf e segue, do topo para baixo, as alterações a fazer. Podes editar o ficheiro com este comando (substitui vi pelo nome do teu editor preferido):

4

$ su -c “vi /usr/local/apache/conf/httpd.conf”

3.1 Endereço do administrador do site

Procura uma secção como a seguinte

#

ServerAdmin: Your address, where problems with the server should be

#

e-mailed. This address appears on some server-generated pages, such

#

as error documents. e.g. admin@your-domain.com

#

ServerAdmin you@example.com

Aqui deves colocar o endereço de correio electrónico que desejas que apareça nal- gumas páginas geradas automaticamente (como páginas de erros, etc). Por exem-

plo:

#

ServerAdmin: Your address, where problems with the server should be

#

e-mailed. This address appears on some server-generated pages, such

#

as error documents. e.g. admin@your-domain.com

#

ServerAdmin webmaster@webserver.com

O endereço do administrador deste sítio seria então webmaster@server.com .

3.2 Nome do sítio web

O nome e porto que o servidor para se identificar pode ser adivinhado pelo Apache

a partir da informação do servidor DNS ou configuração local, mas é melhor confi- gurá-lo usando a directiva ServerName, para evitar problemas:

#

ServerName gives the name and port that the server uses to identify itself.

#

This can often be determined automatically, but we recommend you specify

#

it explicitly to prevent problems during startup.

#

#

If your host doesn't have a registered DNS name, enter its IP address here.

#

#ServerName www.example.com:80

altera para o nome e porto em que vai funcionar o teu servidor:

#

ServerName gives the name and port that the server uses to identify itself.

#

This can often be determined automatically, but we recommend you specify

#

it explicitly to prevent problems during startup.

#

#

If your host doesn't have a registered DNS name, enter its IP address here.

#

ServerName webserver.com:80

3.3 Raiz do site

Para alterar a directoria colocada por omissão pelo programa de instalação para a directoria raiz do teu site, altera a secção seguinte:

# DocumentRoot: The directory out of which you will serve your

5

#

documents. By default, all requests are taken from this directory, but

#

symbolic links and aliases may be used to point to other locations.

#

DocumentRoot "/usr/local/httpd-2.2.x/htdocs"

para:

#

DocumentRoot: The directory out of which you will serve your

#

documents. By default, all requests are taken from this directory, but

#

symbolic links and aliases may be used to point to other locations.

#

DocumentRoot "/home/www"

3.4

Autorizar a execução de CGIs e Server-Side Includes

(SSI)

Deves mudar novamente o caminho da DocumentRoot para a directoria que esco- lheste e alterar as opções na secção logo abaixo:

#

This should be changed to whatever you set DocumentRoot to.

#

<Directory "/usr/local/apache/htdocs">

(

)

#

The Options directive is both complicated and important. Please see

#

http://httpd.apache.org/docs/2.2/mod/core.html#options

#

for more information.

#

Options Indexes FollowSymLinks

deve ficar como:

#

#

This should be changed to whatever you set DocumentRoot to.

#

<Directory "/home/www">

(

)

#

The Options directive is both complicated and important. Please see

#

http://httpd.apache.org/docs/2.2/mod/core.html#options

#

for more information.

#

Options Indexes FollowSymLinks Includes ExecCGI

3.5 Nomes dos ficheiros de índice

É conveniente indicar ao servidor quais os ficheiros a serem visualizados por omis- são numa directoria quando apenas o nome da directoria é pedido, tal como quan- do se digita http://127.0.0.1 na linha de endereço de um navegador.

6

O Apache já vem com um nome pré-configurado, index.html, mas convém adicio- nar também index.shtml para que possas ter páginas com SSI como índice da di- rectoria. Para adicionar esse nome altera a secção seguinte da forma que se indi- ca.

#

DirectoryIndex: sets the file that Apache will serve if a directory

#

is requested.

#

<IfModule dir_module> DirectoryIndex index.html </IfModule>

para:

#

#

DirectoryIndex: sets the file that Apache will serve if a directory

#

is requested.

#

<IfModule dir_module> DirectoryIndex index.html index.shtml </IfModule>

3.6 Indicar directoria para os CGIs

Todos os ficheiros nesta directoria serão executados e não enviados para o cliente, independentemente do seu tipo, ao contrário do que acontece nas outras directori- as. Deves mudar a directoria colocada por omissão para a escolhida por ti:

#

ScriptAlias: This controls which directories contain server scripts.

#

ScriptAliases are essentially the same as Aliases, except that

#

documents in the target directory are treated as applications and

#

run by the server when requested rather than as documents sent to the

#

client. The same rules about trailing "/" apply to ScriptAlias

#

directives as to Alias.

#

ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.4/cgi-bin/"

(

)

#

"/usr/local/apache-2.2.4/cgi-bin" should be changed to whatever your

#

ScriptAliased CGI directory exists, if you have that configured.

#

<Directory "/usr/local/apache-2.2.4/cgi-bin">

para:

#

ScriptAlias: This controls which directories contain server scripts.

#

ScriptAliases are essentially the same as Aliases, except that

#

documents in the target directory are treated as applications and

#

run by the server when requested rather than as documents sent to the

#

client. The same rules about trailing "/" apply to ScriptAlias

#

directives as to Alias.

#

ScriptAlias /cgi-bin/ "/home/www/cgi-bin/"

( )

7

#

"/usr/local/apache-2.2.4/cgi-bin" should be changed to whatever your

#

ScriptAliased CGI directory exists, if you have that configured.

#

<Directory "/home/www/cgi-bin">

3.7 Indicar a extensão dos ficheiros CGI

Todos os ficheiros com esta extensão serão executados, independentemente do seu tipo e da directoria em que se encontrem. Para activar esta opção basta desco- mentar a sua linha:

#

To use CGI scripts outside of ScriptAliased directories:

#

(You will also need to add "ExecCGI" to the "Options" directive.)

#

#AddHandler cgi-script .cgi

para:

#

To use CGI scripts outside of ScriptAliased directories:

#

(You will also need to add "ExecCGI" to the "Options" directive.)

#

AddHandler cgi-script .cgi

3.8 Indicar extensão dos ficheiros SSI

Tal como na opção anterior, é necessário descomentar a linha com esta configura- ção para a activar, mas também indicar ao servidor que os ficheiros com a exten- são .shtml são ficheiros do tipo HTML:

#

To parse .shtml files for server-side includes (SSI):

#

(You will also need to add "Includes" to the "Options" directive.)

#

#AddType text/html .shtml #AddOutputFilter INCLUDES .shtml

deve ficar:

#

To parse .shtml files for server-side includes (SSI):

#

(You will also need to add "Includes" to the "Options" directive.)

#

AddType text/html .shtml AddOutputFilter INCLUDES .shtml

E pronto, a configuração está concluída, para as opções mais usuais. Se necessita- res de outros serviços, deves consultar o manual do Apache.

8

4

Testar a configuração

Para confirmar que a configuração ficou bem feita, podes colocar alguns ficheiros nas directorias que criaste para o teu servidor e verificar se eles são bem servidos pelo Apache para o teu navegador. Seguem-se alguns ficheiros que testam toda a configuração anterior, incluindo CGI e SSI.

Ficheiro: /home/www/index.shtml

<html> <head> <title>O meu sítio web usando Apache</title> </head> <body>

<h1>O meu sítio web usando Apache</h1>

<p>Este é o meu sítio web. Para verificar se está a trabalhar como deve, verifica se a data apresentada em baixo é a data do sistema e que uma listagem do conteúdo da directoria raiz aparece logo a seguir.</p>

<p><!--#echo var="DATE_LOCAL" --></p>

<tt><!--#include virtual="/root_listing.cgi" --></tt>

<p>A mensagem abaixo é gerada por um <i>script</i> na directoria <tt>cgi-bin</tt>.</p>

<span style="color:white; background:red;"> <!--#include virtual="/cgi-bin/script" --> </span>

</body>

</html>

Ficheiro: /home/www/root_listing.cgi

#!/bin/bash

# header HTTP

echo "Content-type: text/html" echo

# listar a directoria corrente

ls .

Ficheiro: /home/www/cgi-bin/script

#!/bin/bash

# header HTTP

echo "Content-type: text/html" echo

# escrever uma mensagem engraçada

echo "Chegámos ao fim!"

9

Para que os scripts CGI sejam executados necessitam de ter permissão para isso do sistema operativo. Podes dar-lhes essa permissão com os seguintes comandos:

$ su -c “chmod 755 /home/www/root_listing.cgi”

$ su -c “chmod 755 /home/www/cgi-bin/script”

Agora inicia o teu servidor e liga-te a ele com um navegador, tal como fizeste ante- riormente. Deve aparecer uma página com o texto que digitaste, a data corrente do teu PC, uma listagem da directoria /home/www, e a mensagem Chegámos ao fim! a branco sobre um fundo vermelho. Se isso não aconteceu, verifica todos os passos anteriores. Se tudo está bem e continuas com problemas, escreve-me a di- zer o que se passa — talvez eu consiga solucioná-los, apesar de não ser nenhum expert na matéria.

5 Iniciar o Apache no arranque do sistema

Para configurar o sistema para iniciar o Apache ao arrancar, segue estes passos:

Coloca uma ligação simbólica para o apachectl na directoria dos scripts de arran- que dos serviços do sistema e ligações para o arranque do serviço nos modos dese- jados:

$ su -c “ln -s /usr/local/bin/apachectl /etc/init.d/apache”

$ su -c “ln -s /etc/init.d/apache /etc/rc2.d/S90apache”

$ su -c “ln -s /etc/init.d/apache /etc/rc3.d/S90apache”

$ su -c “ln -s /etc/init.d/apache /etc/rc4.d/S90apache”

$ su -c “ln -s /etc/init.d/apache /etc/rc5.d/S90apache”

Deves verificar qual o modo em que realmente desejas que o Apache seja iniciado no arranque, usando as ferramentas do teu sistema. Também é aconselhável veri- ficar em que lugar deve o Apache ser iniciado durante o arranque. Isso é definido pelo número que se encontra antes do nome do serviço — para saberes a ordem de arranque dos serviços em cada modo, basta listar a directoria de arranque desse modo; por exemplo, para o modo 2:

$ ls /etc/rc2.d/

Nota que o Apache só deve arrancar depois de todos os serviços que tenham a ver com a rede e com a activação de firewalls e proxys.

6 Glossário e créditos

6.1

Glossário

CGI: Common Gateway Interface — Nome de um protocolo de comunicação en-

10

tre o servidor web e outros programas executáveis pelo sistema operativo. O servidor web fornece ao script CGI todas as informações sobre o pedido enviado pelo cliente (navegador) e sobre o seu estado e, normalmente, o script devolve a resposta através do seu ficheiro de saída (STDOUT), que o servidor enviará ao cliente.

SSI: Server Side Includes — São directivas que podem ser incluídas em páginas HTML e que serão avaliadas ao mesmo tempo que a página está a ser servida, evitando o uso de um script CGI para toda a página.

6.2

Créditos

Olavo Santos: Correcção sobre o endereço de loop-back: passar a usar 127.0.0.1 em vez de localhost, que pode não estar disponível; Nota sobre a pré- instalação por omissão do Apache por parte de algumas distribuições.

11