Índice
Esta capítulo documenta a configuração, personalização, introdução aos mecanismos de autenticação e controle de acesso do Apache, sistema proxy, virtual hosting, e exemplos de configuração do servidor httpd. Ele não tem como objetivo ser uma referência completa de configuração, mas sim abordar didaticamente o assunto.
O servidor web é um programa responsável por disponibilizar páginas, fotos, ou qualquer outro tipo de objeto ao navegador do cliente. Ele também pode operar recebendo dados do cliente, processando e enviando o resultado para que o cliente possa tomar a ação desejada (como em aplicações CGI's, banco de dados web, preenchimento de formulários, etc).
O Apache é um servidor Web extremamente configurável,
robusto e de alta performance desenvolvido por uma equipe de voluntários
(conhecida como Apache Group
) buscando criar um servidor web
com muitas características e com código fonte disponível gratuitamente via
Internet. Segundo a Netcraft (http://www.netcraft.com/), o
Apache é mais usado que todos os outros servidores web do
mundo juntos.
Este capítulo não tenta ser um guia completo ao Apache, mas tentará mostrar como sua estrutura é organizada, as diretivas principais de configuração, diretivas de segurança, virtual hosting, proxy, o uso de utilitários de gerenciamento do servidor, como personalizar algumas partes do servidor e programas úteis de terceiros para análise e diagnóstico do servidor web. Não deixe também de ver “Exemplo comentado de um arquivo de configuração do Apache” pois contém diretivas básicas de configuração comentadas e explicações interessante e faz parte do aprendizado.
É assumido que esteja usando a versão 1.3.22 do apache. As explicações contidas aqui podem funcionar para versões posteriores, mas é recomendável que leia a documentação sobre modificações no programa (changelog) em busca de mudanças que alterem o sentido das explicações fornecidas aqui.
O Apache tem como base o servidor web NCSA 1.3 (National Center of Supercomputing Applications), que foi desenvolvido por Rob McCool. Quando Rob deixou o NCSA, o desenvolvimento foi interrompido, assim muitos desenvolvedores buscaram personalizar sua própria versão do NCSA ou adicionar mais características para atender as suas necessidades. Neste momento começa a história do Apache com Brian Behlendorf e Cliff Skolnick abrindo uma lista de discussão para interessados no desenvolvimento, conseguindo espaço em um servidor doado pela HotWired e trocando patches corrigindo problemas, adicionando recursos e discutindo idéias com outros desenvolvedores e hackers interessados neste projeto.
A primeira versão oficial do Apache foi a 0.6.2, lançada em Abril de 1995 (neste período a NCSA retomava o desenvolvimento de seu servidor web, tendo como desenvolvedores Brandon Long e Beth Frank que também se tornaram membros especiais do grupo Apache, compartilhando idéias sobre seus projetos).
Nas versões 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as plataformas Win32 (não obtendo o mesmo desempenho que em plataformas UNIX mas sendo melhorado gradativamente).
Um formulário está disponível na Web para o envio de correções/sugestões em
http://www.apache.org/bug_report.html/
.
Uma lista de anuncio sobre o Apache está disponível em
<apache-announce@apache.org>
que divulgam correções, novas versões
e realização de eventos.
Mais detalhes sobre o desenvolvimento do Apache podem ser visualizadas na URL
http://dev.apache.org/
.
Abaixo estão algumas características que fazem esse servidor web o preferido entre os administradores de sistemas:
Possui suporte a scripts cgi usando linguagens como Perl, PHP, Shell Script, ASP, etc.
Suporte a autorização de acesso podendo ser especificadas restrições de acesso separadamente para cada endereço/arquivo/diretório acessado no servidor.
Autenticação requerendo um nome de usuário e senha válidos para acesso a alguma página/sub-diretório/arquivo (suportando criptografia via Crypto e MD5).
Negociação de conteúdo, permitindo a exibição da página Web no idioma requisitado pelo Cliente Navegador.
Suporte a tipos mime.
Personalização de logs.
Mensagens de erro.
Suporte a virtual hosting (é possível servir 2 ou mais páginas com endereços/ portas diferentes através do mesmo processo ou usar mais de um processo para controlar mais de um endereço).
Suporte a IP virtual hosting.
Suporte a name virtual hosting.
Suporte a servidor Proxy ftp e http, com limite de acesso, caching (todas flexivelmente configuráveis).
Suporte a proxy e redirecionamentos baseados em URLs para endereços Internos.
Suporte a criptografia via SSL,Certificados digitais
Módulos DSO (Dynamic Shared Objects) permitem adicionar/remover funcionalidades e recursos sem necessidade de recompilação do programa.
Pacote:
Utilitários:
apache
- Servidor Web Principal
apachectl
- Shell script que faz interface com o
apache de forma mais amigável
apacheconfig
- Script em Perl para configuração interativa
básica do Apache
htpasswd
- Cria/Gerencia senhas criptografadas Crypto/MD5
htdigest
- Cria/Gerencia senhas criptografadas Crypto/MD5
dbmmanage
- Cria/Gerencia senhas em formato DBM (Perl)
logresolve
- Faz um DNS reverso dos arquivos de log do
Apache para obter o endereço de hosts com base nos endereços
IP's.
ab
- Apache Benchmarcking - Ferramenta de medida de
desempenho do servidor Web Apache.
Por padrão, os arquivos de configuração do Apache residem no
diretório /etc/apache
:
Arquivo de configuração principal do Apache, possui diretivas que controlam a operação do daemon servidor. Um arquivo de configuração alternativo pode ser especificado através da opção "-f" da linha de comando.
Contém diretivas que controlam a especificação de documentos que o servidor oferece aos clientes. O nome desse arquivo pode ser substituído através da diretiva ResourceConfig no arquivo principal de configuração.
Contém diretivas que controlam o acesso aos documentos. O nome desse arquivo pode ser substituído através da diretiva AccessConfig no arquivo principal de configuração.
O servidor Web lê os arquivos acima na ordem que estão especificados
(httpd.conf
, srm.conf
e
access.conf
). As configurações também podem ser
especificadas diretamente no arquivo httpd.conf
. Note que
não é obrigatório usar os arquivos srm.conf
e
access.conf
, mas isto proporciona uma melhor organização
das diretivas do servidor, principalmente quando se tem um grande conjunto de
diretivas. Um exemplo comentado destes três arquivos de configuração é
encontrado em “Exemplo comentado de um arquivo de configuração do Apache”.
A máquina mínima para se rodar um servidor Apache para atender a uma rede padrão 10MB/s é um Pentium 90, 24MB de RAM, um HD com um bom desempenho e espaço em disco considerável de acordo com o tamanho projetado de seu servidor web (considerando seu crescimento).
Uma configuração mais rápida para redes 100MB/s teria como processador um Cyrix MX ou Intel Pentium MMX como plataforma mínima (Cyrix é o recomendado pelo alto desempenho no processamento de strings), barramento de HD SCSI com uma boa placa controladora (Adaptec 19160 ou superior) com 64MB de RAM no mínimo.
O servidor httpd grava seus arquivos de log geralmente em
/var/log/apache
, não é possível descrever os arquivos de
logs usados porque tanto seus nomes como conteúdo podem ser personalizados no
arquivo httpd.conf
. Mesmo assim, os arquivos de logs
encontrados na instalação padrão do Apache são os seguintes:
access.log
- Registra detalhes sobre o acesso as páginas
do servidor httpd.
error.log
- Registra detalhes saber erros de acesso as
páginas ou erros internos do servidor.
agent.log
- Registra o nome do navegador do cliente (campo
UserAgent
do cabeçalho http).
Mais referências podem ser encontradas em “Sistema de Log do Apache”. Um bom programa para geração de estatísticas de acesso com gráficos é o “Relatório gráfico de acesso ao sistema”.
apt-get install apache apache-doc
(o pacote contém a documentação de referencia do Apache, é recomendável instala-lo se estiver curioso e deseja entender melhor seu funcionamento ou consultar diretivas).
O Apache pode ser executado tanto como um servidor Inetd ou como um Daemon. A inicialização de programas pelo Inetd é uma boa estratégia quando você precisa de um controle de acesso básico (o fornecido pelo tcpd), e o serviço é pouco usado na máquina.
A segurança de um serviço iniciado pelo inetd pode ser substituída e melhorada por um firewall bem configurado, garantindo facilidades extras como um relatório de tráfego para a porta do servidor web, por exemplo. Mesmo assim se o servidor Apache estiver rodando como daemon e estiver ocioso, ele será movido para swap liberando a memória RAM para a execução de outros programas.
Neste capítulo será assumido seu funcionamento do Apache como Daemon, que é o método de funcionamento recomendado para sites de grande tráfego onde ele é freqüentemente requisitado e considerado um serviço crítico.
O método padrão para iniciar programas como daemons na
Debian é através dos diretórios
/etc/rc?.d
. Cada diretório deste contém os programas que
serão executados/interrompidos no nível de execução "?"
(rc1.d/
, rc2.d/
...). O conteúdo
destes diretórios são links para os scripts originais em
/etc/init.d/programa
, o nosso programa alvo é
/etc/init.d/apache
. O
/etc/init.d/apache
aceita os seguintes parâmetros:
start
- Inicia o Apache
stop
- Finaliza o Apache
restart
- Reinicia o Apache, efetuando
uma pausa de 5 segundos entre a interrupção do seu funcionamento e reinicio.
reload
- Recarrega os arquivos de configuração do
Apache
, as alterações entram em funcionamento imediatamente.
reload-modules
- Recarrega os módulos. Basicamente é feito
um restart no servidor.
force-reload
- Faz a mesma função que o reload
Para reiniciar o Apache usando o
/etc/init.d/apache
, digite:
./etc/init.d/apache restart
ou
cd /etc/init.d;./apache restart
Na realidade, o que o /etc/init.d/apache
faz é interagir
diretamente com o shell script apachectl.
O apachectl recebe os parâmetros enviados pelo usuário e converte para sinais que serão enviados para o binário apache. Da mesma forma ele verifica os códigos de saída do apache e os transforma em mensagens de erro legíveis para o usuário comum. Os seguintes comandos são aceitos pelo apachectl:
httpd-server/start
- Inicia o Apache
stop
- Finaliza o Apache (enviando um
sinal TERM)
restart
- Reinicia o Apache (enviando um
sinal HUP)
graceful
- Recarrega os arquivos de configuração do
Apache (enviando um sinal USR1)
fullstatus
- Mostra o status completo do servidor
Apache (requer o lynx e o módulo
mod_status carregado).
status
- Mostra o status do processo do servidor
Apache (requer o lynx e o módulo
mod_status carregado).
configtest
- Verifica se a sintaxe dos arquivos de
configuração está OK (executa um apache -t
).
-D nome
- define um nome que será usado na diretiva
<IfDefine nome>.
-d diretório
- especifica o diretório
ServerRoot (substitui o do arquivo de configuração).
-f arquivo
- especifica um arquivo
ServerConfigFile alternativo.
-C "diretiva"
- processa a diretiva antes de ler os arquivo
de configuração.
-c "diretiva"
- processa a diretiva depois de ler os
arquivos de configuração.
-v
- mostra a versão do programa.
-V
- mostra opções usadas na compilação do
Apache.
-h
- Mostra o help on-line do programa
-l
- lista módulos compilados junto com o Apache (embutidos)
-L
- lista diretivas de configurações disponíveis
-S
- Mostra configurações de Virtual Hosting
-t
- executa a checagem de sintaxe nos arquivos de
configuração do Apache (incluindo a checagem da diretiva
DocRoot).
-T
- executa a checagem de sintaxe nos arquivos de
configuração do Apache (menos da diretiva
DocRoot).
Copyright © 1999-2020 - Gleydson Mazioli da Silva