Instalando e Configurando o Apache

 

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

marcos@laureano.eti.br

 

Ú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

 

Verificando se já não está instalando

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.

 

Instalado o Apache

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.

Agora temos que compilar e instalar o Apache.

 

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:

# /usr/local/apache/bin/apachectl start

 

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 http-2.0.43

# rm -rf httpd.2.0.43.tar.gz

 

Pare o Apache antes de configura-lo.

# /usr/local/apache/bin/apachectl stop

 

Configuração

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

# 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

# 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.

 

Configurando o Nome do Site

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

 

 

 

Configurando o Administrador do Site

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

 

Configurando o Diretório Raiz do Site

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"

 

Configurando a Liberação de Execução de CGI’s e Server-Side Includes (SSI)

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

 

Configurando os Nomes dos Arquivos Padrões

É 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

 

Configurando o Diretório para CGI's

 

#

#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">

 

Configurando a Extensão dos Arquivos CGI

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

 

Configurando a Extensão dos arquivos SSI

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

 

Testando a configuração

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.

 

Arquivo: /home/www/index.shtml

<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>

 

Arquivo: /home/www/root_listagem.cgi

#!/bin/bash

#Protocolo HTTP

echo “Content-type: text/html”

echo

ls .

 

Arquivo: /home/www/cgi-bin/teste_script

#!/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/root_listagem.cgi

# 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.

 

Preparando o servidor para iniciar o Apache automaticamente

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.

 

Criando Páginas Pessoais para os Usuários Cadastrados

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. Isto é necessário porque o Apache vai utilizar o usuário nobody para acessar os diretórios e arquivos.

 

# 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.

 

Arquivo: index.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.

# chmod 644 index.html

 

E no browser de sua preferência tente acessar a página: http://127.0.0.1/~<usr>.

Exemplo:

 

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/index.html

 

E no seu browser digitar: http://127.0.0.1/~mlaureano se aparecer ŕ página de teste, está tudo configurado corretamente.

 

Configurando a Execução de  CGI para Outros Usuários

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

# /usr/local/apache/bin/apachectl start

 

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:

 

Arquivo: teste.cgi

#!/bin/bash

echo “Content-type: text/plain”

echo

echo “O usuário que está executando é:”

id