You are on page 1of 11

Guia Rpido de Instalao e Configurao do Apache

verso 2.0, Janeiro 2007 por Antnio Manuel Dias ammdias@gmail.com

Copyright 2003 - 2007 Antnio Manuel Dias Este documento pode ser copiado e distribudo segundo a licena Creative Commons Atribuio Partilha nos Termos da Mesma Licena 2.5. Esta licena permite que o documento seja copiado, distribudo e lido sob as seguintes condies:

Atribuio. O utilizador deve dar crdito ao autor original, da forma especificada pelo autor ou licenciante. Partilha nos termos da mesma Licena. Se alterar, transformar, ou criar outra obra com base nesta, s poder distribuir a obra resultante atravs de uma licena idntica a esta.

Para cada reutilizao ou distribuio, dever deixar claro para outros os termos da licena desta obra. Qualquer uma destas condies podem ser renunciadas, desde que obtenha permisso por parte do autor. Qualquer direito de uso legtimo (ou "fair use") concedido por lei, ou qualquer outro direito protegido pela legislao local, no so em hiptese alguma afectados pelo disposto acima. Para mais informaes, pode consultar o texto jurdico, na ntegra, no endereo web: http://creativecommons.org/licenses/by-sa/2.5/pt/legalcode

Contedo
1 Introduo ..................................................................................... ......................... 2 2 Instalao ................................................................................... ............................ 2 3 Configurao .................................................................................. ........................ 4 3.1 Endereo do administrador do site ............................................................... 5 . 3.2 Nome do stio web ....................................................................... ................... 5 3.3 Raiz do site ...................................................................... ............................... 5 3.4 Autorizar a execuo 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 extenso dos ficheiros CGI ......................................... ................... 8 .

3.8 Indicar extenso dos ficheiros SSI ................................................................ 8 . 4 Testar a configurao ...................................................................................... ....... 9 5 Iniciar o Apache no arranque do sistema ........................................................... 10 . 6 Glossrio e crditos ........................................................................................ ...... 10 6.1 Glossrio ............................................................................... ........................ 10 6.2 Crditos .................................................................................................... 11 .....

Introduo

