UNIVERSIDADE DA BEIRA INTERIOR Departamento de Informática Administração de Sistemas Licenciatura em: - Tecnologias e Sistemas de Informação 6. Serviços de Acesso a Informação Docente: Prof. Joel Rodrigues Ano Lectivo 2010/2011
Sumário 1. Serviços de Acesso a Informação - Introdução 2. World Wide Web (WWW) 3. Hypertext Transfer Protocol (HTTP) 4. Servidor HTTP 1. Introdução No final dos anos 80 e início dos anos 90, surgiram diversas aplicações com o objectivo de permitir que o utilizador pudesse tirar partido da crescente quantidade de informação disponibilizada nos servidores da Internet. Exemplos destas aplicações são o: Gopher Archie wais O gopher foi desenvolvido na Universidade de Minnesota e permite, através de menus, efectuar browsing de recursos na Internet O archie permite efectuar a procura de ficheiros por nome, palavra-chave ou strings, em servidores de ficheiros O wais possibilita a pesquisa em bases de dados indexadas para referência de informação bibliográfica e baseia-se na norma ANSI Z39.50 Estas aplicações atingiram algum sucesso e implementação, mas rapidamente foram ultrapassadas, após o surgimento de uma aplicação de acesso a informação integradora e revolucionária: O World Wide Web (WWW). Administração de Sistemas (2010/2011) 110
1. World Wide Web (WWW) O WWW foi concebido por Tim Berners-Lee, investigador do Centro Europeu de Pesquisa Nuclear (CERN), em 1989. O WWW começou a ser usado internamente no CERN em 1991. Neste ano (1991), o WWW foi apresentado na Conferência Hypertext 91. Em Fevereiro de 1993, o National Center for Supercomputing Applications (NCSA) apresentou a primeira versão do Mosaic, desenvolvida por Marc Andreesen. Em 1994, Marc Andreesen e alguns colegas deixam o NCSA e fundam a Mosaic Communications Corp. (a futura Netscape). Em 1994, Tim Berners-Lee deixa o CERN e ingressa no Massachusetts Institute of Technology (MIT). No MIT, funda o World Wide Web Consortium (W3C) http://www.w3c.org Em 1999, a AOL adquire a Netscape. O WWW é uma aplicação de acesso a informação, responsável, em grande parte, pela explosão do crescimento da Internet. O WWW pode ser considerado como um repositório de informação à escala da Internet, suportado por milhares de servidores espalhados pelo Mundo, possibilitando que os utilizadores acedam a informação textual, gráfica e/ou multimédia, através de um programa designado por browser. O browser pode comunicar através de vários protocolos, nomeadamente, o HTTP, o FTP, o SMTP ou o GOPHER. O cliente estabelece uma ligação TCP para pedir: A página E todos os seus componentes A informação disponibilizada no WWW é constituída por documentos hipermédia (com texto, imagem, áudio, etc.), designados por páginas web ou, simplesmente, páginas. Administração de Sistemas (2010/2011) 111
Clientes e servidores: Servidores: armazenamento de documentos Clientes: visualização dos documentos Clientes WWW: Modo de texto: lynx Gráficos: o Netscape, o MS Internet Explorer, o Mozilla, o Opera, o GoZilla, o NSCA Mosaic,... Para estabelecer a ligação a uma página, utiliza-se um URL (Uniform Resource Locator). Um URL identifica univocamente toda e qualquer página web. Um URL contém: Protocolo utilizado para aceder a um documento ou página O nome absoluto da máquina onde se encontra O porto a utilizar pelo protocolo (opcional; normalmente, não se inclui porque se usa o porto pré-definido) O nome absoluto do documento dentro da máquina Formato genérico de um URL: Protocolo://nome_da_máquina:porto/nome_do_documento Administração de Sistemas (2010/2011) 112
Exemplos: http://www.ubi.pt:80/index.php www.ubi.pt http://www.di.ubi.pt Caracteres utilizados nos URLs: Caracteres US-ASCII. Caracteres que podem ser reservados: o [ ;, /,?, :, @, =, &, # ] o Se aparecerem fora do contexto para o qual foram reservados, devem ser codificados. Codificação de caracteres: %<código em hexadecimal> Ex: James & James -> James+%26+James Se o endereço tiver links relativos e uma estrutura hierárquica, os componentes da hierarquia devem ser separados por /. Os documentos Web podem ser classificados em três grandes categorias: Estáticos o Ficheiros com conteúdo fixo definido pelo autor no momento da sua criação Dinâmicos Activos o Ficheiros cujo conteúdo é construído pelo servidor no momento em que recebe um pedido do documento pelo browser. Ex.: Comon Gateway Interface (CGI) RFC 3875 o São programas que o servidor envia ao browser, a seu pedido, e que são executados localmente na máquina do browser. Ex.: Tecnologia Java que inclui a linguagem de programação, o Administração de Sistemas (2010/2011) 113
ambiente de execução (run-time environment) e uma biblioteca de classes. Em Java, os documentos activos são designados por applets. Os documentos Web podem ser simples ou compostos Páginas simples: blocos de texto Páginas compostas: blocos de texto com imagens, som e hiperligações (links) para outras páginas. Links hipertexto WWW --> URLs Sempre que é seleccionado um link externo, o browser contacta o servidor (local ou remoto) e solicita a transferência do respectivo ficheiro. O protocolo utilizado para a transferência é o HTTP (Hypertext Transfer Protocol). 3. Hypertext Transfer Protocol (HTTP) Protocolo que permite a comunicação entre Browsers e servidores HTTP. HTTP é um protocolo da camada de aplicação. Fundamentalmente, o HTTP está especificado nos RFC s: RFC 1945 (HTTP 1.0) RFC 2817 (HTTP 1.1) (actualiza o RFC 2616) Funciona sobre TCP/IP. Funciona no modelo cliente/servidor. É utilizada uma única ligação TCP. Utiliza normalmente o porto 80, embora possam ser utilizados outros. Administração de Sistemas (2010/2011) 114
Pedidos: Request Line - Linha do pedido. Headers - Cabeçalhos. CRLF - Linha em branco. Conteúdos - (opcionais). Figura 6.1 Pedidos HTTP (formato genérico). Linha do pedido A linha linha do pedido (Request-Line) possui 3 elementos separados por espaços (<SP>): o O método usado o O URI o A versão do protocolo A linha do pedido termina com <CRLF> Método <SP> URI <SP> HTTP-Version <CRLF> Métodos implementados: GET: Descarrega informação identificada pelo URI. Administração de Sistemas (2010/2011) 115
HEAD: Descarrega informação sobre o URI. POST: Transfere informação para o URI. PUT: Coloca informação na localização especificada no URI. DELETE: Remove uma entidade identificada pelo URI. TRACE: usado para verificar a comunicação através de proxies. Devolve no conteúdo da resposta o pedido enviado. OPTIONS: usado para determinar os métodos implementados no servidor. GET e HEAD são suportados por todas as implementações. Servidores HTTP 1.1 disponibilizam normalmente POST, OPTIONS e TRACE. Utilização típica dos métodos GET - usado para obter recursos. HEAD - usado para obter apenas informações sobre recursos. POST - usado para enviar dados ao servidor, normalmente via formulário. Exemplo de pedido GET: GET /index.html HTTP/1.0 User-Agent: Internet Explorer From: cheater@cheaters.org Referer: http://foo.com/ (linha em branco) Método POST: Pedido POST inclui linhas de conteúdo depois do fim dos cabeçalhos (e da linha em branco). Não existe um formato predefinido para os dados. Administração de Sistemas (2010/2011) 116
Um pedido POST tem de incluir um cabeçalho Content-Length: Exemplo: Content-Length: 267 Exemplo de pedido POST: POST /~joel/notas.cgi HTTP/1.1 User-Agent: Mozilla 5.0 Content-length: 35 Referer:http://www.di.ubi.pt/~joel/MA/ valor=1440199722&nom=joel¬as=45 Existem as versões: HTTP/1.0 (RFC 1945) HTTP/1.1 (RFC 2817) O HTTP 0.9 não utilizava a versão na linha do pedido/resposta. Se um servidor receber uma linha de pedido sem a versão considera a implementação do HTTP 0.9. URI Universal Resource Identifier O URI define a sintaxe para identificadores de recursos. Formato genérico de um URI: <protocolo>:<parte-específica-do-protocolo> Essencialmente, os URIs estão definidos no RFC 3986 (STD 0066). Administração de Sistemas (2010/2011) 117
URI Absoluto: Protocol://hostname[:port]/path Exemplo: http://www.di.ubi.pt:80/english/index.html URI Relativo: Exemplo: /english/index.html Tipos de URI s: URL - Uniform Resource Locator (RFCs 2368, 1738, 1808) o Identificam por localização. URN - Uniform Resource Names (RFC 2141) o Identificadores persistentes, independentes da localização. URI - Protocolos ftp http - File Transfer Protocol - Hypertext Transfer Protocol gopher - The Gopher Protocol mailto - Electronic Mail Address news nntp telnet File - USENET news - USENET news using NNTP access - Sessões iterativas - Nomes específicos de ficheiros Administração de Sistemas (2010/2011) 118
Sintaxe: <protocol>://[<user>[:<password>]@]<host>[:<port>]/<url-part> HTTP Linhas de Cabeçalho Depois da linha de pedido podem ser enviadas linhas adicionais de cabeçalhos. Cada cabeçalho é composto por uma designação e por um valor, separados por dois pontos (:). Os cabeçalhos disponibilizam informação sobre o servidor ou sobre o cliente. Exemplo: Qual o cliente usado? Qual o tipo de conteúdo aceite? Quem está a fazer o pedido? Qual é o servidor usado? Que data no servidor? Também podem não ser consideradas linhas de cabeçalho. Cada cabeçalho termina com CRLF. O fim dos cabeçalhos termina com uma linha em branco CRLF. Nos pedidos GET e HEAD, o fim dos cabeçalhos representam o fim do pedido. Accept: text/html From: neytmann@cybersurg.com User-Agent: Mozilla/5.0 HTTP Respostas HTTP-Version Status-Code Message Status Code: número de 3 dígitos (para o computador). Message: Texto (para ser interpretado por pessoas). Administração de Sistemas (2010/2011) 119
HTTP Códigos das Respostas 1xx 2xx 3xx 4xx 5xx Informativo. Bem Sucedido. Redireccionar. Erro do Cliente. Erro do Servidor. HTTP Exemplos de Respostas HTTP/1.0 200 OK HTTP/1.0 301 Moved Permanently HTTP/1.0 400 Bad Request HTTP/1.0 500 Internal Server Error 4. Servidor HTTP Sumário: Introdução Servidor Apache Distribuição de Software Compilação Instalação Configuração Ficheiros de configuração Alterações comuns de configuração Administração de Sistemas (2010/2011) 120
Introdução O Servidor Apache é um servidor HTTP muito utilizado em ambientes UNIX/Linux e Windows (http://www.apache.org) Algumas considerações: Possui uma grande fatia do mercado Estável Open source Flexível Seguro Faz parte da maioria das distribuições do Linux. Corre associado ao utilizador nobody. O utilizador nobody tem sempre que existir (verificar o /etc/passwd). Os ficheiros a ler pelo Apache têm que ter permissões de modo a poderem ser lidos por este utilizador ( nobody ). Apesar de o Apache já vir instalado na maioria das distribuições Linux, por vezes é necessário efectuar a sua reinstalação (p.ex., para fazer um upgrade). Uma distribuição pode obter-se em: http://www.apache.org/dist Depois de se fazer o download, dever-se-á extrair o software: tar xzf httpd-2.0.55.tar.gz Para Windows, por exemplo, será o ficheiro: httpd-2.0.55-win32-src.zip Administração de Sistemas (2010/2011) 121
Distribuição de Software Actualmente, já está disponível a versão do Apache HTTP Server 2.1.9-beta Em UNIX/Linux, a extracção cria uma directoria com o código fonte, necessária para a compilação (onde também coloca toda a documentação). Localizações importantes: Ficheiros de configuração: /etc/httpd/conf Páginas de topo: /home/httpd Restart do servidor: /etc/rc.d/init.d/httpd restart Instalação em UNIX/Linux: A instalação, de forma resumida, processa-se em três fases: 1. Executar o script de configuração 2. Compilar 3. Instalar #./configure prefix=/usr/local/apache # make # make install Instalação de uma nova versão sem parar o sistema: Instalar numa directoria nova (ex: /usr/local/apache_novo); Parar o servidor Apache actual Fazer um link simbólico que aponte da directoria /usr/local/apache para a nova directoria Arrancar o novo servidor Apache Administração de Sistemas (2010/2011) 122
Para parar o servidor Apache: # /usr/local/apache/bin/apachectl stop Para arrancar o servidor Apache: # /usr/local/apache/bin/apachectl start Scripts de startup e shutdown: Sempre que se procede a uma nova instalação, é necessário indicar quais são os novos scripts de arranque e shutdown. Alteração do script de arranque: # cd /etc/rc.d/rc3.d # rm S85httpd # ln s /usr/local/apache/bin/apachectl S85httpd Alteração do script de shutdown: # cd /etc/rc.d/rc6.d # rm K15httpd # ln s /usr/local/apache/bin/apachectl K15httpd Configuração Geralmente, a configuração que vem por defeito funciona e é suficiente para que o servidor fique operacional. Os ficheiros de configuração estão localizados na directoria /usr/local/apache/conf O ficheiros httpd.conf é o mais importante dos ficheiros de configuração, estando extensamente comentado. Administração de Sistemas (2010/2011) 123
Se houver outros serviços que estão a usar o utilizador nobody, então poderá ser necessário criar um outro utilizador para o serviço WWW: Criar o utilizador (p.ex., www ) e colocar no ficheiro /etc/passwd o campo password a * e o campo shell com o valor /bin/false No ficheiro httpd.conf definir o utilizador e o grupo User www Group www Alterar as permissões de todos os ficheiros em /usr/local/apache de modo a que o utilizador www os possa ler. Mudar/(re)definir o nome do servidor: No ficheiro httpd.conf ServerName www.maquina1.sala19.di.ubi.pt Definir o endereço email do administrador do servidor: No ficheiro httpd.conf ServerAdmin www@maquina1.sala19.di.ubi.pt Administração de Sistemas (2010/2011) 124