Escolar Documentos
Profissional Documentos
Cultura Documentos
1 – Histórico
Um servidor web [ou serviço web] é uma aplicação servidora que usa o protocolo HTTP,
Hyper Text Transfer Protocol, para se comunicar com a aplicação cliente, usualmente um
navegador da internet.
No caso de acesso mais simples, o cliente faz uma requisição solicitando determinado
documento HTML1 para o servidor web, que envia essa página ao cliente. Por sua vez, o navegador
interpreta o texto HTML da página e mostra numa apresentação gráfica o seu conteúdo. Se a
aplicação cliente não for capaz de interpretar2 o texto HTML, então ele apenas mostra o conteúdo
de texto. No caso da aplicação cliente wget, ela apenas efetua o download dessa página.
Em 1993 foi lançado o navegador NCSA3 Mosaic, que marcou o início de uma rápida
popularização da Web. O sucesso desse navegador foi usar protocolos abertos [HTTP, FTP] e
simplificar a tarefa de acesso ao conteúdo, que passou a ser apresentado em tela gráfica com
inclusão de imagens, além de seguir hiperlinques num simples clique de mouse. Até então, a maior
parte dos navegadores usava linha de comando.
Cabe lembrar que antes do Mosaic havia o Gopher4, porém este não tinha a funcionalidade
do Hyper Text e contava apenas com uma estrutura semelhante a navegador de conteúdo, em
estrutura de árvore de diretórios para seguir o conteúdo na internet.
Do lado servidor, o NCSA lançou o HTTPd NCSA web server. Esse web server era de
código fonte aberto, fato que permitiu posteriormente a criação de novos sevidores web baseados
nesse. A letra d em HTTPd vem de daemon, ou seja, daemon HTTP. Todas essas novas
tecnologias nasceram no Unix, tanto o web server quanto o navegador, pois era esse o sistema
operacional largamente empregado nas universidades e centros de pesquisa.
Acontece que o sucesso do navegador Mosaic foi tamanho que uma parte substancial do
grupo de cientistas que criou o Mosaic saiu do NCSA para fundar uma empresa chamada Mosaic
Communications Corporation, posteriormente renomeada para Netscape Communications
Corporation. Essa empresa criou o navegador conhecido como Netscape, que foi baseado no
Mosaic. Posteriormente, por cobrar licença de uso, o Netscape perdeu espaço para os navegadores
free.
1 O documento HTML é um arquivo de texto com instruções de Hyper Text Transfer Protocol.
2 Por exemplo, Lynx [que é uma das aplicações clientes de servidor web mais antigas] não interpreta as tags HTML e
apenas apresenta o conteúdo texto da página.
3 National Center for Supercomputing Applications
4 Gopher é também um protocolo da camada de aplicação TCP/IP lançado em 1991. Foi o precursor da World Wide
Web.
Então, em 1995 Rob McCool saiu do NCSA e juntou-se a um grupo de pessoas que já vinha
aplicando patches6 no código do HTTPd NCSA web server. Esse grupo juntou forças e criou a
empresa que posteriormente ficou conhecida como Apache. O servidor web Apache é derivado
diretamente do código fonte do HTTPd webserver, inicialmente pela aplicação de patches. O nome
apache vem de a patchy server, embora atualmente digam que o nome foi escolhido "em
homenagem à tribo indígena".
Atualmente o Apache web server está na versão 2, e seu código fonte também está na
categoria open source.
Desde o seu início e até hoje, o Apache é o web server mais usado. De acordo com
levantamento atual da Netcraft7, 47% do total de servidores web são Apache, mais que o dobro do
segundo colocado. E essa distância aumenta mais ainda quando se avalia apenas o milhão de
websites mais ocupados8 [ou mais acessados] na internet, onde esse número aumenta para 66%.
Essa preferência reflete não apenas o baixo custo de implantação, mas também a qualidade,
robustez e segurança do produto.
Para descobrir se o servidor Apache está instalado, procurar pelo seu script de inicialização
em /etc/init.d:
Se não houver saída no comando acima é indicativo de que o serviço apache não está
instalado. Nesse caso, instalar com o comando apt-get:
5 Essas empresas à época eram principalmente os provedores de acesso à internet em linha discada.
6 Patches: atualizações, correções, modificações e melhorias no código fonte.
7 Netcraft survey em www.netcraft.com
8 Million Busiest Websites, pesquisa também da Netcraft.
onde:
• /etc/init.d/apache2 é o script de inicialização do serviço apache2;
• /usr/sbin/apache2ctl é o script de controle do serviço apache2;
• /usr/sbin/apache2 é o executável que dará origem ao processo daemon;
• /etc/apache2 é o diretório de configuração do serviço web apache2.
3 – Configuração do serviço
Primeiro vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no
diretório /etc/apache2:
shell# cd /etc/apache2
shell# ls
Nesse arquivo, uma configuração importante é sobre qual usuário o serviço roda, nesse caso
está configurado user www-data. Isso significa que esse usuário precisa ter no mínimo permissão
de leitura no conteúdo de DocumentRoot [abaixo].
Convém reparar também que nesse arquivo tem uma include para sites-available/default,
que é o local recomendado para configurar o serviço:
Nesse arquivo existe a diretiva DocumentRoot /var/www, que é o local onde ficam os
documentos que o servidor entrega ao cliente.
portanto, se houver saída no comando indica que o processo está rodando e deve ser parado esse
serviço. Reparar também que o processo daemon [nesse cao] é o de PID 5184, e os demais são
processos filhos à espera de clientes.
Agora, o comando ps -ef | grep apache2 não deverá mais mostrar o daemon rodando.
Antes de iniciar o serviço web apache, verificar quais portas TCP estão abertas. Para isso, é
necessário a aplicação nmap para fazer um scan de portas. E se esta aplicação não estiver instalada,
fazer a instalação:
Depois disso, o scan de portas vai mostrar que a porta 80 também está aberta:
O comando ps [conforme acima] vai mostrar que o daemon apache2 está rodando.
Já que a aplicação wget baixa o arquivo do servidor web, ir para o diretório /tmp e, de lá,
acessar o web server no IP 192.168.1.10:
shell# cd /tmp
shell# wget 192.168.1.10
--2009-11-15 20:59:07-- http://192.168.1.10/
A conectar 192.168.1.10:80... conectado!
HTTP requisição enviada, aguardando resposta... 200 OK
Tamanho: 194 [text/html]
A gravar em: 'index.html'
Para a necessidade dessa configuração, tomar como exemplo o caso de um único serviço
web disponibilizando conteúdo tanto para a internet quanto intranet. Acontece que nessa intranet,
algum conteúdo é restrito e não deve ser acessado da internet.
Nesse caso, basta colocar esse conteúdo num diretório protegido por IP, isso é, apenas
aqueles clientes com faixa[s] de IP[s] dessa intranet é que terão acesso ao conteúdo, e os demais
não. Esse exemplo está sendo efetuado no host com IP 192.168.1.10.
shell# cd /tmp
shell# wget www.jairo.pro.br/apache2.tar.gz
--2009-11-15 21:18:40-- http://www.jairo.pro.br/apache2.tar.gz
Resolvendo www.jairo.pro.br... 187.16.23.138
A conectar www.jairo.pro.br|187.16.23.138|:80... conectado!
HTTP requisição enviada, aguardando resposta... 200 OK
Tamanho: 4957 (4,8K) [application/x-gzip]
A gravar em: 'apache2.tar.gz'
shell# cd apache2
shell# ls
apache2.conf index.html ponto.htaccess ponto.htpasswd sites-available.default
É necessário também acertar os IPs ou redes de quem está de fato autorizado a ter acesso a
esse diretório.
Depois disso, é so copiar esse arquivo para o diretório de configuração do serviço apache:
Antes de reiniciar o serviço apache [e essa configuração tomar efeito], testar o acesso ao
diretório com o cliente wget:
shell# cd /tmp
shell# wget 192.168.1.10/protegido
--2009-11-15 21:51:03-- http://192.168.1.10/protegido
A conectar 192.168.1.10:80... conectado!
HTTP requisição enviada, aguardando resposta... 200 OK
Tamanho: 132 [text/html]
A gravar em: 'index.html'
Convém notar que qualquer cliente, indiferente do seu IP, tem acesso ao diretório protegido.
No entanto, após reiniciar o serviço essa configuração toma efeito:
Agora é só testar o acesso e verificar que apenas os clientes com IPs configurados na
diretiva allow é que conseguem acesso a esse diretório.
No exemplo acima [diretório protegido por IP], o conteúdo do diretório somente pode ser
acessado pelos clientes com determinado IP [ou rede]. Porém, existem casos em que o cliente está
navegando com qualquer IP na internet e também precisa ter acesso a esse conteúdo na intranet.
Para criar o arquivo .htpasswd e incluir um usuário e senha, usar o comando htpasswd:
onde a opção -c é para criar um arquivo novo. Se omitir essa opção, irá manter todos os usuários
que existem no arquivo.
IMPORTANTE:
Se o arquivo .htpasswd já existe e for usado -c, todo o conteúdo anterior será perdido.
Agora é só testar com o navegador e observar que será solicitado um usuário e senha para
esse acesso.