Apresentação do PowerPoint - CBSoft 2012

Transcrição

Apresentação do PowerPoint - CBSoft 2012
III CBSoft – Congresso Brasileiro de
Software: Teoria e Prática
Natal-RN, 28 de setembro de 2012
2/121
* Prof. Frederico Lopes (UFRN)
* Prof. André Almeida (IFRN)
* Profa. Thais Batista (UFRN)
* Everton Cavalcante (UFRN)
* Renato Gondim (UFRN)
* Thomas Diniz (UFRN)
* Thiago Cesar (UFRN)
* Arthur Cassio (UFRN)
3/121
* Introdução
* Estudo de Caso – Health Watcher
* Plataformas
* Amazon AWS
* Google App Engine
* OpenStack
* Conclusão
4/121
* Introdução
* Estudo de Caso – Health Watcher
* Plataformas
* Amazon AWS
* Google App Engine
* OpenStack
* Conclusão
5/121
Explosão de
domínios de
aplicações
Proliferação
de
dispositivos
Poderosos
processadores
multicore
Poder da
virtualização
sobre
hardware
Metodologias
de software
Maior largura de banda para
comunicação
Fonte: Ramamurthy and Madurai. Wipro Chennai 2011
* Era atual da Computação
6/121
Computação em Nuvem
modelo computacional para acesso conveniente,
sob demanda e de qualquer localização, a uma
rede compartilhada de recursos computacionais
(redes, servidores, armazenamento, aplicativos e
serviços) que possam ser prontamente
disponibilizados como serviços e acessados com um
esforço mínimo de gestão ou de interação com o
provedor de serviços.
P. Mell and T. Grance (2011) The NIST Definition of Cloud Computing. NIST, EUA.
7/121
Computação em Nuvem
A nuvem é um grande reservatório de recursos virtualizados
facilmente utilizáveis e acessíveis (como hardware, plataformas
de desenvolvimento e/ou serviços). Esses recursos podem ser
dinamicamente reconfigurados para ajustar a carga (escala)
variável do sistema, permitindo também um uso ótimo dos
recursos. Tal reservatório é geralmente explorado por um
modelo pay-per-use no qual as garantias são oferecidas por um
Provedor de Infraestrutura por meio de SLAs (Service Level
Agreement - Acordo de Nível de Serviço)
L.M. Vaquero et al., “A break in the clouds: towards a cloud definition”,
ACM SIGCOMM Computer Communication Review, 2008
8/121
* Algumas vantagens de se implantar uma
aplicação na nuvem
* Elasticidade
* Balanceamento de cargas
* Confiabilidade
* Redução de custos
*
Hardware, software, técnicos, energia
9/121
* Alguns serviços que podem ser usados na
implantação
* Máquinas virtuais
* Armazenamento de arquivos
* Armazenamento de dados
*
*
SQL based
Non SQL based
10/121
* Apresentar:
* Implantação de uma aplicação real
*
Serviços de diferentes plataformas
* Amazon AWS
* Google App Engine (GAE)
* OpenStack
* Relação com o Minicurso 7
* Foco na implantação/uso do AWS e
OpenStack
11/121
* Introdução
* Estudo de Caso – Health Watcher
* Plataformas
* Amazon AWS
* Google App Engine
* OpenStack
* Conclusão
12/121
* Desenvolvido por Soares et al., 2006
* Aplicação Web Java
* Sistema que registra informações de saúde
pública de uma cidade, através do registro de
queixas
* Aplicação real e não trivial, com uso de servlets,
JDBC, RMI, além de possuir um bom design
arquitetural
* Padrões de projeto
13/121
* Funcionalidades
* Usuário é qualquer cidadão que pode efetuar
reclamações ou consultar os serviços de saúde
disponíveis
* Quando uma reclamação é registrada, a mesma é
encaminhada a um setor competente, sendo a
resposta de domínio público
14/121
* Funcionalidades
* Registros de Reclamação
*
*
Intoxicação Alimentar
*
Reclamações diversas
Maus tratos de animais ou doenças transmitidas por
animais
* Os administradores do sistema podem registrar as
informações dos serviços de saúde
15/121
* Camadas
* View Layer: responsável pela interface com usuário
e pela a solicitação dos serviços aos servlets
* Distribution Layer: externalização dos dados,
permitindos outras aplicações terem acesso
* Business Layer: regras de negócio
* Data Layer: responsável pelo controle da
persistência do sistema
16/121
17/121
* Introdução
* Estudo de Caso – Health Watcher
* Plataformas
* Amazon AWS
* Google App Engine
* OpenStack
* Conclusão
Health Watcher
18
19/121
* Amazon Web Services
* Oferece diversos serviços de nuvem através do
uso de Web services
* Serviços como: Capacidade Computacional,
Armazenamento de Dados, Implantação de
Aplicações, Armazenamento de Arquivos
* Além do acesso através de Web services,
disponibiliza console de gerenciamento Web e
API para a Java,PHP, Python, Ruby e .Net
20/121
* Cada serviço possui sua própria tabela
de custo, que podem variar, de tráfego
de acesso, horas de instância, número
de implantações
* Para novos usuários a AWS criou a Free
Tier, que permite o uso gratuito de
alguns serviços, com limitações
* Detalhes: http://aws.amazon.com/free/
21/121
* AWS-HW
* Amazon EC2: Serviços de computação
(máquinas Virtuais)
* Elastic Beanstalk: Implantação de aplicações
(Java, PHP, Python,.Net)
* RDS: Serviço de banco de dados relacional
* S3: Serviço de armazenamento
* SimpleDB: Armazenamento de log da aplicação
22/121
* Preparando ambiente de desenvolvimento
* Eclipse Juno 4.2 – JEE (www.eclipse.org)
* AWS Toolkit for Java – Eclipse Plugin
* Google Eclipse Plugin e SDK*
* Código do Health Watcher
*
Disponível em:
http://code.google.com/p/hw-cbosft2012-cloud/
*Aplicação possui suporte para ser implantada nas duas plataformas
23/121
* AWS Eclipse Plugin
* Help -> Install new Software
* Add Site: http://aws.amazon.com/eclipse/
24/121
* Configurando ambiente
* Importar o projeto do Health Watcher
* Ao importar o projeto o Eclipse ira baixar o SDK da
Amazon para ser integrado ao projeto
* Passaremos agora a analisar os aspectos
relacionados ao uso dos serviços por parte da
nossa aplicação
25/121
* SimpleDB
* Serviço de armazenamento não relacional
* Diferente de banco de dados do tipo NoSQL
* Provê flexibilidade e escalabilidade sem o
overhead associado a banco de dados
* Estruturado em formato de texto para
armazenamento
* http://aws.amazon.com/simpledb/
26/121
* SimpleDB - Estrutura de funcionamento
Add Itens
Region
Domain
Query Itens
Delete Itens
Domains equivalem a tabelas de banco de
dados, porém não é possível realizar consulta
entre domains. Para usar, através da API
criamos o domínio e em seguida adicionamos
uma entrada no domínio
27/121
* SimpleDB
* Para utilizar qualquer API da Amazon é necessário
realizar a autenticação com a conta criada
* São usados os valores de acessKey e secretKey que
são gerados no momento da criação da conta
* Para acessar os valores:
My Account-> Security Credentials
* Colocar os valores em um arquivo na raiz chamado
AccessCredentials.properties
28/121
* SimpleDB - Criação do Objeto SimpleDB
Classe healthwatcher.Constants
29/121
* SimpleDB – Criação e alteração do domínio
Classe lib.logging.LogMechanism
30/121
* S3
* Serviço de armazenamento
* Permite arquivos de até 5 terabytes
* Define regras de acesso para upload e download
dos arquivos armazenados
* Acessar o painel de Controle, Storage->S3
31/121
* S3
* Primeiro devemos criar um bucket, que
representa uma unidade de armazenamento
* Dentro desse bucket podemos criar pastas,
adicionar qualquer tipo de arquivo de até 5
terabytes
* Em seguida definimos a permissão de acesso ao
bucket
* Através da API recuperamos a referência ao
bucket e adicionamos um arquivo
32/121
* S3
* No Health Watcher, ao cadastrar um sintoma, o
administrador pode adicionar um foto ilustrativa
do mesmo
* Armazenaremos essa foto no bucket
* Para acessar o serviço através da API precisamos
fornecer credenciais válidas e com permissão de
acesso ao referido bucket
33/121
* S3 - Armazenando arquivo no bucket
Classe
healthwatcher.view.command.InsertSymptom
34/121
* RDS
* Serviço para armazenamento de banco de dados
relacional
* Preço cobrado por hora
DB Instance Class (On-Demand)
Micro DB Instance
Small DB Instance
Large DB Instance
Extra Large DB Instance
High-Memory DB Instance Class
Extra Large DB Instance
Double Extra Large DB Instance
Quadruple Extra Large DB Instance
$0.025
$0.105
$0.415
$0.830
$0.585
$1.170
$2.340
35/121
* Amazon RDS
* Antes de criar o banco de dados:
*
criar um grupo de segurança, que define a política de
acesso ao banco de dados
*
As opções disponíveis para permissão é o
estabelecimento faixa de IP com acesso ou associar
algum grupo de segurança do EC2, liberando as
instâncias para acesso
36/121
37/121
* Amazon RDS
* Criar uma instância
* DB Instances -> Launch DB Instance
* Preencher as seguintes informações:
* Tipo de instância
* escolher micro para evitar cobranças altas
* Espaço alocado
* Usuário e senha de acesso ao banco de dados
38/121
39/121
40/121
* Ao final do processo é criado uma instância com o
banco de dados
* Para conectar ao banco usar o endpoint fornecido
* Modificaremos a classe Constants no pacote
healthwatcher
* Devemos alterar a URL para informar o endpoint,
usuário e senha de acesso ao banco de dados
41/121
* RDS
* Utilizarmos o script sql para criação do banco de
dados
* Para isso temos basicamente duas opções:
*
Acessar o banco de dados através de um
gerenciador e carregar o script SQL; nesse caso é
necessário fornecer permissão de acesso a máquina
*
Utilizar o cliente MySQL de uma máquina virtual do
EC2 que tenha permissão de acesso
42/121
* RDS
* Modificando a classe Constants
* Alterar as variáveis:
* DB_URL = EndPoint
* DB_USER=<usuário_BD>
* DB_PASS=<Senha_usuario_BD>
43/121
* Elastic BeanStalk
* Permite a implantação direta de aplicações,
sem a necessidade de configuração de
instâncias do EC2
* Suporte atual para implantação de aplicações
Java, PHP e Python
* Iremos demonstrar agora qual seria o processo
para implantar nossa aplicação utilizando o
plugin do Eclipse
44/121
* Elastic BeanStalk
* Run on Server
* Selecionar o tipo de
instância EC2
desejada
45/121
* Elastic Beanstalk
* Em seguida informar o
nome da aplicação e
do ambiente
* O ambiente refere-se a
configuração da
instância EC2 que irá
rodar a aplicação
46/121
* Elastic BeanStalk
* Na última etapa podemos informar se queremos
associar uma chave a instância
* Permite acesso direto a instância criada
* Criando chaves -> Services ->EC2 -> Key Pairs
* Seguindo os passos, a aplicação será
empacotada e implantada
* O arquivo war é armazenado no serviço S3
47/121
* Elastic BeanStalk
* Após a implantação, devemos verificar qual
group de segurança está associado a instância
* Esse mesmo grupo deve ser associado a
instância que roda o banco de dados, sob pena
da aplicação não funcionar
* Para acessar o console do BeanStalk, acesse
Services->BeanStalk
48/121
* Provimento de API para acesso através
de serviços WEB
* Possui grande variedade de serviços
integráveis a aplicações existentes
* Constante atualização dos serviços,
proporcionando melhorias
* Curva de aprendizado pequena para
utilização dos serviços
48
49/121
* Introdução
* Estudo de Caso – Health Watcher
* Plataformas
* Amazon AWS
* Google App Engine
* OpenStack
* Conclusão
Health Watcher
50
51/121
* É um serviço fornecido pela
Google, que permite aos
desenvolvedores criar
aplicações que podem rodar
na sua infraestrutura
52/121
53/121
*
*
*
*
Configuração simples da aplicação
Nenhuma administração de sistemas
Nenhum ajuste de desempenho
Dimensionamento automático!
54/121
* Preparando ambiente de desenvolvimento
* Eclipse Juno 4.2 – JEE (http://www.eclipse.org)
* Google Plugin para Eclipse
* Código do Health Watcher
55/121
* Google Eclipse Plugin
* Help -> Install new Software
* Add Site:
http://dl.google.com/eclipse/plugin/4.2
56/121
57/121
* Registrar uma conta na Appspot
http://appengine.google.com
58/121
* Configurando ambiente
* Criar uma nova aplicação GAE
* Copiar o código fonte do HW
dentro da pasta src
* Copiar o conteúdo da pasta
WebContent dentro da pasta
war
59/121
Para permitir que o GAE distribua solicitações
de aplicações em diversos servidores da web e
para impedir a interferência de uma aplicação
em outra, a mesma é executada em um
ambiente “sandbox” restrito
60/121
*
*
*
*
Balanceamento de carga
Requisições web
Hospeda conteúdo estático
Separa os arquivos de programação
61/121
*
É uma extensão SDK do GAE para executar
aplicações do App Engine localmente.
*
Cada AppServer pode executar somente uma
aplicação por vez
*
É possível adicionar diversos AppServers para
hospedar diversas aplicações.
62/121
63/121
*
Uma aplicação pode consumir recursos até determinados
contingentes.
*
Com estas cotas, o GAE garante que sua aplicação não
ultrapassará o seu orçamento.
https://developers.google.com/appengine/docs/quotas
64/121
65/121
*
Escalabilidade horizontal – Consiste em adicionar mais
máquinas de tal modo que seja possível distribuir as
requisições entre estas máquinas.
*
*
*
*
Replicado e tolerante a falhas
Processamento paralelo
Desempenho previsível de consulta
Sem travamentos
66/121
*
Para o mecanismo de persistência do HW, foi usada a API
JDO (Java Data Object) para o armazenamento de dados no
GAE, que é configurado no arquivo jdoconfig.xml.
*
Para criar classes JDO, utilizam-se anotações Java para
descrever como as instâncias devem ser armazenadas e
como devem ser recriadas ao serem recuperadas do
armazenamento de dados.
67/121
*
Para persistir o objeto de uma classe, é invocado o
método makePersistent sendo passado como parâmetro
o referido objeto
68/121
*
Para a implementação da funcionalidade de logging do
HW no GAE, é necessário apenas dois passos:
* Copiar o arquivo logging.properties, para o diretório WAR
da aplicação;
* Definir uma propriedade no arquivo de configuração
appengine-web.xml.
69/121
*
*
Carregar e distribuir arquivos grandes
Acesso através de programação ao conteúdo do arquivo
A API Blobstore permite que sua aplicação forneça objetos de
dados, chamados blobs, que são bem maiores do que o tamanho
permitido para objetos no serviço do Armazenamento de dados.
70/121
*
O endereço da imagem é recebido a partir de um
formulário HTML (“multi part/form-data”) e é
envolvido por um objeto chamado blobkey. Este blob é
enviado usando a API Blobstore.
71/121
*
*
*
Contas google ou OpenID
Gerenciamento de administrador
Não há necessidade de criar sistema de gerenciamento de
usuários
Aplicações do GAE podem autenticar usuários que têm contas
do Google.
72/121
*
Para realizar esse procedimento, foi utilizada a
biblioteca java.net.HttpURLConnection da Sun. E, ao
fazer a solicitação HTTP/HTTPS utilizamos o serviço
URL Fetch, também disponibilizado pelo GAE;
*
Conforme disponibilizado na API ClientLogin, a URL
utilizada para enviar uma requisição POST seria
https://www.google.com/accounts/ClientLogin
73/121
74/121
* Para fazer a implantação
(deploy) utilizando o
plugin do eclipse, clique
com o botão direito do
mouse na aplicação e
selecione a opção
“Deploy to App Engine”
75/121
*
Acessar via browser:
http://[id_da_aplicação].appspot.com
75
76/121
* Introdução
* Estudo de Caso – Health Watcher
* Plataformas
* Amazon AWS
* Google App Engine
* OpenStack
* Conclusão
76
Health Watcher
77
78/121
* Openstack: Plataforma de software opensource que os provedores podem usar
para implantar sua(s) nuvem(ns), de
infraestrutura e/ou de armazenamento.
* Image: arquivo de imagem de uma máquina
virtual.
* Instância: máquina virtual sendo executada na
nuvem.
79/121
* Nova: responsável pela parte de computação
*
*
*
*
(máquinas virtuais).
Glance: responsável pela registro, busca e
recuperação de imagens de máquinas virtuais.
Keystone: responsável pela parte de
autenticação/políticas de acesso a todos os
componentes.
Horizon: interface web de gerenciamento.
Swift: responsável pela parte de armazenamento
de objetos.
80/121
81/121
Serviço
AWS
Openstack
Computação
Implantação de
Aplicações
Banco de dados
Relacional
Amazon EC2
Elastic
Beanstalk
Nova
RDS
-
SimpleDB
-
S3
Swift
Armazenamento não
relacional
Armazenamento
-
82/121
* Como desenvolver aplicações para a plataforma
Openstack ?
* Como utilizar banco de dados relacional ?
83/121
Componente HW
Solução Aplicada
Aplicação
Instância Linux (Ubuntu)
configurada com Java e Tomcat.
Implantação de
Aplicações
Adicionar pacote Tomcat-admin.
Banco de dados
Relacional
Armazenamento
Instância Linux (Ubuntu)
configurada com Mysql.
Swift
84/121
Nuvem
Dashboard
Instância da Aplicação
Desenvolvimento
Putty
Instância do Banco
WinScp
85/121
A
B
Acessar a
Openstack
F
Iniciar uma
instância
E
Acesso Público
à Instância
C
Criar o Banco
de Dados
Acessar a
instância
D
Instalar Mysql
86/121
A
* Pode ser acessada de 3 formas:
* Através da linha de comando no server
controlador da nuvem;
* Utilizando a API HTTP REST;
* Utilizando Gerenciamento WEB via DashBoard.
B
C
D
E
F
87/121
* Linha de comando:
* nova comando [opções] [argumentos]
* Ex: nova list (lista as intâncias em execução)
* glance comando [opções] [argumentos]
* Ex: glance add name="<Image name>"
is_public=true container_format=ovf
disk_format=qcow2 < <filename>.img
A
B
C
D
E
F
88/121
A
* A API de gerenciamento Openstack é baseada no
modelo HTTP REST.
* Os formatos suportados são XML e JSON.
* Inicialmente, para executar qualquer chamada a
API deve-se obter um token de autenticação.
* O id do token deve constar no HEAD de cada nova
requisição a API.
B
C
D
E
F
89/121
* Código Java de acesso, utilizando a biblioteca
Apache HttpComponents: capturando o token.
HttpPost postRequest = new HttpPost(
"http://[IP_SERVER]:5000/tokens");
String acesso = util.lerArquivo("./acesso.xml");
StringEntity parametros = new StringEntity(acesso);
postRequest.setEntity(parametros);
postRequest.setHeader("Content-Type","application/xml;
charset=UTF-8");
postRequest.setHeader("Accept","application/xml");
HttpResponse response = httpClient.execute(postRequest);
A
B
C
D
E
F
90/121
A
* Arquivo XML de envio:
<?xml version="1.0" encoding="UTF-8"?>
<auth xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns="http://docs.openstack.org/identity/api/v2.0"
tenantName=“[TENANT_NAME]">
<passwordCredentials username=“[LOGIN]"
password=“[SENHA]"/>
</auth>
B
C
D
E
F
91/121
*
XML de retorno:
<access xmlns="http://docs.openstack.org/identity/api/v2.0">
<token expires="2012-01-31T14:49:30" id="178c03af-e73d-499a-89d62a43c2a35dad">
<tenant name="demo" id="2"/>
</token>
<user name="admin" id="1"> ...
</user>
<serviceCatalog>
<service type="compute" name="nova">
<endpoint region="nova" internalURL="http://[IP]/v1.1/2"
publicURL="http://[IP]:80/v1.1/2"
adminURL="http://[IP]:8774/v1.1/2"/>
</service> ...
</serviceCatalog>
</access>
A
B
C
D
E
F
92/121
A
* Acessar via browser:
http://[IP_SERVER]/
B
C
D
E
F
93/121
A
* Acessar menu [Access & Secutiry].
* Clicar em [Create Keypair] para iniciar a execução
da instância.
* Digite o Keypair Name.
* Efetue o dowload do arquivo [keypairName].pem.
B
C
D
E
F
94/121
A
* Utilizando o WinScp, copiar o .pem para o server
controlador da nuvem.
* Utilizando o Putty, acessar o nó controlador da
nuvem e modificar as permissões do arquivo com
o comando: chmod 0600 [KeypairName].pem.
B
C
D
E
F
95/121
A
* Acessar menu [Images & SnapShots].
* Clicar em [launch] para iniciar a execução da
instância.
B
C
D
E
F
96/121
A
* Preencher os campos
Server Name e User
Data.
* Selecionar o Flavor e a
Keypair.
* Selecionar o Security
Groups.
* Clicar em Launch
Instance.
B
C
D
E
F
97/121
A
* Anotar o [ip da instância].
B
C
D
E
F
98/121
A
* Executar o comando: ssh -i [Arquivo].pem
ubuntu@[IP_INSTANCIA], acessando a instância.
B
C
D
* Instalar o Mysql, via comando: sudo apt-get –y
install mysql-server.
E
F
99/121
A
* Utilizando o WinScp, copiar o script do banco de
dados para o server controlador da nuvem.
* Executar o comando:
scp [usuario]@[ip_server]:/caminho/script.sql
/caminho de destino, copiando o script do banco
para a instância.
* Executar o comando: mysql -u [usuario] -p
[BD_NOME] < [script.sql], para criar o banco de
dados.
B
C
D
E
F
100/121
A
* Acessar menu [Access & Secutiry].
* Na seção Security Groups, clicar em [Edit Rules]
do grupo ligado a instância.
B
C
* Na seção Add Rule, no campo From Port digitar
3306 e no To Port 3306.
* Clicar no link Add Rule.
D
E
F
101/121
A
* Quando a instância é iniciada ela recebe um
ip da faixa privada da nuvem do OpenStack.
* Para que ela seja acessada por um IP da faixa
pública faz-se necessário associá-la a um
Floating IP.
B
C
D
E
F
102/121
A
* Acessar menu [Access & Secutiry].
* Na seção Floating IPs, clicar em [Associate IP].
B
C
D
E
F
103/121
A
* Selecionar a instância;
* Clicar em Associate IP.
B
C
D
E
Servidor_DB
F
104/121
* Alterar na classe: [Constants.java] do pacote
[healtwacther], as variáveis [DB_URL],
[DB_LOGIN], [DB_PASS].
// Database Configuration
public static final String DB_URL =
"jdbc:mysql://[IP_INSTANCIA]/[NOME_BANCO";
public static final String DB_LOGIN = "[Login_Banco]";
public static final String DB_PASS = "[Senha_Banco]";
105/121
* Swift: fornece de forma distribuída
armazenamento virtual de objetos. É similar ao
Amazon Web Services - Simple Storage Service
(S3).
* Swift Container: componente swift que contém
os objetos armazenados. É similar ao bucket do
AWS S3.
106/121
A
B
Acessar a
Openstack
C
Criar um
Container
Acesso Público
ao Container
107/121
A
* Acessar o Dashboard.
* Acessar o menu [Containers].
* Clicar em [Create Container].
B
C
108/121
A
*
*
Informar o [Container Name].
Clicar em [Create Container].
B
C
109/121
A
* Utilizando o Putty, acessar o nó controlador da
nuvem.
* Executar o comando: swift -V 2 -A
http://[ip_server]:5000/v2.0 -U
[TenantName]:[UserName] -K [Password] post r.r:* [ContainerName].
B
C
110/121
* Para se enviar o arquivo da foto do cadastro de
sintomas deve-se efetuar uma requisição HTTP
PUT à Swift API.
* É necessário capturar o id do token de
autenticação para efetuar a requisição.
* Ele deve ser adicionado no HEAD da requisição
HTTP PUT.
111/121
* Código de envio da imagem:
HttpPut putRequest = new HttpPut(
"http://[ip_server]:8080/v1/AUTH_[tenantId]/[containerNam
e]/"+code);
byte[] conteudo = getImage();
ByteArrayEntity parametros = new
ByteArrayEntity(conteudo);
putRequest.addHeader("X-Auth-Token",token);
putRequest.setEntity(parametros);
httpClient.execute(putRequest);
112/121
A
B
Iniciar uma
instância
F
Acessar a
instância
E
Efetuar
Upload .war
C
Gerar .war do
HW
Configurar
Tomcat
D
Acesso Público
à Instância
113/121
A
* Executar o comando:
sudo apt-get –y install tomcat7 tomcat7-admin.
B
C
D
E
F
114/121
A
* Incluir o conteúdo abaixo, no arquivo:
/etc/tomcat7/tomcat-users.xml, dentro da tag
tomcat-users.
B
C
<role rolename="manager-gui" />
<user usernanme="[login]" password="[senha]"
roles="manager-gui">
* Reiniciar o tomcat com o comando: sudo
service tomcat7 restart.
D
E
F
115/121
A
* Acessar menu [Access & Secutiry].
* Na seção Security Groups, clicar em [Edit Rules]
do grupo ligado a instância.
B
C
* Na seção Add Rule, no campo From Port digitar
8080 e no To Port 8080.
* Clicar no link Add Rule.
D
E
F
116/121
A
* Utilizando o eclipse, exporte o projeto
no formato [War File].
B
C
D
E
F
117/121
A
* Acessar, via browser, o endereço:
http://[ip_instancia]:8080/manager/.
* Informar nome de usuário e senha configurados
no arquivo tomcat-users.xml.
* Na seção Deploy, clicar em selecionar arquivo.
* Selecionar o arquivo .war da aplicação.
* Aguardar o upload do arquivo.
B
C
D
E
F
118/121
A
B
C
D
E
F
119/121
* Acessar via browser:
http://[ip_da_instancia]:8080/[path_aplicação]
120/121
121/121
Autor
e-mail
Prof. Frederico Lopes (UFRN)
[email protected]
Prof. André Almeida (IFRN)
[email protected]
Profa. Thais Batista (UFRN)
[email protected]
Everton Cavalcante (UFRN)
[email protected]
Renato Gondim (UFRN)
[email protected]
Thomas Diniz (UFRN)
[email protected]
Thiago Cesar (UFRN)
[email protected]
Arthur Cassio (UFRN)
[email protected]
III CBSoft – Congresso Brasileiro de
Software: Teoria e Prática
Natal-RN, 28 de setembro de 2012
122