Apresentação resumo sobre o servidor Web apache para a disciplina de Hipermídia.
Citation preview
5875617
5620216
1
2009
Resumo
O Apache é o servidor web (webserver) mais popular da
Internet
(netcraft.com), sua grande utilização concentra-se, principalmente
em prover
acesso por meio do protocolo HTTP (Protocolo de Transferência
de
Hipertexto) além do suporte ao protocolo HTTPS. Diferente da
maioria dos
softwares
livres, o Apache não utiliza licença GPL (General Public License),
mas sim
uma licença própria. Sendo mantido pela Fundação Apache, a
sua
popularidade também se deve ao fato de ser distribuído juntamente
com a
maior parte das distribuições
PHP, Perl, Ruby, Java e módulos já agregados, possibilitam
sua
customização e criação de novos módulos utilizando-se APIs
específicas.
Seu código fonte, por ser aberto, pode ser alterado livremente e
sua
utilização é gratuita.
Web..................................................................
4
Apache.............................................. 10
Linux.....................................................................
14
Linux...................................................................
15
Capítulo 4
API: Application Programming Interface. Interface de programa da
aplicação.
Browser:
DNS:
GPL: General Public License. Licença pública tradicional no
movimento de software livre.
HTML: Hyper Text Markup Language. Linguagem de marcação de
hipertexto.
HTTP: Hyper Text Transfer Protocol. Protocolo de transferência de
hipertexto.
HTTPS: Hyper Text Transfer Protocol Secure. Protocolo seguro de
transferência de hipertexto.
IIS:
NCSA:
URL:
5
1.1.1 – O que é um servidor Web
Um servidor Web é o responsável pelo controle e distribuição
de
páginas na internet. Sua função básica, consiste em aguardar
requisições de
páginas de um clientes (browser) e retornar dados ao mesmo,
normalmente
páginas HTML. Ao receber os dados enviados pelo servidor o
browser
apresenta os mesmo ao usuário que fez a requisição. Em conceito,
os
servidores são muito simples, fazendo a função básica de responder
á
requisições.
O processo de comunicação entre cliente-servidor é feito através
de
protocolos de hipertextos – http (Hyper Text Transfer Protocol) –
que
padroniza o modo de envio e recebimento dos dados e que possui
como
característica principal sua total independência quanto a
plataforma utilizada,
podendo estabelecer comunicação, por exemplo, entre um servidor
Linux e
um cliente Windows ou mesmo Macintosh.
As informações que trafegam pela Internet, utilizam em sua
grande
maioria a linguagem HTML (Hyper Text Markup Language), que é a
base
principal de um ambiente Web, oferecendo uma grande gama de
informações ou dados, disponíveis para toda a rede.
Existem atualmente no mercado mais de 500 servidores Web,
disponíveis nas mais variadas plataformas e que vão desde de
distribuição
gratuita até valores que chegam a milhares de dólares. As
principais
características que devem ser observadas em um servidor Web são
as
seguintes:
• Processo de instalação.
• Facilidades de customização.
• Suporte técnico.
Os servidores Web são os responsáveis por armazenar e trocar
informações
com outros equipamentos e baseado nisso, pelo menos dois
participantes
estão diretamente envolvidos em cada troca de informações: Um
cliente, que
faz a solicitação (requisição) e um servidor que atende (ou não)
esse pedido.
Ambos os lados exigem um programa especializado para “negociar”
essa
troca de dados.
O cliente necessita de um browser para isso, como por
exemplo o
Mozilla Firefox ou o Internet Explorer. Do lado do servidor, porém,
as coisas
não são simples assim. Existe uma gama enorme de softwares
disponíveis
para atender esse lado, mas todos tem uma função semelhante que
é
negociar a transferência de dados entre clientes e servidores por
meio de
HTTP. O software depende do sistema operacional que esta instalado
no
servidor. Por exemplo, o IIS da Microsoft é bastante popular quando
a
plataforma é Windows, já para quem utiliza Linux, a escolha
normalmente é
o Apache.
Uma comunicação em termos gerais e bastante simples entre um
cliente e um servidor Web pode ser descrito da seguinte
forma:
• O browser do cliente separa a URL em várias partes
separadas, tais como o nome do domínio, nome da página e o
protocolo. Como exemplo para a URL
http://www.each.usp.br/morandini-hipermidia/xxx.asp , o
nome
do domínio é www.each.usp.br , o nome da página é
morandini-
hipermidia, o arquivo solicitado é xxx.asp e o protocolo
http.
• Um Servidor de Nome de Domínio (DNS), traduz o nome do
domínio informado, para seu endereço IP, que é o endereço
real do site na Internet. A utilização do nome do domínio é
apenas uma facilidade introduzida na Internet para facilitar
a
memorização dos endereços dos sites, já que é mais fácil
lembrar do nome do domínio do que seu endereço IP, porém é
um processo que não obrigatoriamente precisa ser usado,
7
(transferência de hipertextos).
• O servidor passa então a tratar os arquivos solicitados que
no
caso do exemplo acima é “xxx.asp” e responde ao cliente.
• O browser recebe então os dados de resposta do servidor na
linguagem HTML, interpreta as instruções contidas e mostra o
resultado ao usuário.
outras
tarefas. Levando-se em conta que um browser simplesmente traduz e
exibe
os dados a ele fornecidos, cabe ao servidor Web, tratar uma série
de outras
situações. Dentre as outras atribuições de um servidor Web,
pode-se
destacar:
• Definir o código apropriado para qualquer tipo de erro interno
se
o mesmo ocorrer.
• Distinguir os vários tipos de elementos de uma página Web
(.GIFs, JPEGs, etc) para que o browser saiba que arquivo usar
na hora de formatar a página no cliente.
• Pode ainda tratar de tarefas adicionais como estatísticas,
segurança e criptografia, servir imagens para outros sites,
gerenciar conteúdo dinâmico ou funções de e-commerce.
Abaixo uma pequena lista de servidores Web conhecidos:
• – Apache HTTP Server
• – Covalent Enterprise Ready Server, baseado no Apache
HTTP
Server
• – Fnord
8
Windows XP
• – Roxen
• – Sun Java System Web Server da Sun Microsystems, antigo
Sun
ONE
Server.
1.1.2 – O servidor Apache
O servidor Apache é um dos mais de 500 servidores Web
disponíveis
no mercado atualmente. Está disponível para as plataformas Windows,
Unix
Like, Solaris, Sun e praticamente todas as distribuições Linux e em
sua
distribuição 1.3 existe suporte para uso em mainframes que utilizem
EBCDIC
como conjunto de caracteres. Por ser um software de distribuição
livre e
gratuita, o Apache é atualmente o servidor mais utilizado na
Internet e
algumas das características que fazem dele um servidor bastante
conhecido
são:
• Implementado através de módulos
A Internet como ferramenta para usuários finais, é praticamente
uma
caixa preta, pois para quem a utiliza, o universo de visão
restringe-se
basicamente ao browser utilizado.
Conhecer mais detalhadamente seu funcionamento e o que existe
por
traz disso tudo é algo extremamente cativante e uma das formas de
se ter
uma visão mais abrangente desse universo é conhecer um dos
principais
conceitos que regem a rede, o conceito cliente-servidor.
Tomar
conhecimento do que é exatamente um servidor Web, para que serve e
sua
principais características, constitui-se na principal motivação
desse trabalho.
O objetivo principal consiste em ampliar o conhecimento sobre
o
funcionamento da Internet, através de um estudo básico da
literatura
existente sobre os conceitos de cliente-servidor, com ênfase nos
servidores
Web e especificamente sobre o servidor Apache.
1.3.2 – Objetivos específicos:
principalmente sobre o servidor Apache.
• Apresentar uma visão básica do conceito cliente-servidor e o
seu
fuincionamento.
10
cliente-servidor que é um dos alicerces da Internet.
• Mostrar de forma clara a função de um servidor Web.
• Mostrar algumas opções de servidores Web existentes no
mercado
atualmente.
1.4 – Metodologia: A metodologia a ser seguida consiste basicamente
em:
• Levantamento bibliográfico do tema proposto com o material
disponível sobre o mesmo.
• Estudo mais detalhado sobre o servidor Web Apache.
• Redação do relatório final.
2.1.1 – Um pouco de história sobre o Apache
O servidor Apache (ou Apache Server), surgiu no National Center
of
Supercomputing Applications (NCSA) através do trabalho de Rob
McCool
(ALECRIM, 2006). Quando McCool saiu da NCSA, parou de trabalhar
no
software, que recebia nesse época justamente a denominação NCSA
e
então outras pessoas passaram a adaptar o serbidor Web para
suas
necessidades. No entanto, foram Brian Behlendorf e Cliff Skolnick
os
principais responsáveis pela retomada do projeto, contando em
seguida com
o apoio de Brandon Long e Beth Frank, sendo que os dois últimos
tinham
12
como objetivo continuar a desenvolver o servidor, mas para a NCSA.
Isso
deu origem ao grupo Apache ou Apache Group que contava com 8
desenvolvedores no total.
Esse processo teve inicio em 1995 e o objetivo desse grupo
foi
consolidar uma série de patches – remendos – que haviam sido feitos
para o
HTTP daemon da NCSA. Essa série de patches passou a ser
controlada
através de uma lista de discussões entre os 8 desenvolvedores
envolvidos
no grupo e em 1996, o Apache já era o servidor HTTP mais popular
da
Internet.
Em 1999 foi fundada a Apache Software Foundation, que é
uma
organização sem fins lucrativos que dá suporte a uma grande gama
de
projetos open source, além é claro do próprio Apache HTTP
Server.
Aparentemente, o nome da fundação parece ter sido baseado na
característica do uso de patches, já que pode ser interpretado como
um
trocadilho com a expressão em inglês “a patchy”. No entanto
os
desenvolvedores garantem que o nome foi baseado em uma tribo
indígena
americana. Nos dias atuais a fundação é mantida principalmente
por
doações e pelo apoio de grandes corporações, como IBM e Sun.
As
atividades da Apache Foundation podem ser conhecidas através de seu
site
oficial: www.apache.org
A primeira versão oficial do Apache foi 0.6.2, lançada em 1995 e
a
última versão que se teve informação até a escrita desse trabalho
foi a
2.2.3/2.2.4. Desde a primeira versão do Apache até os dias atuais
houve
muitas mudanças no projeto, mas talvez a mais importante delas
tenha sido
o Shambhala, uma arquitetura desenvolvida para o Apache por,
Robert
Thau, que tinha como principal característica um melhor
gerenciamento de
memória e que gerou a versão 0.8.8. Essa versão possuía, além
do
Shambhala, alguns recursos da versão 0.7.x. Após uma série de
aperfeiçoamentos, testes e de uma nova documentação feita por
David
Robinson, foi lançado em dezembro de 1995 a versão 1.0.
Em agosto de 2009 o site netcraft.com em sua pesquisa mensalx
consultou 225.950.957 de hospedeiros ao redor do mundo e apontou
o
Apache como sendo o servidor Web mais utilizado no mundo, com
54,32%
13
dos sites ativos, sendo que entre o milhão de sites mais acessados,
o
Apache serve 66% deles.
2.1.2 – Características do Apache
O Apache Server é um software livre, o que significa dizer que
pode
ser estudado ou alterado o seu código-fonte por qualquer pessoa,
além de
ser possível utilizá-lo gratuitamente. Graças a essa
característica, o Apache
foi e continua sendo melhorado ao longo dos anos, graças ao esforço
de
vários desenvolvedores ao redor do mundo, o que faz com que seja
o
servidor Web mais utilizado no mundo.
Alem de estar disponível para o Linux e todos os outros
sistemas
operacionais baseados no Unix, possui também versões para
outras
plataformas, como o Windows e OS/2.
Graças a sua estrutura modular que foi planejada desde sua
forma
mais básica, o Apache permite facilmente que sejam acrescentados
módulos
que ampliam suas funcionalidades básicas como servidor Web. Mesmo
sua
estrutura de Multi-Processing Modules (MPMs), permite selecionar o
MPM
adequado para a plataforma na qual está instalado, tirando o
máximo
proveito dos recursos do sistema operacional.
O Apache pode executar códigos em PHP, CGI-BIN, Python, Perl.
Shell Script ou mesmo em ASP e pode ainda atuar como servidor
FTP,
HTTP e HTTPS, entre outros. Sua forma mais conhecida de utilização
é a
que combina o Apache com a linguagem PHP e o banco de dados
MySQL.
A exigência de hardware depende de sua aplicação, mas um
máquina
Pentium com 64 MB de Memória RAM é capaz de executá-lo em um
pequeno ambiente corporativo. Quando se tratar de um site na rede
mundial
é aconselhável disponibilizar máquinas poderosas, pois o que mais
vai
impactar no processo é o nível de acesso.
Abaixo, segue um resumo com as principais características
(extraído
do Guia Foca Linux):
• Possui suporte a scripts cgi usando linguagens como Perl, PHP,
Shell
Script,
14
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).
endereços Internos.
• Módulos DSO (Dynamic Shared Objects) permitem
adicionar/remover
funcionalidades e recursos sem necessidade de recompilação do
programa.
15
de softwares e documentações, para aceitar contribuições regulares
de
pessoas tanto jurídicas como físicas e para receber doações de
produtos de
softwares existentes.
Essas licenças auxiliam no objetivo de transmitir segurança e
longa
duração dos produtos de softwares feitos através do desenvolvimento
open
source de colaboração. Em todos os casos, quem contribui tem
plenos
direitos de usar suas contribuições originais para quaisquer outros
fins fora
do Apache ao fornecer a fundação e seus projetos o direito de
distribuir e dar
continuidade a seu trabalho dentro do Apache.
Todos os softwares produzidos pela fundação, ou qualquer outro
dos
seus projetos ou assuntos é licenciado de acordo com os termos da
Licença
Apache, versão 2.0 disponível em
http://www.apache.org/licenses/LICENSE-
2.0
A versão atual da licença Apache (2.0), foi aprovada pela
Apache
Sotware Foundation em 2004 e os objetivo dessa revisão foram
• Reduzir o número de perguntas freqüentes, para permitir que a
licença
possa ser teutilizável., sem modificações de qualquer projeto,
mesmo
não sendo projetos ASF.
• Para permitir que a licença possa ser incluída por referência ao
invés
de enumerada em cada arquivo.
• Para esclarecer a licença mediante a apresentação de
contribuições.
• Para exigir uma licença de patente relativo ás contribuições
que
infringem necessariamente patentes próprias do contribuinte.
• Mover comentários sobre o Apache e outros avisos de
atribuições
herdado para um local fora dos termos da licença.
O resultado é uma licença supostamente compatível com outras
licenças
de código aberto, mantendo-se fiel aos objetivos originais do
grupo
Apache e que apóie o desenvolvimento colaborativo entre as partes,
sem
fins lucrativos por parte da ASF.
16
Instalar o servidor Apache no Linux é bastante fácil,
principalmente
porque na, na maioria das vezes, está atrelado a facilidades
existentes na
própria distribuição Linux. Por exemplo, se o um sistema
operacional
utilizado for baseado no Debian (ou o próprio), como o Ubuntu, pode
instalar
o Apache através do comando apt-get:
apt-get install apache
O que se recomenda é instalar as versões do Apache preparadas
pela
distribuição que está sendo utilizada, já que provavelmente o
software estará
otimizado para rodar nela. É possível baixar pacotes "genéricos" no
site da
Apache Foundation. Feito isso, a instalação pode ser feita da
seguinte forma:
Supondo que foi baixado o pacote httpd-2.2.2.tar.bz2, digite em um
terminal:
tar -xjvf httpd-2.2.2.tar.bz2
cd httpd-2.2.2 (supondo-se que esta foi a pasta
criada)
O primeiro comando acima descompacta o pacote e o segundo
inicia
o processo de compilação e instalação:
./configure --prefix=/etc/httpd (se preferir, indique
após o sinal de
igual o local de instalação do Apache)
Na verdade, o comando ./configure pode ser utilizado com a
adição
ou a remoção de módulos. Para isso, após "configure", informe
"--enable-
módulo" para adicionar um módulo ou "--disable-módulo" para fazer
o
contrário. Por exemplo, se for digitado:
./configure --enable-ssl --enable-rewrite
--prefix=/etc/httpd
17
Significa que você está habilitando o suporte a SSL e o "rewrite"
que,
basicamente, permite "reescrever" endereços usando expressões
regulares.
Findo este processo, digite:
Após a instalação estar concluída, pode-se executá-lo. Para isso
há
mais de uma forma, uma delas é a descrita a seguir, que pode ser
digitada
em um terminal:
No comando acima, o caminho correspondente deve ser alterado,
caso o Apache esteja instalado em um diretório diferente. Em alguns
casos,
basta abrir o terminal e digitar apenas "apachectl start ".
Isso será suficiente
para iniciar o Apache.
restart - para reiniciar o Apache;
stop - para parar o Apache;
status - para mostrar o status do processo do
Apache.
Após iniciar o Apache, é possível testá-lo: abra um navegador de
internet
instalado na máquina e digite no campo de endereço:
http://localhost:80
(em alguns casos, basta digitar localhost ). Se o Apache
estiver funcionando
corretamente, uma página como a mostrada na figura 1 será exibida
no
browser:
Se o objetivo é fazer com que o Apache inicie automaticamente
toda
vez que a máquina for ligada, basta executar o seguinte
procedimento: Abra
o arquivo /etc/rc.d/rc.local (ou equivalente, de acordo com o seu
sistema
18
/etc/httpd/bin/apachectl start
Figura 1 – tela localhost mostrada pelo apache quando já
instalado
Se o objetivo é fazer com que o Apache inicie automaticamente
toda
vez que a máquina for ligada, basta executar o seguinte
procedimento: Abra
o arquivo /etc/rc.d/rc.local (ou equivalente, de acordo com o seu
sistema
operacional) e acrescente nele a linha:
/etc/httpd/bin/apachectl start
Existem outras maneiras de iniciar o Apache automaticamente.
Outra
opção, para quem utiliza o Fedora Core em português, por exemplo, é
a
seguinte (levando-se em conta que o Apache está devidamente
instalado):
acesse o menu (chapéu vermelho), Configurações do Sistema /
Configurações do Servidor / Serviços . No menu à esquerda,
habilite a opção
"httpd" e clique em Salvar.
O passo seguinte é configurar o Apache (de preferência com o
19
servidor parado). Para isso, deve-se acessar o diretório conf -
nesse caso,
/etc/httpd/conf - e abrir os arquivos de configuração. Nessa
pasta, encontra-
se basicamente, os arquivos httpd.conf, srm.conf (dependendo da
versão) e
access.conf (dependendo da versão).
Dos arquivos citados, o mais importante é o primeiro, pois é nele
que
estão as configurações usadas pelo daemon do Apache, o
httpd (daemon é
uma espécie de programa que executa tarefas em segundo plano).
No
arquivo srm.conf estão indicados os recursos que o Apache
precisa,
enquanto que no access.conf estão as diretivas de segurança que
controlam
o acesso a arquivos e diretórios.
20
Capítulo 4
4.1 – Finalizando O servidor Apache é um poderoso software, seguro,
robusto e muito
utilizado no mundo. Suas várias opções de configuração, faz dele
uma
ferramenta que requer tempo para ser totalmente conhecida.
Sua
capacidade de adaptação a diversas situações específicas, tais
como
plataformas variadas (Linux, Windows, OS/2, etc.), alem de suporte
a várias
linguagens, faz com que seja hoje o servidor Web mais utilizado no
mundo.
Para um melhor domínio do Apache, se esse for o objetivo, o site
oficial da
Apache Software Foundation contêm uma documentação bastante
abrangente. No Brasil também é possível encontrar bom material
sobre o
Apache e um dos locais onde oferece esse material, é o Guia Foca
Linux ou
o site Laureano
• Documentação da Apache:
focalinux.cipsga.org.br/guia/avancado/ch-s-apache.htm*;
About the ApacheHTTP Server Project – The Apache HTTP Server
Project:
2009
Set. 2009
Project). Info Wester disponível em:
http://www.infowester.com/servapach.php Acesso em 16 Set.
2009.
APPOLINÁRIO, FÁBIO: Metodologia da ciência: Filosofia e práticas
da
pesquisa. 1.ed. São Paulo,Cengage Learning, 2006. 209 p.
APPOLINÁRIO, FÁBIO: Dicionário de metodologia científica – Um
guia
para produção do conhecimento científico. 1.ed. São Paulo,
Atlas,
2004.300 p.
em: http://www.malima.com.br/article_read.asp?id=143 Acesso
em 17
Set 2009.
Disponível em:
http://www.malima.com.br/article_read.asp?id=156
22
Server Project, disponível em:
http://httpd.apache.org/docs-project/
Acesso em 17 Set 2009.
GUIA DO HARDWARE. Apache. Têrmos técnicos GDH disponível
em:
http://www.guiadohardware.net/termos/apache Acesso em 16 Set.
2009.
GUIA FOCA LINUX. Apache. Guia Foca Gnu/Linux, Capítulo
12,
disponível em:
disponível em:
http://www.mlaureano.org/guiasGuiaInstApache.php
LICENÇA: Apache License Version 2.0, - The Apache Software
Foundation: 2009
Set. 09, também disponível em:
http://httpd.apache.org/docs/trunk/license.html Acesso em 17
Set. 2009
NETCRAFT. Web Server Survey. Netcarft: August 2009,
Disponível em
http://news.netcraft.com/archives/2009/08/31/august_2009
_web_server_survey.html
UNIVERSIDADE DO MINHO. Tecnologias Aplicadas na
Implementação. Um.Minho, Portugal, 2009 disponível em:
http://www.di.uminho.pt/~gepl/SIEP/tecnologias.htm Acesso em
16 Set.
2009.
23
Anexo 1
Licença Apache
Apache License
DISTRIBUTION
• Definitions
"License" shall mean the terms and conditions for use,
reproduction,
and distribution as defined by Sections 1 through 9 of this
document.
"Licensor" shall mean the copyright owner or entity authorized by
the
24
copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other
entities that control, are controlled by, or are under common
control
with that entity. For the purposes of this definition, "control"
means (i)
the power, direct or indirect, to cause the direction or management
of
such entity, whether by contract or otherwise, or (ii) ownership of
fifty
percent (50%) or more of the outstanding shares, or (iii)
beneficial
ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making
modifications,
including but not limited to software source code,
documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but not
limited
to compiled object code, generated documentation, and conversions
to
other media types.
"Work" shall mean the work of authorship, whether in Source or
Object
form, made available under the License, as indicated by a
copyright
notice that is included in or attached to the work (an example
is
provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or
Object
form, that is based on (or derived from) the Work and for which
the
editorial revisions, annotations, elaborations, or other
modifications
represent, as a whole, an original work of authorship. For the
purposes
of this License, Derivative Works shall not include works that
remain
separable from, or merely link (or bind by name) to the interfaces
of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the
original
version of the Work and any modifications or additions to that Work
or
Derivative Works thereof, that is intentionally submitted to
Licensor for
inclusion in the Work by the copyright owner or by an individual
or
Legal Entity authorized to submit on behalf of the copyright owner.
For
25
the purposes of this definition, "submitted" means any form
of
electronic, verbal, or written communication sent to the Licensor
or its
representatives, including but not limited to communication
on
electronic mailing lists, source code control systems, and
issue
tracking systems that are managed by, or on behalf of, the Licensor
for
the purpose of discussing and improving the Work, but
excluding
communication that is conspicuously marked or otherwise
designated
in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal
Entity on
behalf of whom a Contribution has been received by Licensor
and
subsequently incorporated within the Work.
• Grant of Copyright License. Subject to the terms and
conditions of
this License, each Contributor hereby grants to You a
perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright
license to reproduce, prepare Derivative Works of, publicly
display,
publicly perform, sublicense, and distribute the Work and
such
Derivative Works in Source or Object form.
• Grant of Patent License. Subject to the terms and conditions
of this
License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except
as stated in this section) patent license to make, have made, use,
offer
to sell, sell, import, and otherwise transfer the Work, where
such
license applies only to those patent claims licensable by
such
Contributor that are necessarily infringed by their Contribution(s)
alone
or by combination of their Contribution(s) with the Work to which
such
Contribution(s) was submitted. If You institute patent litigation
against
any entity (including a cross-claim or counterclaim in a lawsuit)
alleging
that the Work or a Contribution incorporated within the Work
constitutes direct or contributory patent infringement, then any
patent
licenses granted to You under this License for that Work
shall
terminate as of the date such litigation is filed.
• Redistribution. You may reproduce and distribute copies of
the Work
or Derivative Works thereof in any medium, with or without
26
modifications, and in Source or Object form, provided that You
meet
the following conditions:
• You must give any other recipients of the Work or
Derivative
Works a copy of this License; and
• You must cause any modified files to carry prominent
notices
stating that You changed the files; and
• You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding
those notices that do not pertain to any part of the
Derivative
Works; and
• If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute
must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one of
the
following places: within a NOTICE text file distributed as part
of
the Derivative Works; within the Source form or
documentation,
if provided along with the Derivative Works; or, within a
display
generated by the Derivative Works, if and wherever such
third-
party notices normally appear. The contents of the NOTICE
file
are for informational purposes only and do not modify the
License. You may add Your own attribution notices within
Derivative Works that You distribute, alongside or as an
addendum to the NOTICE text from the Work, provided that
such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications
and
may provide additional or different license terms and conditions
for
use, reproduction, or distribution of Your modifications, or for
any such
Derivative Works as a whole, provided Your use, reproduction,
and
distribution of the Work otherwise complies with the conditions
stated
in this License.
any Contribution intentionally submitted for inclusion in the Work
by
You to the Licensor shall be under the terms and conditions of
this
License, without any additional terms or conditions.
Notwithstanding
the above, nothing herein shall supersede or modify the terms of
any
separate license agreement you may have executed with
Licensor
regarding such Contributions.
• Trademarks. This License does not grant permission to use
the trade
names, trademarks, service marks, or product names of the
Licensor,
except as required for reasonable and customary use in describing
the
origin of the Work and reproducing the content of the NOTICE
file.
• Disclaimer of Warranty. Unless required by applicable law or
agreed
to in writing, Licensor provides the Work (and each
Contributor
provides its Contributions) on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or
conditions of
TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
FOR A PARTICULAR PURPOSE. You are solely responsible for
determining the appropriateness of using or redistributing the
Work
and assume any risks associated with Your exercise of
permissions
under this License.
• Limitation of Liability. In no event and under no legal
theory, whether
in tort (including negligence), contract, or otherwise, unless
required by
applicable law (such as deliberate and grossly negligent acts)
or
agreed to in writing, shall any Contributor be liable to You for
damages,
including any direct, indirect, special, incidental, or
consequential
damages of any character arising as a result of this License or out
of
the use or inability to use the Work (including but not limited
to
damages for loss of goodwill, work stoppage, computer failure
or
malfunction, or any and all other commercial damages or losses),
even
if such Contributor has been advised of the possibility of
such
damages.
28
Work or Derivative Works thereof, You may choose to offer,
and
charge a fee for, acceptance of support, warranty, indemnity, or
other
liability obligations and/or rights consistent with this License.
However,
in accepting such obligations, You may act only on Your own
behalf
and on Your sole responsibility, not on behalf of any other
Contributor,
and only if You agree to indemnify, defend, and hold each
Contributor
harmless for any liability incurred by, or claims asserted against,
such
Contributor by reason of your accepting any such warranty or
additional liability.
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate
notice, with the fields enclosed by brackets "[]" replaced with
your own
identifying information. (Don't include the brackets!) The text
should be
enclosed in the appropriate comment syntax for the file format. We
also
recommend that a file or class name and description of purpose be
included
on the same "printed page" as the copyright notice for easier
identification
within third-party archives.
Licensed under the Apache License, Version 2.0 (the
"License");
you may not use this file except in compliance with the
License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software
distributed under the License is distributed on an "AS IS"
BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions
and
limitations under the License.