Este guia não pretende
ser definitivo, ele somente é utilizado para fins de ensino. Qualquer
configuração adicional é bom olhar no próprio manual que acompanha o software.
Criado por: Marcos
Aurelio Pchek Laureano
Última
alteração: 27/10/2002
Visite a página principal www.laureano.eti.br.
Visite o fórum www.laureano.eti.br/forum para tirar dúvidas.
Considerações
Antes de instalar o
Apache, é bom verificar se ele já não está instalado e rodando no seu micro, já
que algumas distribuições podem instalar o Apache como parte de uma configuração
padrão.
Execute o comando:
# ps -A | grep httpd
Com este comando nós
estamos verificando se o Apache já não está executando.
Você pode utilizar a
versão binária (código executável) que acompanha a sua distribuição, mas o ideal
é baixar os códigos fontes do site do
Apache e compilar.
Procure a última versão
para download
(quando este manual foi escrito a última versão disponível era 2.0.43) e baixe o
arquivo httpd-2.0.43.tar.gz.
Execute o comando (copie
o arquivo para o diretório /tmp
ou algum outro da sua preferência):
# tar xvfx httpd-2.0.43.tar.gz
Neste momento você deve
ter um diretório chamado http-2.0.43
no seu diretório atual.
Execute os comandos:
# cd http-2.0.43
#
./configure --prefix=/usr/local/apache
# make
# make install
O parâmetro
--prefix=/usr/local/apache
indica o diretório de instalação do Apache.
Após a compilação e
instalação (se não apareceu nenhuma mensagem de erro), digite o comando abaixo
para testar:
Dentro do seu
browser
preferido digite http://127.0.0.1,
se aparecer uma tela de boas vindas o Apache está instalado corretamente, falta
apenas configura-lo agora.
Antes de configurar, é
bom apagar os arquivos de instalação (para liberar espaço).
# rm -rf
httpd.2.0.43.tar.gz
Pare o Apache antes de
configura-lo.
Antes de começarmos a
configuração, devemos definir qual será o diretório raiz do nosso servidor. Eu
vou utilizar /home/www
como raiz e /home/www/cgi-bin
para os scripts CGI.
# mkdir /home/www/cgi-bin
Lembre-se de garantir que
estes diretórios estejam com a permissão 751 (total para usuário, leitura e
execução para grupo e execução para outros). Se não estiver, execute o comando:
# chmod 751 /home/www/cgi-bin
Agora, basta abrir o
arquivo /usr/local/apache/conf/httpd.conf
e realizar as alterações que se seguem.
Aqui configuramos o hostname do servidor, você poderá acessar as suas páginas locais através do endereço configurado na seqüência ou pelo endereço de loop-back (127.0.0.1). Não é necessário modificar para a sua configuração funcionar.
#
# 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 this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName host.domain.name:80
para:
#
# 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 this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
ServerName www.laureano.tk:80
Procure uma sessã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@your.address
Aqui devemos colocar o
endereço de e-mail que aparecem nas páginas geradas automaticamente (como
páginas 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 marcos@laureano.com.br
Para alterar o diretório padrão do programa de instalação
para o diretório do nosso site.
#
#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/apache/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"
Para liberar o acesso a
execução de CGI’s e Server-Side
Includes devemos alterar novamente
o DocumentRoot
das outras sessões.
#
#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.0/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.0/mod/core.html#options
#for
more information.
#
Options
Indexes FollowSymLinks Includes ExecCGI
É recomendável informar
ao servidor quais os arquivos que devem ser visualizados por padrão num
diretório quando um arquivo não é especificado. O Apache já vem com 2 nomes
configurados: index.html
e index.html.var,
é bom incluir o index.shtml
que possamos ter páginas com suporte a SSI.
#The
index.html.var file (a type-map) is used to deliver content-
#negotiated documents. The MultiViews Option can be used for the
#same
purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var
para:
#The
index.html.var file (a type-map) is used to deliver content-
#negotiated documents. The MultiViews Option can be used for the
#same
purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var index.shtml
#
#ScriptAlias:
This controls which directories contain server scripts.
#ScriptAliases
are essentially the same as Aliases, except that
#documents in the realname 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/cgi-bin/"
(...)
#"/usr/local/apache/cgi-bin"
should be changed to whatever your ScriptAliased
#CGI
directory exists, if you have that configured.
#
<Directory "/usr/local/apache/cgi-bin">
para:
#
#ScriptAlias:
This controls which directories contain server scripts.
#ScriptAliases
are essentially the same as Aliases, except that
#documents in the realname 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/cgi-bin"
should be changed to whatever your ScriptAliased
#CGI directory exists, if you have that configured.
#
<Directory "/home/www/cgi-bin">
Nesta sessão serão
informados quais as extensões de arquivos serão aceitas para scripts CGI's. Um
script cgi pode ser de qualquer tipo (perl,
bash,
binário c, etc...) e pode estar em qualquer diretório.
Para habilitar, basta descomentar
a 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
Coma no item anterior,
basta descomentar a linha indicada. Também devemos indicar que arquivos com a
extensão .shtml
são arquivos 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
Para testarmos a
configuração (verificar a execução dos scripts CGI e o suporte a SSI), vamos
criar alguns arquivos para testes e disponibilizar nos diretórios para acesso
via browser.
<html>
<head>
<title>Minha Página
Utilizando o Apache</title>
<head>
<body>
<h1> Minha Página
Utilizando o Apache </h1>
<p>Esta é minha
página. Ela existe somente para testar as configurações.
Em seguida deverá
aparecer a data/hora local e uma listagem do diretório principal.</p>
<p><!--#echo var="DATE_LOCAL"
--></p>
<tt>
<!--#include virtual="/root_listagem.cgi" -->
</tt>
<p>A mensagem
seguinte deverá ser gerada por um script que está no diretório cgi-bin.</p>
<span
style="color:white; background:red;">
<!--#include virtual="/cgi-bin/teste_script" -->
</span>
</body>
<html>
#!/bin/bash
#Protocolo
HTTP
echo
“Content-type: text/html”
echo
ls .
#!/bin/bash
#Protocolo
HTTP
echo
“Content-type: text/html”
echo
echo “Teste de
mensagem !!!”
Não podemos esquecer de
liberar a permissão de execução para outros nestes arquivos:
# chmod
751 /home/www/cgi-bin/teste_script
Agora basta executar no
browser
http://127.0.0.1
e http://127.0.0.1/teste_script.
Existem várias formas de fazer, mas esta resolve: Acrescente as seguintes linhas ao fim do arquivo /etc/rc.d/rc.local (no caso do Red Hat) ou /etc/rc.d/boot.local (no caso do SUSE).
# Iniciar o Apache
echo “Iniciando o
servidor Apache”
/usr/local/apache/bin/apachectl
start
Não esqueça de
inicializar a máquina.
Como a idéia é
possibilitar a criação de páginas pessoais para os usuários cadastrados no Linux,
devemos fazer o seguinte:
Criar o diretório
public_html
no diretório home do usuário e liberar acesso de leitura para o diretório
home
e leitura e execução para o diretório
public_html.
# mkdir
/home/<usr>/public_html
# chmod 751 /home/<usr>
# chmod 755 /home/<usr>/public_html
Crie o seguinte um
arquivo chamado index.html
e disponibilize no diretório
public_html.
<html>
<title>Esta é a
minha página pessoal</title>
<body>
Oi, se você estiver
vendo esta página é porque está tudo corretamente configurado !!!
</body>
</html>
Libere acesso de leitura
para o arquivo.
E no
browser
de sua preferência tente acessar a página:
http://127.0.0.1/~<usr>.
Se o seu usuário se chama
mlaureano.
Você iria executar os seguintes passos:
# mkdir
/home/mlaureano/public_html
# chmod 751 /home/mlaureano
# chmod
755 /home/mlaureano/public_html
# cp
index.html /home/mlaureano/public_html
# chmod
644 /home/mlaureano/public_html
E no seu browser digitar:
http://127.0.0.1/~mlaureano
se aparecer ŕ página de teste, está tudo configurado corretamente.
O suEXEC fornece aos usuários do Apache a habilidade de executar programas CGI e SSI sob um usuário diferente do que está utilizando o servidor Web. Isto evita que quando um programa CGI ou SSI for executado, isso seja feito pelo mesmo usuário que está executando o servidor.
Para habilitar o suEXEC teremos que re-compilar o Apache e solicitar a inclusão do suEXEC.
Não será explicado aqui o que cada opção faz, qualquer dúvida, consulte o manual do Apache ou digite:
# ./configure –help
O comando para habilitar o suEXEC
# ./configure --prefix=/usr/local/apache \
--enable-suexec \
--with-suexec-caller=nobody \
--with-suexec-userdir=public_html \
--with-suexec-uidmin=500 \
--with-suexec-gidmin=500
Não se esqueça de executar os comandos para compilar e instalar:
# make
# make install
Você deve parar e depois re-iniciar o servidor Apache (se ele já estiver rodando é claro).
# /usr/local/apache/bin/apachectl
stop
Após o start do Apache deve ter uma linha assim no arquivo /usr/local/apache/logs/error_log
[Wed Oct 23 14:36:51 2002] [notice] suEXEC mechanism enabled (wrapper: /usr/loca
l/apache/bin/suexec)
Para testar, crie um programa cgi no diretório public_html de algum usuário.
Exemplo de programa para teste:
#!/bin/bash
echo “Content-type: text/plain”
echo
echo “O usuário que está executando é:”
id