Com o rpido aumento dos acessos Internet em banda larga, por cabo ou ADSL, tem-se tambm assistido a um interesse cada vez maior em manter stios individuais, no alojados nos seus fornecedores de servio (ISP) ou em sites de alojamento gratuito, mas antes nos seus prprios PC com os seus prprios servidores web. Tambm nas redes internas das empresas se tem verificado uma proliferao de mini-stios, quer individuais quer a nvel de seco ou departamento, alojados nos prprios PC em vez de no servidor central da empresa. Muitas vezes o mais difcil escolher, instalar e configurar um servidor web, uma vez que, melhor ou pior, todos sabem fazer as pginas HTML necessrias, usando desde editores de texto bsicos a processadores de texto, editores HTML especializados e mesmo ferramentas avanadas de criao de sites. Este um pequeno tutorial que pretende mostrar como instalar e configurar o servidor web com a maior base instalada do mundo (ou pelo menos o que dizem as estatsticas1 o Apache a partir do cdigo fonte, sobre Linux. Se preferires, podes tambm instalar uma verso j compilada (binria) quer sobre Linux, quer sobre outro sistema operativo (MS Windows includo). Nesse caso, apenas a parte da configurao deste documento te poder ser til.

Instalao

Antes de iniciar de iniciar a instalao, convm verificar se o Apache j no est instalado no teu sistema, visto que algumas distribuies o instalam por omisso. Deves consultar a documentao o teu sistema para saber como verificar se esta aplicao j est instalada (podes verificar se ele est a correr abrindo um navegador web no endereo http://127.0.0.1). Em caso afirmativo, o melhor ser provavelmente passares ao prximo captulo para configurar o sistema j existente. Toma em ateno que tens de procurar o ficheiro de configurao do Apache, httpd.conf. Para instalar o servidor, a primeira coisa a fazer transferir a verso que preten1 ver: http://news.netcraft.com/archives/web_server_survey.html

demos instalar do site oficial do Apache (http://www.apache.org/) ou de um dos vrios mirrors disponveis. Em Portugal pode usar-se o da telepac: ftp://ftp.telepac.pt/pub/apache/httpd. Existem sempre vrias distribuies disponveis mas o melhor , normalmente, usar a ltima verso para a nossa plataforma. Neste caso deves escolher a ltima verso em cdigo fonte para Unix, que dever chamar-se qualquer coisa como httpd-2.2.x.tar.bz2. Tambm poderamos ter escolhido uma verso binria mas, como a maior parte das distribuies de Linux tem a vantagem de trazer consigo as ferramentas necessrias para a compilao de aplicaes, o ideal aproveitarmo-nos desse facto e compilarmos ns mesmos o servidor, para que ele fique o mais ajustado possvel mquina e sistema operativo onde ficar instalado. Para alguns dos passos seguintes devem ser dados ser necessrio ter privilgios de administrador. Em Ubuntu, ou noutras distribuies que, tal como esta, no tenham a conta de root activa, deve usar-se o comando sudo antes de qualquer destes passos. Para as outras, os comandos sero precedidos de su -c, que os executa como root. tambm necessrio um ambiente em que se possam compilar programas 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 substitudo pelo caminho para a directoria onde guardaste o ficheiro httpd-2.2.x.tar.bz2 que acabaste de transferir (substitui x pelo nmero da verso que transferiste; deves fazer o mesmo sempre que este nmero aparecer daqui em diante). Neste momento deves ter uma directoria chamada httpd-2.2.x debaixo da directoria onde descompactaste o ficheiro. Para compilar o programa deves ento mudar para essa directoria e executar a sequncia de comandos habitual nestas situaes:
$ $ $ $ $ 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 parmetro --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 verso do Apache numa directoria nica debaixo de /usr/local. Em seguida crio uma ligao simblica, /usr/local/apache, apontando para a verso em uso corrente. Desta forma posso instalar uma nova verso com a anterior em funciona-

mento, bastando-me alterar a ligao simblica e reiniciar o servidor no fim da instalao para colocar a nova verso online. Tenho ainda a vantagem de se, por alguma razo, a nova verso no funcionar correctamente, bastar alterar novamente a ligao simblica para colocar de novo a verso anterior a funcionar. Em todos os exemplos seguintes irei assumir que o Apache est instalado neste local pelo que, se o colocaste noutro stio, deves tambm modificar os exemplos para o reflectir. Se tudo correu bem, podes agora testar a tua instalao iniciando o servidor com o comando: $ su -c /usr/local/apache/bin/apachectl start e, com um navegador (Firefox, Konqueror, etc.), tentar visualizar a pgina por omisso do teu novo servidor digitando o endereo http://127.0.0.1/ . Se aparecer uma pgina felicitando-te por teres instalado o Apache, ento parabns: tens tudo bem instalado! Podes ento parar o servidor e remover os ficheiros da instalao, certificando-te primeiro que j tens o ficheiro original bem guardado (pode ser necessrio outra vez).
$ su -c /usr/local/apache/bin/apachectl stop $ cd .. $ rm -rf httpd-2.2.x

Como tenho quase a certeza que no queres um servidor web para mostrar as pginas exemplo do Apache, o melhor configur-lo para apresentar o teu stio.

Configurao

Antes de iniciar a configurao propriamente dita, convm decidir qual ir ser a directoria 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 deves 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 configurao httpd.conf na directoria conf localizada na raiz da instalao do servidor (/usr/local/apache, no nosso exemplo). Podes usar o teu editor favorito vi, emacs, Kate mas lembrate que tens de ter privilgios de administrador para conseguir alterar o ficheiro. Abre ento o ficheiro /usr/local/apache/conf/httpd.conf e segue, do topo para baixo, as alteraes a fazer. Podes editar o ficheiro com este comando (substitui vi pelo nome do teu editor preferido):

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

3.1

Endereo do administrador do site

Procura uma seco 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 endereo de correio electrnico que desejas que aparea nalgumas pginas geradas automaticamente (como pginas de erros, etc). Por exemplo:
# 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 endereo do administrador deste stio seria ento webmaster@server.com .

3.2

Nome do stio web

O nome e porto que o servidor para se identificar pode ser adivinhado pelo Apache a partir da informao do servidor DNS ou configurao local, mas melhor configur-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 omisso pelo programa de instalao para a directoria raiz do teu site, altera a seco seguinte:
# 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 "/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 execuo de CGIs e Server-Side Includes (SSI)


Deves mudar novamente o caminho da DocumentRoot para a directoria que escolheste e alterar as opes na seco 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. # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks Please see

deve ficar como:


# # This should be changed to whatever you set DocumentRoot to. # <Directory "/home/www"> (...) # The Options directive is both complicated and important. # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks Includes ExecCGI Please see

3.5

Nomes dos ficheiros de ndice

conveniente indicar ao servidor quais os ficheiros a serem visualizados por omisso numa directoria quando apenas o nome da directoria pedido, tal como quando se digita http://127.0.0.1 na linha de endereo de um navegador.

O Apache j vem com um nome pr-configurado, index.html, mas convm adicionar tambm index.shtml para que possas ter pginas com SSI como ndice da directoria. Para adicionar esse nome altera a seco seguinte da forma que se indica.
# 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 sero executados e no enviados para o cliente, independentemente do seu tipo, ao contrrio do que acontece nas outras directorias. Deves mudar a directoria colocada por omisso 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/" (...)

# "/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 extenso dos ficheiros CGI

Todos os ficheiros com esta extenso sero executados, independentemente do seu tipo e da directoria em que se encontrem. Para activar esta opo basta descomentar 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 extenso dos ficheiros SSI

Tal como na opo anterior, necessrio descomentar a linha com esta configurao para a activar, mas tambm indicar ao servidor que os ficheiros com a extenso .shtml so 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 configurao est concluda, para as opes mais usuais. Se necessitares de outros servios, deves consultar o manual do Apache.

Testar a configurao

Para confirmar que a configurao ficou bem feita, podes colocar alguns ficheiros nas directorias que criaste para o teu servidor e verificar se eles so bem servidos pelo Apache para o teu navegador. Seguem-se alguns ficheiros que testam toda a configurao anterior, incluindo CGI e SSI. Ficheiro: /home/www/index.shtml
<html> <head> <title>O meu stio web usando Apache</title> </head> <body> <h1>O meu stio web usando Apache</h1> <p>Este o meu stio 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 contedo 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 engraada echo "Chegmos ao fim!"

Para que os scripts CGI sejam executados necessitam de ter permisso para isso do sistema operativo. Podes dar-lhes essa permisso 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 anteriormente. Deve aparecer uma pgina com o texto que digitaste, a data corrente do teu PC, uma listagem da directoria /home/www, e a mensagem Chegmos ao fim! a branco sobre um fundo vermelho. Se isso no aconteceu, verifica todos os passos anteriores. Se tudo est bem e continuas com problemas, escreve-me a dizer o que se passa talvez eu consiga solucion-los, apesar de no ser nenhum expert na matria.

Iniciar o Apache no arranque do sistema

Para configurar o sistema para iniciar o Apache ao arrancar, segue estes passos: Coloca uma ligao simblica para o apachectl na directoria dos scripts de arranque dos servios do sistema e ligaes para o arranque do servio nos modos desejados:
$ $ $ $ $ su su su su su -c -c -c -c -c ln ln ln ln ln -s -s -s -s -s /usr/local/bin/apachectl /etc/init.d/apache /etc/init.d/apache /etc/rc2.d/S90apache /etc/init.d/apache /etc/rc3.d/S90apache /etc/init.d/apache /etc/rc4.d/S90apache /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. Tambm aconselhvel verificar em que lugar deve o Apache ser iniciado durante o arranque. Isso definido pelo nmero que se encontra antes do nome do servio para saberes a ordem de arranque dos servios 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 servios que tenham a ver com a rede e com a activao de firewalls e proxys.

6
6.1

Glossrio e crditos
Glossrio

CGI: Common Gateway Interface Nome de um protocolo de comunicao en-

10

tre o servidor web e outros programas executveis pelo sistema operativo. O servidor web fornece ao script CGI todas as informaes sobre o pedido enviado pelo cliente (navegador) e sobre o seu estado e, normalmente, o script devolve a resposta atravs do seu ficheiro de sada (STDOUT), que o servidor enviar ao cliente. SSI: Server Side Includes So directivas que podem ser includas em pginas HTML e que sero avaliadas ao mesmo tempo que a pgina est a ser servida, evitando o uso de um script CGI para toda a pgina.

6.2

Crditos

Olavo Santos: Correco sobre o endereo de loop-back: passar a usar 127.0.0.1 em vez de localhost, que pode no estar disponvel; Nota sobre a prinstalao por omisso do Apache por parte de algumas distribuies.

11

You might also like