Escolar Documentos
Profissional Documentos
Cultura Documentos
Apache
Apache
e Configurao do Apache
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
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
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
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
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
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
3.2
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
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
3.5
Please see
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
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/"
(...)
3.7
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
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.
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
10
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