Prévia do material em texto
ADMINISTRAÇÃO DE SERVIDORES Unidade 2 Servidores Web Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial ALESSANDRA FERREIRA Projeto Gráfico TIAGO DA ROCHA Autoria JÉSSICA LAISA DIAS DA SILVA 4 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 A U TO RI A Jéssica Laisa Dias da Silva Olá, possuo graduação em Sistema da Informação e Mestrado em Sistema e Computação, na UFRN. Tenho experiência na área de Informática na Educação, com ênfase em Mineração de Dados Educacionais como também atuo no estímulo dos jovens e crianças no estudo de ensino de programação. Realizo trabalhos e pesquisas, voltados ao universo dos jogos digitais no contexto educacional, como incentivo ao ensino dos jovens e dos professores. Atualmente, realizo pesquisas no contexto de disseminação do pensamento computacional para crianças e jovens. As minhas áreas de interesse de estudo são: Educação, Engenharia de Software, Mineração de Dados, Pensamento Computacional, Jogos Digitais Educativos, Gerenciamento de Projeto. Fui convidada pela Editora Telesapiens para integrar seu elenco de autores independentes. Fico feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! 5ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 ÍC O N ESEsses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO Para o início do desenvolvimento de uma nova competência. DEFINIÇÃO Houver necessidade de apresentar um novo conceito. NOTA Quando necessárias observações ou complementações para o seu conhecimento. IMPORTANTE As observações escritas tiveram que ser priorizadas para você. EXPLICANDO MELHOR Algo precisa ser melhor explicado ou detalhado. VOCÊ SABIA? Curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias. SAIBA MAIS Textos, referências bibliográficas e links para aprofundamento do seu conhecimento. ACESSE Se for preciso acessar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast. REFLITA Se houver a necessidade de chamar a atenção sobre algo a ser refletido ou discutido. RESUMINDO Quando for preciso fazer um resumo acumulativo das últimas abordagens. ATIVIDADES Quando alguma atividade de autoaprendizagem for aplicada. TESTANDO Quando uma competência for concluída e questões forem explicadas. 6 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 SU M Á RI O Servidores Web .......................................................................... 9 Definição de servidores web ............................................................................. 9 Arquitetura dos servidores web......................................................................13 Requisições estáticas .........................................................................15 Requisições dinâmicas .......................................................................16 Estrutura interna dos servidores web ........................................................... 19 Servidor Web Apache Tomcat ................................................ 22 Arquitetura ..........................................................................................................24 Catalina .................................................................................................25 Coyote ...................................................................................................26 Jasper .....................................................................................................26 Diretórios do Tomcat ........................................................................................26 Servlets e Java Server Pages ............................................................................27 Instalação e configuração do Apache Tomcat .............................................. 30 Sistemas Open Source em servidores de rede .................... 35 Características do Open Source .....................................................................35 Principais servidores de redes Open Source ............................................... 40 Servidor HTTP Apache ........................................................................40 NGINX ........................................................................42 Apache Tomcat ....................................................................................43 Node.js ..................................................................................................44 Lighttpd .................................................................................................45 Técnicas de configuração de sistemas Open Source ........... 48 Configurando o Apache Tomcat ....................................................................48 Configurações avançadas .................................................................................54 Soluções de problemas .......................................................................... 56 Componentes adicionais ..................................................................................57 Biblioteca nativa do Apache Tomcat .............................................................. 58 7ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 A PR ES EN TA ÇÃ O Nos estudos sobre administração de servidores, é essencial compreender os servidores web, especialmente, por ser um tópico importante, se levarmos em consideração os avanços do mundo da internet e um grande uso desses servidores web. Outro fator de destaque são as ferramentas Open Source, ou seja, de código aberto, que vêm “batendo de frente” com o mercado dos softwares proprietários. São imprescindíveis aos profissionais da área da computação dominarem esses conteúdos, para estar mais preparados no mercado de trabalho. Dessa forma, ao longo dessa unidade, você irá mergulhar nesse universo! Avante! 8 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 O BJ ET IV O S Olá. Seja muito bem-vindo à Unidade 2. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Definir o conceito e entender o funcionamento e a organização de um servidor web. 2. Instalar e configurar um servidor web Apache Tomcat, entendendo seu funcionamento e suas características. 3. Aplicar métodos de instalação de sistemas open source em servidores de rede. 4. Realizar procedimentos de configuração de sistemas open source em servidores de rede. 9ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Servidores Web OBJETIVO Ao término deste capítulo, você será capaz de entender o conceito de servidores web, sabendo como acontece o seu funcionamento, os principais modelos utilizados no mercado e as opções open source. Um passo importante para executar melhor as funções profissionais no uso de servidores. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Definição de servidores web A internet ganhou bastante popularidade nas últimas décadas e um dos principais motivos ocorreu, pelo advento dos navegadores web, fazendo com que houvesse um aumento considerável na quantidade de informações, solicitadas pelos usuários por meio de servidores web. A interatividade existente entre o usuário e o servidor passou a ser um caminho fundamental para o grande sucesso da web, tornando-se um processo crucial. O grande poder que a internet passou a ter entre os usuários não se deu apenas como um canal para servir os mais diversos tipos de conteúdo, mas um no poder de atender às solicitações desses usuários e assim gerar, cada vez mais, conteúdos dinâmicos. Não estamos falando apenas de uma grande quantidade de navegadores que estão sendo utilizados a cada dia, mas sim de um número imenso de novos sites que são adicionados, diretamente, para manter o fluxo de informação para os usuários (WELLS, 2001). Dessa forma, entendemos que há um crescimento constante de61ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 APACHE TOMCAT. Apache TomCat. Disponível em: https:// tomcat.apache.org/ Acesso em: 20 set. 2022. CARDELLINI, V.; CASALICCHIO, E.; COLAJANNI, M.; YU, P. S. The state of the art in locally distributed web-server systems. In: ACM Computing Surveys, 2002, v. 34, n. 2, p. 263- 311. COFFMAN,K.G;ODLYZKO,A.M. Internet growth: Is there a “Moore’s Law” for data traffic? In: Handbook of Massive Data, 2001. GUIESI, G. Modelo de servidor web com quatro módulos de atendimento de requisições(SWMAR). ICMC-USP, 2008. Disponível em: https://www.teses.usp.br/teses/disponiveis/55/55134/tde- 02072008-144125/publico/geraldo.pdf Acesso em: 29 set.2022. MENASCÉ, D.A.; ALMEIDA, V.A.F. Planejamento de capacidade para serviços na web. 1.ed. [s.l.]: Campus, 2003. SANT’ ANNA. FILHO, A. Modelo de servidor Web com conexões persistentes e carga orientada a sessão. 2004. 108 f. Tese (Doutorado em Ciência da Computação e Matemática Computacional) – ICMC-USP, São Carlos, 2004. SILVA, L.H.C. Um gerador de cargas de trabalho sintéticas- aplicação ao modelo de Servidor Web com diferenciação de serviços. 2005. 154 f. (Dissertação de Mestrado em Ciências Matemáticas e Computação). Instituto de Ciências Matemáticas e de Computação - ICMC, USP, São Carlos, 2005. RE FE RÊ N CI A S https://tomcat.apache.org/ https://tomcat.apache.org/ https://www.teses.usp.br/teses/disponiveis/55/55134/tde-02072008-144125/publico/geraldo.pdf https://www.teses.usp.br/teses/disponiveis/55/55134/tde-02072008-144125/publico/geraldo.pdf 62 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 TANENBAUM, A.S. Distributed Operating Systems. PrenticeHall, 1995. TEIXEIRA, M.A.M. Suporte a serviços diferenciados em Servidores Web: modelos e algoritmos. Tese (Doutorado) — ICMC–USP, São Carlos, 2004. WELLS,L.; CHRISTENSEN,S.; KRISTENSEN,L.M.; MORTENSEN,K.H. Simulation Based Performance Analysis of Web Servers In: Proceedings of 9th International Workshop on Petri Net sand Performance Models, P, IEEE, 2001, p.59-68.servidores web (HTTP), utilizados por esses 10 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 usuários, diariamente, fazendo com que surjam, no mercado dos fabricantes, a busca por tornar os servidores cada vez mais rápidos. É preciso entender então, quais são todas as aplicações possíveis que podem ser realizadas por um servidor web, para poder obter o seu melhor rendimento, antecipando possíveis requisições. Mas para falarmos de servidores web, precisamos entender de fato qual o seu conceito. Um servidor web tem a responsabilidade de controlar a distribuição de páginas que são utilizadas na internet, ou seja, tem a função de aguardar todas as solicitações que são realizadas pelo browser/ cliente, e após a chegada dessa requisição, deverá oferecer um retorno ao usuário, de uma forma geral. Essa resposta será dada por meio de uma página HTML, contendo diversas imagens e conteúdo. Figura 1- Dados e informação distribuídos pelo mundo Fonte: Freepik (2022). 11ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Quando o browser recebe os dados que são enviados pelo servidor, ele irá apresentar os resultados ao usuário. Assim, podemos entender que o conceito de servidores não é complexo, pois sua atividade principal será, basicamente, realizar esse processo de responder às requisições solicitadas. Os processos de comunicação, existentes entre o servidor e o cliente, acontecem por HTP-Hyper Text Transfer, em português, o Protocolo de Transferência de Hyper Texto, que tem a função de padronizar o modo de envio e da forma como os dados serão recebidos. Sua principal característica ocorre por trabalhar de forma independente de uma plataforma. EXEMPLO: O HTP poderá estabelecer uma comunicação entre um servidor do sistema operacional Linux com um cliente de Macintosh, sem que isso provoque algum problema na comunicação. De uma forma geral, podemos definir que o servidor web simples presente em um computador, poderá ser capaz de realizar atividades como: 1. Receber requisições HTTP vindas dos clientes. 2. Processar uma a uma as requisições. 3. Dar um retorno aos clientes com uma resposta HTTP. Podemos perceber que são apenas poucas etapas, na maioria das vezes, um processamento simples, dependendo do conteúdo gerado, que poderá ser com uma imagem, mas também um processo um pouco mais complexo, por exemplo, uma busca em alguma base de dados que apresente um número alto de registros. 12 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 IMPORTANTE É importante destacar que qualquer computador, que tenha acesso à uma rede, poderá trabalhar como um servidor web. Os mecanismos e como eles irão atuar é que irão diferenciar os processos de requisição e respostas. A web se tornou para o usuário a sua interface padrão, na qual ele tem acesso aos serviços remotos de sistemas de informação, hospedagem de dados, assim como a função de permitir que serviços de aplicações sejam realizados. Sabendo da crescente demanda que os usuários vem solicitando aos servidores, precisam, o cada vez mais, responder a um aumento de solicitações (CARDELLINI, 2002). A infraestrutura da web tem a sua complexidade e, dessa forma, poderão surgir, durante a interação dos servidores web, vários tipos de problemas de performance, por exemplo, congestionamentos nos roteadores de internet que podem causar problemas na rede, na web e nos bancos de dados, fazendo com que questões de atendimento às solicitações dos usuários aconteçam de forma inesperada. De acordo com Coffman (2001), é mais fácil resolver problemas na rede, pelo fato que, cada vez mais, as bandas crescem em potencial, porém no caso dos problemas que surgem nos servidores de web, tornam-se mais difíceis pelo fato de que os seus componentes se desenvolvem em menor velocidade. 13ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Arquitetura dos servidores web De acordo com Teixeira (2004), a WWW pode ser composta por três elementos principais que se relacionam por meio do modelo cliente-servidor. São eles: 1. Os browsers. 2. Rede. 3. Servidores. Tanenbaum (2003) complementa dizendo que é possível ordenar esse modelo nos mais diversos tipos de servidores. Na Figura 2, podemos visualizar as ramificações que um sistema distribuído poderá utilizar: Figura 2- Tipos de arquitetura de servidores Web Scale-up (único-nó) Scale-out (múltiplos nós) Escalabilidade dos sistemas web Scale-up de hardware Scale-up de software Global scale- up Local scale- up Fonte: Guiesi (2008). A motivação para existir diferentes tipos de arquiteturas para servidores web ocorre pela atualização constante e necessária desses servidores, devido às grandes demandas que precisam ser atendidas. Antigamente, utilizava-se apenas uma máquina como servidor web, e à medida que as demandas iam aumentando e esse computador já não suportava mais, realizava-se a substituição por outra mais veloz, que tivesse maior armazenamento. Essa técnica é conhecida como hardware scale-up (DEVLIN, 1999). 14 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Outra escolha a ser feita era melhorar o software da própria máquina, ou seja, o software scale-up. Porém, o uso dessa técnica só conseguia melhorar o desempenho até um certo tempo e as demandas, com o aumento da internet, tornaram impraticáveis utilizar esse tipo de prática. Uma das melhores opções de solução, nesse caso, seria utilizar servidores web distribuídos que serviriam para realizar o compartilhamento da carga recebida, ou fazer uso de múltiplos nós, como demonstrado na Figura 2. Na Figura 2, verificamos que os sistemas distribuídos podem ser subdivididos em dois: global scale-out e local scale-out (GUIESI, 2008). • Global scale-out: os nós são separados em localidades geográficas distintas. • Local scale-out: os nós servidores residem em uma única rede. Os componentes internos, assim como o funcionamento dos servidores web, apesar de apresentarem diferenças em suas estruturas, não diferem. Observa-se que a diferença está na variação entre a capacidade total existente entre as arquiteturas e os servidores web (Guiesi, 2008). As requisições solicitadas pelos usuários, em casos de diferentes arquiteturas, não são tratadas de forma diferentes. A diferença que vai existir será entre as requisições, pois terão casos de requisições dinâmicas e requisições estáticas. Vejamos a seguir como cada uma delas se conceitua. 15ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Requisições estáticas As características das páginas estáticas ocorrem por apresentarem textos que são planos e que vêm acompanhados de imagens, mas podem existir algum recurso de multimídia, como vídeo ou áudio. Utiliza-se a linguagem HTML (Hyper Text Markup Language) para ser desenvolvida, como é possível usar páginas que permitem link de direcionamentos para outras páginas web. De acordo com Silva (2005), até os anos 1990, existia na web apenas documentos hipertextos que eram interligados. Assim, as requisições estáticas supriam as necessidades pelo fato de ter uma baixa atualização no conteúdo, disposto no documento. Figura 3- Esquema Cliente-Servidor utilizando requisições estáticas Fonte: Guiesi (2008). Vamos entender como acontece o processamento das requisições estáticas (GUIESI, 2008): 1. O cliente utiliza um browser para fazer a requisição de um documento. 2. A requisição será enviada, por meio do middleware, ou seja, da internet. 16 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 3. Haverá a resposta do local, no qual o documento está armazenado no servidor web, e responde ao enviar o documento solicitado. IMPORTANTE Utiliza-se o protocolo URL para que seja realizado o envio da requisição, que será solicitada pelo cliente por meio de um browser. Esse, por sua vez, deverá criar uma requisição HTTP ao servidor, que terá a função de analisar o pedido que foi solicitado e se haverá a possibilidade de fazer o envio das informações,utilizando o padrão HTTP ao browser de onde o cliente fez a solicitação, ou seja, apresentando quais foram os resultados recebidos daquela solicitação. A interação acontece nos requisitos estáticos por meio do pedido e do documento que foi retornado. Como já foi tratado, esse tipo de requisição apresenta pouca interatividade, porém ainda é bastante utilizado (SILVA, 2005). Requisições dinâmicas As requisições dinâmicas são páginas, geradas em tempo de processamento de requisição. Esse tipo de página permite realizar efeitos diferentes, por exemplo: controle de formulários, recursos de janelas, entre outros. Porém, para que a comunicação seja efetiva, é preciso utilizar outra aplicação, utilizando além do HTML, diferentes linguagens de programação. Podem-se obter páginas dinâmicas, por meio de aplicativos que rodam, tanto no servidor como no cliente. Podemos citar Java, Dynamic HTML, ActiveX, exemplos de tecnologias que devem ser utilizadas ao lado do cliente, sendo executadas no navegador, diretamente. Nesse tipo de abordagem, existe a redução de tempo de resposta e assim não haverá uso excessivo de recursos disponibilizados na rede (MENASCÉ; ALMEIDA, 2003). 17ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 SAIBA MAIS Para conhecer mais sobre o assunto, acesse o artigo Como funcionam as aplicações web, elaborado pelo DevMedia, apresentando como são essas aplicações web, destacando aquelas desenvolvidas na linguagem de programação JAVA, clicando. É possível criar páginas dinâmicas direto do servidor, porém, nesses casos, o processador do servidor web deverá trabalhar com um consumo maior e haverá a possibilidade de gerar uma sobrecarga, especialmente, em casos nos quais as aplicações têm uma maior complexidade. Vejamos alguns exemplos de tecnologias que criam páginas dinâmicas, diretamente, do servidor: • ASP (Active Server Pages). • PHP (Hypertext Preprocessor). • JSP (Java Server Pages). Vejamos na Figura 3 um esquema que apresenta como o servidor se comporta nas requisições dinâmicas. https://www.devmedia.com.br/como-funcionam-as-aplicacoes-web/25888 18 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Figura 3- Esquema cliente-servidor das requisições dinâmicas Fonte: Guiesi (2008). Vamos entender como acontece o processamento das requisições dinâmicas (GUIESI, 2008): 1. O cliente solicita um pedido de um documento por meio de uma requisição HTTP. 2. A requisição feita pelo cliente é enviada por meio da internet até o servidor web. 3. O servidor web verifica que a requisição enviada é dinâmica e a envia para que possa ser processada. 4. A requisição é processada por meio de um sistema de processamento de transação para, logo depois, ser enviada de volta para o cliente. Poderá acontecer, também, nessa etapa, a integração com algum sistema de banco de dados. O protocolo HTTP, assim como a linguagem HTML, são utilizados para fornecer recursos dinâmicos a exemplo do protocolo CGI (Commom Gateway Interface) que possibilita a execução de programas e marcadores, usados para definir formulários (SANT’ANNA,2004). 19ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Assim, de acordo com Guiesi (2008, p.), “Os servidores são configurados para reconhecer os nomes de arquivos como chamadas para aplicativos que serão executados”. O HTML é o formato utilizado para continuar com a comunicação. Dessa forma, não existirá nenhum vínculo garantido à plataforma. O CGI transfere a solicitação de execução de uma aplicação para um determinado programa que seja apropriado, agindo como um tradutor entre o código HTML utilizado e os requisitos de aplicações. Desde sua criação, em 1995, o CGI trouxe ampliações nas aplicações desenvolvidas na internet, sendo possível realizar atualizações, inserir e excluir em base de dados. Com essa criação, foi possível o grande crescimento do comercio eletrônico. Estrutura interna dos servidores web Os componentes internos de um servidor web são os responsáveis por determinar como será o desempenho final desse servidor, tendo sua importância assim como o meio de comunicação da requisição. Vejamos a seguir alguns tipos de componentes internos dos servidores web: Tratamento de requisições TCP - após estabelecer a conexão TCP entre o cliente e o servidor, haverá o direcionamento das requisições HTTP pelo DEAMON TCP (programa executado em um computador servidor, utilizado para receber solicitações vindas de outros programas, que irá determinar ação e gerar a resposta adequada) para uma fila que conta com as requisições que precisam ser respondidas. Pool de Threads HTTP - os servidores web primitivos utilizavam cópias de um novo processo para atender cada uma 20 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 das requisições HTTP (Figura 4). Entretanto, a sobrecarga gerada tornou-se um problema. Como solução, foi criado um conjunto de processos que era previamente gerado. Um desses processos era o mestre que administrava os pedidos e tais processos. Figura 4-: Um servidor de um único processo com múltiplas threads Fonte: Tanenbaum (1995). Na Figura 4, podemos ver a demonstração que Tanenbaum (1995) realizou, com apenas um processo por servidor web, sendo composto por múltiplas threads, bastante utilizado ultimamente. As threads utilizam o método accept para trabalhar com uma requisição que esteja em fila de espera de requisições TCP. Logo após a requisição passar pela interpretação de uma thread, o arquivo será buscado na memória como no sistema de arquivos. Se o documento for encontrado, será armazenado no buffer de rede. Caso esteja disponível, será enviado ao cliente. 21ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 RESUMINDO E então? Como foi seu aprendizado nesse capítulo? Conseguiu atingir os objetivos de aprendizagem proposto? Para garantir que você tenha entendido bem tudo que foi apresentado, vamos fazer um resumo dos pontos mais importantes, combinado? Nessa unidade, você de ter aprendido que a internet ganhou bastante popularidade nas últimas décadas e um dos principais motivo ocorreu pelo advento dos navegadores web. Aprendeu que um servidor web tem a responsabilidade de controlar a distribuição de páginas que são utilizadas na internet, ou seja, tem a função de aguardar todas as solicitações que são realizadas pelo browser/ pelo cliente. Logo após a chegada dessa requisição, deverá gerar um retorno ao usuário. Você deve ter aprendido as funções do servidor web: receber requisições HTTP, vindas dos clientes, processá-las uma a uma, e dar um retorno aos clientes com uma resposta HTTP. Sobre a arquitetura dos servidores web, aprendemos que pode ser composta por três elementos principais que se relacionam por meio do modelo cliente-servidor: os browsers, a rede e os servidores. Verificamos que os sistemas distribuídos podem ser subdivididos em dois: global scale-out e local scale-out. É importante você ter compreendido sobre as requisições estáticas, cujas principais características são apresentarem textos que são planos e que vêm acompanhados de imagens. Podem existir algum recurso de multimídia e as requisições dinâmicas, geradas em tempo de processamento de requisição. Por fim, vimos que os componentes internos de um servidor web são os responsáveis diretos de como será o desempenho final do servidor web, tendo sua importância assim como o meio de comunicação da requisição. 22 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Servidor Web Apache Tomcat OBJETIVO O servidor web Apache Tomcat é uma ferramenta web de código aberto com base na linguagem de programação Java. Criado, em 1995, pela empresa da Sun Microsystems, tem a função de executar aplicações web que utilizam tecnologias Servlets e JSPs. Seu primeiro lançamento aconteceu em 1999. Com o crescimento de uso, esse servidor passou a ser um projeto da Apache, mantido na comunidade Java de códigos abertos. Sendo um ambiente de servidor da web HTTP,foi criado pelo Tomcat, no qual o código Java poderá ser executado. Figura 5- Logo do Apache Tomcat Fonte: tomcat.apache.org (2022). IMPORTANTE O Apache Tomcat é considerado um servidor bastante estável com todas as características que estão presentes em aplicações comerciais web. A sua versão atual é o 10.1.0, a primeira versão estável do Apache Tomcat, direcionada ao Jakarta EE 10. 23ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Uma aplicação típica desenvolvida Web, executada pelo Tomcat, poderá implicar no domínio das linguagens Java, HTML e XML: • Java- todos os códigos de algoritmos da aplicação deverão ser escritos na linguagem Java. • HTML- a interface da aplicação é construída no formato de páginas, desenvolvida em HTML. Essas páginas são visualizadas por meio do browser do usuário, cuja tarefa é destinada ao web designer. • XML - a configuração da aplicação deverá ser expressa na linguagem XML, por meio de um arquivo chamado web.xml. Tanto a aplicação como o Tomcat poderão usar os dados dessa configuração. Os diferenciais do Apache Tomcat, que fazem com que seja superior a outros sistemas, são: • Leveza -mesmo tendo a certificação JavaEE, o Apache Tomcat é considerado mais leve. As funcionalidades que ele oferece são as mais básicas, porém necessárias para executar no servidor. Assim, processa, em tempo de carregamento e reimplantação, de forma mais rápida, no que diz respeito a outras aplicações. Ser leve também permite que possa ser criado um ciclo de desenvolvimento ágil pelo usuário. • Código Aberto - como já falamos antes, o Tomcat tem código aberto, gratuito, que estará sempre pronto para que os usuários façam download. Essa especificação faz com que o uso da infraestrutura seja mais escalável. • Flexível - o Tomcat torna-se flexível por ter uma natureza leve com opções personalizadas integradas e extensas. É possível que o usuário execute, virtualmente, da 24 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 forma que escolher, o que não irá comprometer suas funcionalidades. • Estabiliza o servidor - a forma como o Tomcat é utilizado permite que aplicativos sejam construídos e executados, sem que haja algum comprometimento na estabilidade, necessária para o servidor, pelo fato de seu funcionamento não ter relação com a instalação do Apache. • Incrementa a segurança- quando a instalação do Apache Tomcat acontece, junto ao firewall, permitirá que a segurança do servidor se torne maior. • Maduro - por ser um código aberto em uma grande comunidade de desenvolvedores, sempre estarão disponíveis atualizações e novas funcionalidades. É por esse motivo que o Tomcat é considerado um dos servidores de aplicativos mais maduro e estável, utilizado para o desenvolvimento de software, assim como de implantação de aplicativos em Java. • Bem documentado- é possível encontrar disponível uma documentação completa, com tutoriais e informações, que irá auxiliar a realizar as configurações iniciais, proteção, segurança, configuração do servidor, entre outros. Arquitetura O termo servidor é utilizado para representar o host, ou seja, a máquina na qual todos os componentes irão rodar, oferecendo algum tipo de serviço. Tais serviços são acessados pelo cliente e consistem em um ou mais processadores, logados por meio de um conecto. Assim, é possível customizar diversos aspectos dos componentes utilizados. 25ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 O Tomcat, assim como outras ferramentas, contém vários componentes de serviços. Os mais importantes serão descritos a seguir. Catalina Catalina é considerado o componente principal do Tomcat, pois de forma padrão realiza a implementação de um container Web Java EE, que admite a especificação Servlet, base das aplicações Web em Java. Ela é também um Servlet Container, serviço que inicia esse servidor, primeiramente. Outras responsabilidades do componente é a configuração do serviço e das características relativas à segurança das aplicações no servidor. SAIBA MAIS CATALINA_HOME: representa a raiz da sua instalação do Tomcat, segue exemplo: /home/ tomcat/apache-tomcat-9.0.10 ou C:\Program Files\ apache-tomcat-9.0.10. CATALINA_BASE: faz a representação da raiz referente a uma configuração de tempo de execução de uma específica instância do Tomcat. Para utilizar diversas instâncias do Tomcat em uma máquina, use a CATALINA_BASE propriedade. Disponível aqui. https://tomcat.apache.org/tomcat-10.0-doc/introduction.html https://tomcat.apache.org/tomcat-10.0-doc/introduction.html 26 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Coyote Sendo outro componente importante do Tomcat, o Coyote suporta como servidor web o protocolo HTTP 1.1. Dessa forma, permite que o componente Catalina acumule também a função de servir de forma eficiente a todas as funções de um servidor, por exemplo, o Apache Web Server, além de páginas HTML e as aplicações CGI. O componente Coyote JK oferece à Catalina a mesma interface de servidor web HTTP, porém o processamento dos dados HTTP não acontecem internamente, são redimensionados por meio do protocolo JK (AJP - Apache JServ Protocol) para um outro servidor, que poderá ser o Apache Web Server. Jasper O componente Jasper é o processador JSP que tem a função de interpretar e compilar os códigos JSP, taglibs, JSTL, para gerenciá-los em um determinado pool para reúso. IMPORTANTE Existem outros componentes do Tomcat que são responsáveis por cuidar do deployment de aplicações Web clustering e alta disponibilidade. Diretórios do Tomcat Vejamos alguns dos principais diretórios do Tomcat (TOMCAT.ORG, 2022): • /bin - inicialização, desligamento e demais scripts. Os *. sharquivos (utilizados para sistemas Unix) são 27ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 duplicatas funcionais dos *.batarquivos (utilizado para sistemas Windows). A linha de comando do Windows32 não permite certas funcionalidades. Existem alguns arquivos adicionais. • /conf - arquivos de configuração e DTDs relacionados. Sendo o arquivo server.xml. o mais importante aqui e o arquivo principal de configuração para o contêiner. • /logs - os arquivos de log são diretórios por padrões. • /webapps - local onde os webapps vão. Servlets e Java Server Pages Um servlet é uma classe desenvolvida na linguagem Java e seus objetos têm a função no HTML, documentos codificados. As funcionalidades dos servlets resultam na necessidade do web designer e precisam ter conhecimento na linguagem Java para que possam construir nela as páginas de uma determinada aplicação. Escrever páginas, utilizando a tecnologia JSP, faz com que essas limitações sejam superadas. IMPORTANTE É importante entender que uma página escrita em JSP (extensão.jsp) será uma página de HTML que conterá pequenas partes de código em Java ou que o uso de tags especiais será definido em JSP. Utilizar essas tags fará com que o web designer não precise escrever nenhum código, usando o Java. No caso da tecnologia ASP (Páginas Ativas de Servidor), o programador poderá criar suas tags na linguagem Java e customizá-las para a aplicação que esteja desenvolvendo. https://www.devmedia.com.br/curso/curso-de-html-basico/371 28 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Para implementar a especificação JavaServer Pages 2.3, o Tomcat 10.0 usa o Jasper 2 que passou por atualizações para melhorar o seu desempenho, se comparado ao Jasper original. Foram realizadas alterações nesse ponto, que estão explicadas na sua página (2022): • JSP Custom Tag Pooling - os objetos Java, instanciados para JSP Custom Tags, poderão ser agrupados e reutilizados, aumentando, de forma significativa, o seu desempenho das páginas JSP que fazem uso das tags personalizadas. • Compilação JSP em segundo plano – quando for realizada uma alteração em uma página JSP compilada, o Jasper 2 poderá recompilar, em segundo plano, essa página. A página JSP quefoi compilada antes continuará disponível para que as solicitações sejam atendidas. Após a nova página ser convertida com sucesso, haverá a substituição da antiga. Dessa forma, irá melhorar a disposição de tais páginas JSP em um servidor de produção. • Recompilar o JSP em casos da página incluída for alterada – com o Jasper 2 é possível detectar, quando uma página que foi incluída no tempo de compilação do JSP sofreu alteração, e em seguida, ser recompilada no JSP pai. IMPORTANTE O Jasper é implementado, utilizando a classe servlet org.apache.jasper.servlet.JspServlet. • JDT usado para compilar páginas JSP - o compilador Eclipse JDT Java passa a ser utilizado para execução da compilação de código-fonte Java JSP. Esse compilador https://cwiki.apache.org/confluence/display/TOMCAT/Specifications 29ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 tem a função de carregar dependências de origem do carregador de classe do contêiner. Poderão ser utilizados ainda o Ant e javac. É possível com o servidor Tomcat, converter de forma automática, toda página JSP em um servlet que seja equivalente, ou seja, é possível criar código fonte Java com esse servidor, utilizando um documento HTML. Visto pelo lado técnico, o Tomcat é referência na implementação das especificações de servlets e JSP, criadas pela empresa Sun. Já do ponto de vista operacional, a finalidade principal dos servlets e do JSP é garantir que conteúdos sejam criados de forma dinâmica. Essa dinâmica irá funcionar da seguinte forma: • Um usuário faz a solicitação de um documento, por meio do seu browser, usando um URL para indicar, um servidor Tomcat. • Quando o servidor recebe a solicitação (URL), realizada pelo usuário, executa o servlet ou o JSP que faz correspondência a URL (especificada como arquivo web.xml). Esse servlet ou JPS irá gerar um documento no formato HTML, que de uma forma geral será uma combinação de tags HTML e o resultado de algum processamento, como o acesso a algum banco de dados. • Por meio do browser, o usuário irá receber o conteúdo que foi gerado a partir do servidor Tomcat. 30 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Instalação e configuração do Apache Tomcat Para instalar e utilizar o Tomcat 10.0 (última versão disponibilizada), para criar aplicativos da web, devemos seguir as etapas descritas a seguir: • JDK - o Tomcat 10.0 deve ser executado no Java SE 8 ou posterior. É possível encontrar JDKs compatíveis para diversas plataformas no link disponível aqui. • No link disponível aqui, estão disponíveis os downloads binários do servidor Tomcat. • O manual de instalação com o detalhamento de como proceder está no link disponível aqui. • Baixar a ferramenta de compilação Ant, disponível aqui e realizar a instalação. Logo após, incluir o bindiretório http://www.oracle.com/technetwork/java/javase/downloads/index.html http://www.oracle.com/technetwork/java/javase/downloads/index.html https://ant.apache.org/ https://ant.apache.org/ https://tomcat.apache.org/tomcat-10.0-doc/setup.html https://tomcat.apache.org/tomcat-10.0-doc/setup.html https://ant.apache.org/ 31ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 da distribuição Ant em seu ambiente de PATH variável, baseando as práticas padrão na plataforma de sistema operacional utilizada. Depois, executar o antcomando shell de forma direta. Não há uma forma padrão para configurar o Tomcat, pois ele permite vários tipos de plataformas. Existem várias maneiras de configurar o Tomcat para execução em diferentes plataformas. O arquivo RUNNING. txt (disponível aqui) é a principal documentação com todas as informações sobre sua configuração. Porém, a seguir temos algumas informações importantes sobre a instalação: No Windows, a instalação do Tomcat poderá ser realizada, utilizando o instalador do Windows, que tem a interface e as funcionalidade, parecidas com outros instaladores com base em assistentes. Vejamos a seguir alguns itens interessante dessa configuração (TOMCAT.APACHE, 2022): • Instalação como um serviço- independente da configuração que for selecionada, o Tomcat será instalado como um serviço do Windows. Na página do componente, usar a caixa de seleção que irá definir https://ant.apache.org/ https://tomcat.apache.org/tomcat-10.0-doc/RUNNING.txt https://tomcat.apache.org/tomcat-10.0-doc/RUNNING.txt https://tomcat.apache.org/tomcat-10.0-doc/RUNNING.txt https://tomcat.apache.org/tomcat-10.0-doc/RUNNING.txt 32 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 o serviço como inicialização de forma automática, ou seja, ele será iniciado sempre com o Windows. É recomendado como forma de segurança que o serviço seja executado por meio de um usuário separado e com permissões reduzidas. • Localização do Java - o instalador irá fornecer um JRE padrão, utilizado para executar o serviço. Ele usa o registro, determinando qual o caminho base de um JRE Java 8 ou de um JRE posterior. Inclui-se aqui o JRE que foi instalado como parte do JDK. Quando for instalado em um sistema operacional de 64 bits, a procura do instalador será primeiro por um JRE de 64 bits. Caso não seja possível, irá procurar um JRE de 32 bits. Caso JRE não seja encontrado, durante a execução em um S.O de 64 bits, o instalador vai para JDK de 64 bits. Caso não veja nem um JRE ou JDK, o instalador irá tentar usar o JAVA_HOME variável de ambiente. Assim, não há obrigatoriedade em usar o JRE padrão que for detectado pelo instalador, pois ele poderá utilizar um JRE Java 8 ou posterior instalado (32 bits ou 64 bits). • Ícone de bandeja -quando o Tomcat é executado como um serviço, não haverá nenhum ícone de bandeja presente. Observe que ao optar por executar esse aplicativo no final da instalação, o ícone da bandeja será usado mesmo que ele tenha sido instalado como um serviço. • Padrões -os padrões, usados pelo instalador, podem ser substituídos pelo uso do /C=argumento da linha de comando. O arquivo de configuração usa o formato name=value com cada par em uma linha separada. Os nomes das opções de configuração disponíveis são: 33ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 • JavaHome • TomcatPortShutdown • TomcatPortHttp • TomcatMenuEntradasEnable • TomcatShortcutAllUsers • TomcatServiceDefaultName • TomcatServiceName • TomcatServiceFileName • TomcatServiceManagerFileName • TomcatAdminEnable • TomcatAdminUsername • TomcatAdminPassword • TomcatAdminRoles Usando /C=...junto com /Se /D=é possível realizar instalações autônomas, totalmente, configuradas do Apache Tomcat. O instalador criará atalhos que permitem iniciar e fazer sua configuração. É importante observar que o aplicativo da web de administração desse servidor só pode ser usado, quando ele estiver em execução. 34 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 RESUMINDO E então? Gostou do que lhe mostramos? Aprendeu mesmo tudo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que um servidor Web Apache Tomcat é uma ferramenta web de código aberto, com base na linguagem de programação Java que passou a ser um projeto da Apache e foi mantido na comunidade Java de códigos abertos. É uma aplicação típica, desenvolvida Web, executada pelo Tomcat que implica no domínio das linguagens Java, HTML e XML. Sobre suas características, você deve ter entendido que os seus diferenciais são: leveza, código aberto, flexibilidade, estabiliza o servidor, incrementa segurança, bem documentado, maduro, entre outros. Sobre a sua arquitetura, vimos que, o Tomcat, assim como outras ferramentas, contém vários componentes de serviços. Os mais importantes, como a Catalina, é considerado o componente principal do Tomcat. De forma padrão, realiza a implementação de um container Web Java EE, que admite a especificação Servlet, sendo a base das aplicaçõesWeb em Java. O Coyote, outro componente importante do Tomcat, suporta como um servidor Web o protocolo HTTP 1.1 e o componente Jasper que é o processador JSP que tem a função de interpretar e compilar os códigos JSP, taglibs, JSTL, para gerenciá-los em um determinado pool para reúso. Sobre os principais diretórios, você precisa ter em mente que são bin, conf, logs e webapps. Por fim, entendeu as funções do Servlets e Java Server Pages, sendo o Servlets uma classe desenvolvida na linguagem Java e seus objetos têm a função no HTML de documentos codificados. https://www.devmedia.com.br/curso/curso-de-html-basico/371 35ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Sistemas Open Source em servidores de rede Características do Open Source OBJETIVO O software proprietário ainda é muito usado em todo o mundo, e por ser proprietário implica dizer que precisa de licenças para esse uso, exigindo valores altos, dependendo da demanda que esse software tenha que assumir. A partir desses fatores, o Open Source chega ao mundo tecnológico como uma forma de gerar soluções de software livre, atual e que seja de confiança, que cumpra com as necessidades quanto aos seus requisitos, tenha pouca exposição em âmbito de segurança, seja ela crítica ou não e que, assim como o nome já diz, não tenha custo. Existem três níveis de utilizadores do Open Source. São eles: • Mundo empresarial. • Especialistas ou estudiosos da área. • Utilizadores vulgares. Assim, é importante descrever, inicialmente, como cada um desses utilizadores funciona, para que cada um perceba quais são as potencialidades que os softwares Open Source terão para o desenvolvimento específico das suas demandas. O que ainda vem a gerar barreiras, para que haja uma evolução maior e um crescimento desses tipos de software, está em torno da desconfiança em utilizar licenças gratuitas, criando dúvidas, se ele chega a ser tão bom quanto outros que precisam de licença para utilização e que tenham, assim, custos elevados. 36 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Figura 6- Conceito de Open Source Fonte: Freepik (2022). Esse tipo de preconceito ocorre ainda, especialmente, pela falta de informação sobre os softwares de código aberto, assim como pela desinformação, gerada pelos grandes mercados de softwares proprietários que não querem perder seu público. ACESSE Existe uma comunidade intitulada OpenSource que reuni vários recursos e informações sobre o mundo dos códigos abertos. Lá, é possível encontrar livros com informações detalhadas e mais aprofundadas. Acesse o link. http://www.opensource.org/ 37ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 É preciso entender o conceito associado ao software Open Source e quais são as características obrigatórias para que ele de fato seja considerado um OSS (Software Open Source): • Permitir que seja utilizado para qualquer fim e sem restrições. • Distribuição de cópias do software, sem nenhuma restrição. • Acesso liberado ao código fonte e materiais de estudo, demonstrando o funcionamento. • Adaptação às necessidades de cada utilizador. • Permitir que terceiros possam realizar quaisquer alterações introduzidas. Devemos saber quais são as comparações existentes entre os softwares Open Source e os demais tipos. É importante entender que o OSS não deve ser considerado apenas um freeware, ou seja, não o qualifica apenas como software que tenham licença com uso gratuito, porém ele vai além disso, permitindo a disponibilização do código, a liberação para que ele seja alterado e ajustado, de acordo com as necessidades dos usuários. Além disso, permite a distribuição, sem restrições a terceiros, por meio de licença de uso gratuito. Apesar de ser uma prática incomum, ainda existe a venda de softwares open source, na maioria das vezes, relacionada à comercialização dos serviços por exemplo: manutenção, suporte, correção de problemas, novas funcionalidades, entre outros. Porém, de uma forma geral, os softwares estão disponíveis para download gratuito pela internet. Figura 7- Usuários realizam alterações no código 38 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Fonte: Freepik (2022). É possível encontrar práticas ainda de vendas de manuais, algumas vezes, com preços simbólicos para facilitar quem usa o software e que, muitas vezes, tem internet com acesso limitado. Existem diversas vantagens em fazer uso o software Open Source. Entre elas podemos citar: • Formação - a formação em OSS, apesar de ainda em fase de crescimento, vem contribuindo bastante, especialmente, por já existirem diversos profissionais qualificados para dar formação em relação aos produtos mais fortes da mídia. Outro ponto são as universidades que por meio de formação de novos profissionais vêm trazendo com força a temática do OSS, indo além da preparação do uso, mas do ensino destas ferramentas. Por fim, a internet é um facilitador dessas discussões e difusão de conteúdo. 39ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 • Suporte- ainda sendo um processo em crescimento, já existem várias empresas especializadas que oferecem suporte a plataformas de OSS. Quanto maior a divulgação, mais empresas começarão a surgir para realizar apoio e serviços para esse tipo de software. É possível utilizar a internet como um forte suporte, especialmente, pela existência da comunidade on- line, que contém diversos fóruns, websites, sendo um importantíssimo recurso para tirar dúvidas e resolver problemas. • Qualidade - o fato de permitir que sejam realizadas alterações e análises nos códigos, trazendo correções e mudanças, faz com que os softwares sejam, constantemente, melhorados pelos milhares de programadores, espalhados pelo mundo. Assim, a qualidade dos softwares aumenta, contribuindo para a redução de possíveis erros que são desconhecidos e que venham a causar problemas na utilização da ferramenta. • Independência -permite essa total independência na definição da melhor solução ao utilizador, diferente do Software Proprietário. Isso ocorre pelo fato dos desenvolvedores buscarem seguir os protocolos e as interfaces de forma padronizada, diminuindo as necessidades de adaptação a ferramentas novas. • Longevidade - a busca por um produto que seja continuado, assegurando que os softwares tenham longevidade, diferentes dos softwares proprietários que, por questões de vendas, forçam seus clientes a sempre realizar atualizações, fazendo novas compras, descontinuando de forma rápida seus produtos. 40 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 • Segurança - os softwares Open Source estão sempre passando por uma rotina de busca de erros e vulnerabilidades. Com isso, as correções acontecem de uma forma natural e rápida, diminuindo a exposição ao risco. • Licenças -as licenças de OSS permitem distinguir, se o software é livre ou proprietário. O Open Source Initiative (OSI) é um dos órgãos responsáveis por gerenciar e promover os OSS. As licenças mais clássicas, aprovadas pelo OSI, foram as criadas pelo Projecto GNU- GPL (General Policy License) e a LGPL (Library General Policy License). Principais servidores de redes Open Source As estatísticas apresentam que mais de 80% dos aplicativos e sites da web são alimentados por servidores da web de código aberto. Veremos a seguir quais são os servidores web de código aberto mais populares. Servidor HTTP Apache O Apache HTTP Server, também conhecido como HTTPD, ou simplesmente Apache, foi lançado no mercado, pela primeira vez, em 1995. Ele é responsável por alimentar 52% de todos os sites, globalmente. Dessa forma, é de longe o servidor web mais popular. https://w3techs.com/technologies/details/ws-apache/all/all https://w3techs.com/technologies/details/ws-apache/all/all 41ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Figura 8 - Logo do Apache HTTPD Fonte: Apache.org (2022). Embora o Apache httpd seja visto com mais frequênciaem execução no Linux, é possível implantar o Apache, no OS X e no Windows. Ele é licenciado sob a licença Apache, versão 2. O próprio servidor web usa uma arquitetura modular, na qual módulos extras podem ser carregados para estender seus recursos. EXEMPLO: Carregar o mod_proxy permitirá um proxy/gateway, em seu servidor, e o mod_proxy_balancer habilitará o balanceamento de carga para todos os protocolos suportados. A partir da versão 2.4, o Apache também suporta HTTP/2 por meio de um novo módulo, mod_http2. O Apache é, frequentemente, escolhido pelos administradores por sua flexibilidade, poder e suporte quase universal. É extensível por meio de um sistema de módulos carregáveis, dinamicamente, e pode servir diretamente a muitas linguagens de script, como PHP, sem exigir software adicional. Como o Apache HTTP Server tem sido o servidor web mais popular, desde 1996, é possível encontrar uma excelente 42 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 documentação e suporte integrado de outros projetos de software, diretamente em seu site, disponível aqui. NGINX Igor Sysoev começou a desenvolver o NGINX, em 2002, com seu primeiro lançamento público, em 2004. O NGINX foi desenvolvido como uma resposta ao chamado problema C10K e é o segundo em uma lista de servidores da Web de código aberto por uso, executando pouco mais de 30% de todos os sites. Figura 9- Logo da NGINX Fonte: Freepik (2022). O NGINX conta com uma arquitetura assíncrona, orientada a eventos para ajudar a impulsionar seu objetivo de lidar com grandes sessões simultâneas. Tornou-se um servidor web muito popular, entre os administradores, devido à sua leve utilização de recursos e sua capacidade de escalar facilmente. https://httpd.apache.org/ https://httpd.apache.org/ https://en.wikipedia.org/wiki/C10k_problem https://w3techs.com/technologies/details/ws-nginx/all/all 43ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 ACESSE O NGINX é lançado, sob uma licença semelhante ao BSD, e pode ser implantado não apenas como servidor web, mas também como proxy ou balanceador de carga. Você pode encontrar mais informações no site da comunidade NGINX, acessando o link aqui. O Nginx superou o Apache em popularidade devido à sua “pegada” leve e sua capacidade de escalar, facilmente, em hardware mínimo. Ele destaca-se em fornecer conteúdo estático rapidamente, pois tem seu próprio sistema de módulos robusto e pode enviar solicitações dinâmicas de proxy para outro software, conforme necessário. Apache Tomcat Apache Tomcat é um contêiner de Servlet Java de código aberto que funciona como um servidor web. Um servlet Java é um programa Java que estende os recursos de um servidor. Embora os servlets possam responder a qualquer tipo de solicitação, geralmente, implementam aplicativos, hospedados em servidores Web. Esses servlets da web são a contrapartida Java de outras tecnologias de conteúdo dinâmico da Web, como PHP e ASP.NET. A base de código do Tomcat foi doada, pela Sun Microsystems, para a Apache Software Foundation, em 1999, e tornou-se esse projeto de alto nível, em 2005. Atualmente, ele alimenta pouco menos de 1% de todos os sites. https://nginx.org/en/ https://nginx.org/en/ https://nginx.org/en/ https://nginx.org/en/ https://en.wikipedia.org/wiki/Java_servlet https://w3techs.com/technologies/details/ws-tomcat/all/all 44 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 O Apache Tomcat, lançado sob a licença Apache versão 2, é normalmente utilizado para executar aplicativos Java. Ele pode, no entanto, ser estendido com o Coyote, para também desempenhar a função de um servidor web normal que serve arquivos locais como documentos HTTP. O Apache Tomcat é, frequentemente, listado entre outros servidores de aplicativos Java de código aberto. Alguns exemplos são: JBoss, Wildfly e Glassfish. Node.js Node.js é um ambiente JavaScript do lado do servidor para aplicativos de rede, como servidores da web. Com uma posição de mercado menor, ele fornece 0,2% de todos os sites. Foi, originalmente, escrito em 2009, por Ryan Dahl. O projeto Node.js, governado pela Node.js Foundation, é facilitado pelo programa Collaborative Projects da Linux Foundation. Figura 10- Logo da Node.js Fonte: Pixabay (2022). A diferença entre o Node.js e outros servidores web populares é que ele é, basicamente, um ambiente de tempo de execução multiplataforma para construir aplicativos de rede. Ele aplica uma arquitetura, orientada a eventos capaz de E/S assíncrona. http://www.jboss.org/products/eap/overview/ http://wildfly.org/ https://glassfish.java.net/ https://w3techs.com/technologies/details/ws-nodejs/all/all 45ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Essas opções de design otimizam a taxa de transferência e a escalabilidade em aplicativos da Web, permitindo executar comunicação em tempo real e jogos de navegador. ACESSE O Node.js foi lançado sob uma combinação de licenças. Mais informações, acesse o site do projeto, disponível aqui. O Node.js, também, destaca a diferença nas pilhas de desenvolvimento da Web, no qual ele é, claramente, parte da pilha HTML, CSS e JavaScript, em oposição ao Apache ou NGINX, que fazem parte de muitas pilhas de software diferentes. Lighttpd Lighttpd foi lançado, em março de 2003. Atualmente, ele alimenta aproximadamente 0,1% de todos os sites e é distribuído, sob uma licença BSD. Ele distingue-se por seu baixo consumo de memória, pequena carga de CPU e otimizações de velocidade. Figura 11- Logo LIGHTTPD Fonte: wikipedia.org (2022). https://raw.githubusercontent.com/nodejs/node/master/LICENSE https://raw.githubusercontent.com/nodejs/node/master/LICENSE https://nodejs.org/en/ https://nodejs.org/en/ https://nodejs.org/en/ https://nodejs.org/en/ 46 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Ele utiliza uma arquitetura, orientada a eventos, é otimizado para um grande número de conexões paralelas e suporta FastCGI, SCGI, Auth, compressão de saída, reescrita de URL e muitos outros recursos. Lighttpd é um servidor web popular para os frameworks web Catalyst e Ruby on Rails. ACESSE Para conhecer mais sobre esse o servidor Lighttpd, acesse a sua página principal e tenha mais informações no link disponível aqui. Existem outros servidores da web populares. Recomendamos o download de uma pilha LAMP (acrônimo dado para as pilhas de software mais comuns, utilizadas nos aplicativos mais populares da web),por exemplo: Linux, Apache, MySQL, PHP ou LEMP (Linux, NGINX, MySQL, PHP). Existem muitas dessas pilhas disponíveis, fornecendo diferentes sabores, por exemplo, nas versões do Apache e do PHP. Elas, geralmente, são fornecidas como instaladores de um clique ou disponíveis em seu gerenciador de pacotes/software no Linux. http://www.lighttpd.net/ http://www.lighttpd.net/ https://en.wikipedia.org/wiki/LAMP_(software_bundle) https://en.wikipedia.org/wiki/Acronym https://en.wikipedia.org/wiki/Software_stack https://en.wikipedia.org/wiki/Web_application 47ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 RESUMINDO Concluímos mais um ponto de aprendizagem importante. Como foram os seus estudos, conseguiu entender todos os pontos que foram propostos? Vamos revisar cada um dele e ter a certeza que realmente entendeu o tema de estudo desse ponto. Vamos então resumir tudo que vimos até aqui. Você deve ter aprendido que o Open Source chegou ao mundo tecnológico como uma forma de gerar soluções de software livre, atual e que seja de confiança, que cumpra com as necessidades quanto aos seus requisitos. Aprendeu que existe uma comunidade intitulada Open Source que reuni vários recursos e informações sobre o mundo dos códigos abertos. Sobre as principais características do Open Source, aprendemos que ele precisa permitir que seja utilizado para qualquer fim e sem restrições, ter distribuição de cópias do software sem nenhumas restrições, acesso liberado ao código fonte e materiais de estudo, demonstrandoo funcionamento, adaptação às necessidades de cada utilizador e permitir que terceiros possam realizar quaisquer alterações introduzidas. Vimos que é importante saber as vantagens de utilizar servidores livres e algumas dessas vantagens são: formação, suporte, qualidade, independência, longevidade, segurança, licenças, entre outros. Por fim, é importante você ter entendido as características dos cinco principais servidores de código aberto e suas principais utilidades. 48 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Técnicas de configuração de sistemas Open Source OBJETIVO Existem vários sistemas Open Source de confiança, como já vimos. Veremos neste ponto como devem ser realizadas as configurações do Apache Tomcat, um dos sistemas Open Source mais utilizados no mercado. Configurando o Apache Tomcat Executando o Contêiner Servlet/JSP do Apache Tomcat 10.0: para configurar esse servidor, precisamos um Java Standard Edition Runtime Ambiente (JRE) versão 8 ou posterior (APACHE TOMCAT.ORG, 2022). Para realizar a execução do JRE 8 ou posterior, siga os passos a seguir: 1. Baixe e instale um Java SE Runtime Environment (JRE). • Baixe um Java SE Runtime Environment (JRE)versão 8 ou posterior, no site disponível aqui. • Instale o JRE de acordo com as instruções incluídas no liberar. Observação: Você também pode usar um Java Development Kit (JDK) completo em vez de apenas um JRE. http://www.oracle.com/technetwork/java/javase/downloads/index.html http://www.oracle.com/technetwork/java/javase/downloads/index.html 49ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 2. Baixe e instale o Apache Tomcat. • Baixe uma distribuição binária do Tomcat disponível aqui. • Descompacte a distribuição binária para que ela resida em seu próprio diretório (convencionalmente chamado “apache-tomcat-[versão]”). Para efeitos do restante desse documento, o nome “CATALINA_HOME” é usado para se referir ao caminho completo desse diretório. IMPORTANTE Como alternativa ao download de uma distribuição binária, você pode criar seu próprio código-fonte do Tomcat, conforme descrito em “CONSTRUÇÃO. txt”. Também é possível fazer a compilação “release” completa e encontrar a distribuição criada no diretório “output/release” e, em seguida, prosseguir com a descompactação, ou fazer uma compilação simples, utilizando o diretório “output/build” como “CATALINA_HOME”. Esteja atento que existem algumas diferenças entre o conteúdo do diretório “output/build” e um “release” completo distribuição. 3. Configurar variáveis de ambiente O Tomcat é um aplicativo Java e não usa variáveis de ambiente diretamente. As variáveis de ambiente são usadas pelos scripts de inicialização do servidor. Os roteiros usam as https://tomcat.apache.org/ https://tomcat.apache.org/ 50 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 variáveis de ambiente para preparar o comando que inicia o Tomcat. • Defina CATALINA_HOME (obrigatório) e CATALINA_BASE (opcional) A variável de ambiente CATALINA_HOME deve ser definida para o local do diretório raiz da distribuição “binária” do Tomcat. Os scripts de inicialização dele têm alguma lógica para definir essa variável, automaticamente, se estiver ausente, com base na localização do script de inicialização em *nix e no diretório atual no Windows. Essa lógica pode não funcionar em todas as circunstâncias, portanto, é recomendável definir a variável, explicitamente. A variável de ambiente CATALINA_BASE especifica a localização da raiz diretório da “configuração ativa” do Tomcat, sendo opcional. O padrão é igual a CATALINA_HOME. Usar valores distintos para as variáveis CATALINA_HOME e CATALINA_ BASE, são recomendados para simplificar futuras atualizações e manutenção. • Definir JRE_HOME ou JAVA_HOME (obrigatório) Essas variáveis são usadas para especificar a localização de um Java Runtime Ambiente ou de um Java Development Kit que é usado para iniciar o Tomcat. A variável JRE_HOME é usada para especificar a localização de um JRE, já a JAVA_HOME variável é usada para especificar a localização de um JDK. O uso de JAVA_HOME fornece acesso a certas opções de inicialização adicionais que não são permitidas, quando JRE_ HOME é usado. Se JRE_HOME e JAVA_HOME forem especificados, JRE_HOME será usado. O local recomendado para especificar essas variáveis é um script “setenv”. 51ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 • Outras variáveis (opcional) Uma variável, frequentemente, usada é CATALINA_OPTS. Permite especificação de opções adicionais para o comando Java que inicia o Tomcat. Outra é o JAVA_OPTS, usado com menos frequência que permite especificação de opções que são usadas tanto para iniciar quanto para parar o Tomcat, como para outros comandos. IMPORTANTE Não é recomendado utilizar o JAVA_OPTS para especificar limites de memória, pois será preciso muito dessa memória para um pequeno processo que é usado no Tomcat. Essas configurações pertencem a CATALINA_OPTS. Outra variável, frequentemente, usada é CATALINA_PID (somente em *nix). Ela especifica a localização do arquivo no qual o ID do processo, do Tomcat bifurcado processo Java, será escrito. Essa configuração é opcional e ativa as seguintes características: • Melhorar a proteção contra tentativas de inicialização duplicadas. • Permitir o encerramento forçado do processo do Tomcat, quando ele não reage ao comando de desligamento padrão. • Usando o script “setenv” (opcional, recomendado) Além de CATALINA_HOME e CATALINA_BASE, todas as variáveis de ambiente podem ser especificadas no script “setenv”. O script é colocado em CATALINA_BASE/bin ou no diretório CATALINA_HOME/bin e é nomeado setenv.bat (no Windows) ou setenv.sh (no *nix). O arquivo tem que ser legível. 52 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Por padrão, o arquivo de script setenv está ausente. Se o arquivo de script estiver presente tanto em CATALINA_BASE quanto em CATALINA_HOME, o de CATALINA_BASE é preferido. EXEMPLO: Para configurar as variáveis JRE_HOME e CATALINA_PID, você pode criar o seguinte arquivo de script: No Windows, %CATALINA_BASE%\bin\setenv.bat: set “JRE_HOME=%ProgramFiles%\Java\jre8” sair /b 0 Em *nix, $CATALINA_BASE/bin/setenv.sh: JRE_HOME=/usr/java/latest CATALINA_PID=”/run/tomcat.pid” As variáveis CATALINA_HOME e CATALINA_BASE não podem ser configuradas no script setenv, porque elas são usadas para localizar esse arquivo. Todas as variáveis de ambiente descritas e o script “setenv” são usados somente, se utilizar os scripts padrão para iniciar o Tomcat. EXEMPLO: Se foi instalado o Tomcat como um serviço no Windows, o wrapper de serviço inicia o Java, diretamente, e não usa os arquivos de script. 1. Iniciar o Tomcat • O Tomcat pode ser iniciado, executando um dos seguintes comandos: • No Windows: %CATALINA_HOME%\bin\startup.bat 53ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 ou %CATALINA_HOME%\bin\catalina.bat start - Em *nix: $CATALINA_HOME/bin/startup.sh ou $CATALINA_HOME/bin/catalina.sh início • Após a inicialização, os aplicativos da web padrão incluídos no Tomcat estarão disponíveis acessando: http://localhost:8080/ • Mais informações, sobre como configurar e executar o Tomcat, podem ser encontradas na documentação já citada, bem como no site do Tomcat:https://tomcat. apache.org/ 2. Desligar o Tomcat • O Tomcat pode ser desligado, executando um dos seguintes comandos: • No Windows: %CATALINA_HOME%\bin\shutdown.bat ou %CATALINA_HOME%\bin\catalina.bat parada - Em *nix: $CATALINA_HOME/bin/shutdown.sh ou $CATALINA_HOME/bin/catalina.sh parada 54 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Configurações avançadas Em muitas circunstâncias, é desejável ter uma única cópia de um Tomcat de distribuição binária, compartilhada entre vários usuários no mesmo servidor. Se possível, definir a variável de ambiente CATALINA_BASE para o diretório que contémos arquivos para sua instância ‘pessoal’ do servidor. Ao executar com CATALINA_HOME e CATALINA_BASE separados, os arquivos e os diretórios são divididos da seguinte forma: Em CATALINA_BASE: 1. bin - Somente os seguintes arquivos: • setenv.sh (*nix) ou setenv.bat (Windows). • tomcat-juli.jar. • conf - arquivos de configuração do servidor (incluindo server.xml). • lib - bibliotecas e classes. • logs - arquivos de log e saída. • webapps - aplicativos da web carregados, automaticamente. • work - diretórios de trabalhos temporários para aplicativos da web. • temp - diretório usado pela JVM para arquivos temporários (java.io.tmpdir). Em CATALINA_HOME: 2. bin - scripts de inicialização e desligamento: 55ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 • os seguintes arquivos serão usados somente, se estiverem ausentes em CATALINA_BASE/bin: setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar. • lib - Bibliotecas e classes. • endossado - bibliotecas que substituem o padrão “Padrões aprovados”. IMPORTANTE Essas bibliotecas são fornecidas pelo JRE. Sendo suportado apenas para Java Soluções de problemas Existem apenas duas coisas que provavelmente darão errado, durante o stand-alone de configuração do Tomcat: 1. O problema mais comum é quando outro servidor web (ou qualquer processo para esse assunto) reivindica a porta 8080. Essa é a porta HTTP padrão que o Tomcat tenta vincular, na inicialização. Para alterar isso, abra o arquivo $CATALINA_HOME/conf/server.xml e procure 57ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 por ‘8080’. Altere-o para uma porta que não está em uso e maior que 1024, pois portas, menores ou iguais a 1024, requerem do superusuário acesso para vincular no UNIX. Reinicie o Tomcat e o processo vai funcionar. Certifique- se de substituir o “8080” na URL que está usando para acessar o servidor. EXEMPLO: Se você alterar a porta para 1977, você solicitaria a URL http://localhost:1977/ em seu navegador. 2. A máquina ‘localhost’ não foi encontrada. Isso pode acontecer, se você estiver atrás de um procurador. Se for esse o caso, certifique-se de que a configuração de proxy do seu navegador sabe que você não deve passar pelo proxy para acessar o “localhost”. No Firefox, isso está em Ferramentas/Preferências -> Avançado/Rede -> Conexão -> Configurações. No Internet Explorer, é Ferramentas -> Opções da Internet -> Conexões -> Configurações de LAN. Componentes adicionais Os seguintes componentes opcionais podem ser colocados com o binário Apache Tomcat de distribuição. Se eles não estiverem incluídos, você poderá instalá-los, separadamente: • Biblioteca nativa do Apache Tomcat. • Iniciador do serviço Apache Commons Daemon. 58 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Ambos são implementados em linguagem C e, como tal, devem ser compilados em código binário. O código binário será específico para uma plataforma e CPU arquitetura e deve corresponder aos executáveis do Java Runtime Environment que serão usados para iniciar o Tomcat. As distribuições binárias específicas do Windows do Apache Tomcat incluem arquivos para esses componentes. Em outras plataformas, você terá que procurar versões binárias em outro lugar ou copiá-las você mesmo. EXEMPLO: Se você está iniciando o uso do Tomcat, não deve se preocupar com esses componentes. Caso deseje utilizá-los, é importante fazer a leitura da sua documentação. Biblioteca nativa do Apache Tomcat É uma biblioteca que permite usar a variante “Apr” de HTTP e AJP conectores de protocolo no Apache Tomcat. Ela é construída em torno de OpenSSL e Apache Bibliotecas de tempo de execução portátil (APR). Essas são as mesmas bibliotecas usadas por Projeto Apache HTTPD Server. Esse recurso era especialmente importante quando o desempenho do Java era fraco. Hoje, continua sendo bastante utilizado pelos usuários. 59ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 ACESSE Para ter mais conteúdo da documentação Apache TomCat, acesse: - Documentação para APR/biblioteca nativa no Guia do usuário do Tomcat, no link disponível aqui - Documentação para os conectores de protocolo HTTP e AJP no Tomcat, referência de configuração, no link disponível aqui. - Página iniciar o projeto Apache Tomcat Native, acesse o link disponível aqui. • Para desativar a biblioteca nativa do Apache Tomcat, quando instalada, ou • Para remover o aviso registrado, durante a inicialização do Tomcat, quando o biblioteca não está instalada: https://tomcat.apache.org/tomcat-10.0-doc/apr.html https://tomcat.apache.org/tomcat-10.0-doc/apr.html https://tomcat.apache.org/tomcat-10.0-doc/config/http.html https://tomcat.apache.org/tomcat-10.0-doc/config/ajp.html https://tomcat.apache.org/native-doc/ https://tomcat.apache.org/native-doc/ 60 ADMINISTRAÇÃO DE SERVIDORES U ni da de 2 Edite o arquivo “conf/server.xml” e remova “AprLifecycleListener”. O arquivo binário da biblioteca Apache Tomcat Native, geralmente, é nomeado: - “tcnative-1.dll” no Windows - “libtcnative-1.so” em sistemas *nix RESUMINDO E então? Como foi seu aprendizado neste capítulo? Conseguiu atingir os objetivos de aprendizagem propostos? Para garantir que você tenha entendido bem tudo que foi apresentado, vamos fazer um resumo dos pontos mais importante, combinado? Nessa unidade, você de ter aprendido o gerenciamento da configuração do sistema Open Source Apache Tomcat, sendo este um dos mais utilizados entre a comunidade do Open Source. Você deverá ter entendido que para configurar Apache Tomcat 10.0 requer um Java Standard Edition Runtime Ambiente (JRE) versão 8 ou posterior que, inicialmente, é preciso instalar as ferramentas essenciais, o Java SE Runtime Environment (JRE) e o Apache Tomcat. Logo depois, iniciar o processo de configurar suas variáveis, que são usadas pelos scripts de inicialização do Tomcat. Depois, é preciso ter compreendido o processo de inicialização do Tomcat, assim como o processo de desligamento. Por fim, estarão disponíveis configurações avançadas que serão essenciais para melhor desempenho do Tomcat. Por fim, é importante também você ter compreendido as possíveis falhas no processo de configuração e como realizar suas reparações.