Disciplina ministrada no Curso de Especialização em Desenvolvimento WEB na UTFPR Câmpus Londrina em fevereiro de 2015.
# Objetivos desta disciplina
Capacitar o aluno a planejar e implementar uma infraestrutura mínima para a execução de aplicações web seguindo os padrões abertos da W3C de maneira segura e escalável em
ambiente próprio ou locado.
# Aptidões Almejadas
- Instalar e configurar uma distribuição GNU/Linux;
- Instalar e configurar os servidores web Apache (com suporte a PHP5), Nginx e Varnish;
- Instalar e customizar os SGBDs MySQL e PostgreSQL;
- Utilizar appliances prontos para cada necessidade;
- Gerir ambientes na Amazon Web Services®;
- Realizar testes de para conferir a homologação de um ambiente seguro.
2. 2
Ambiente e Infraestrutura WEB
08/04/20
Objetivos desta disciplina
Capacitar o aluno a planejar e implementar uma
infraestrutura mínima para a execução de
aplicações web seguindo os padrões abertos da
W3C de maneira segura e escalável em
ambiente próprio ou locado.
3. 3
Ambiente e Infraestrutura WEB
08/04/20
Aptidões almejadas
Instalar e configurar uma distribuição
GNU/Linux;
Instalar e configurar os servidores web
Apache (com suporte a PHP5), Nginx e
Varnish;
Instalar e customizar os SGBDs MySQL e
PostgreSQL;
4. 4
Ambiente e Infraestrutura WEB
08/04/20
Aptidões almejadas
Utilizar appliances prontos para cada
necessidade;
Gerir ambientes na Amazon Web Services®;
Realizar testes de para conferir a
homologação de um ambiente seguro.
5. 5
Ambiente e Infraestrutura WEB
08/04/20
Programação
21/02/2015
Teoria
✔
Arquitetura Cliente/Servidor
✔
Protocolo TCP/IP
✔
Protocolo HTTP
✔
Servidores WEB
✔
Módulos para servidores WEB
✔
Banco de Dados (mySQL/pgSQL)
✔
Hardware vs Tunning
6. 6
Ambiente e Infraestrutura WEB
08/04/20
Programação
21/02/2015
Teoria
✔
Virtualização com o VirtualBox
➢
Preparação de ambiente
➢
Provisionamento e deploy
✔
GNU/Linux
➢
Noções básicas do SO Ubuntu
➢
Editando arquivos com o VI
➢
Entendendo a distribuição de pacotes
do Ubuntu
8. 8
Ambiente e Infraestrutura WEB
08/04/20
Arquitetura Cliente/Servidor
“É uma abordagem da computação que separa os
processos em plataformas independentes que
interagem, permitindo que os recursos sejam
compartilhados enquanto se obtém o máximo de
benefício de cada dispositivo diferente, ou seja, Cliente/
Servidor é um modelo lógico”.
VASKEVITCH, (1995, pág. 375).
9. 9
Ambiente e Infraestrutura WEB
08/04/20
Arquitetura Cliente/Servidor
Segundo Hulquist (HULQUIST,1997) apud Salemi
(SALEMI,1993) este modelo é caracterizado como
segue:
10. 10
Ambiente e Infraestrutura WEB
08/04/20
Cliente
Também denominado de “front-end” e “WorkStation”, é
um processo que interage com o usuário através de
uma interface gráfica ou não, permitindo consultas ou
comandos para recuperação de dados e
análise e representando o meio pela qual os resultados
são apresentados.
11. 11
Ambiente e Infraestrutura WEB
08/04/20
Servidor
Também denominado “back-end”, fornece determinado
(s) serviço (s) que fica (m) disponível (eis) para todo
cliente que o requisite. A natureza e escopo do serviço
são definidos pelo objetivo da aplicação
Cliente/Servidor. Além disso, ele apresenta ainda
algumas propriedades distintas:
12. 12
Ambiente e Infraestrutura WEB
08/04/20
Servidor
É o processo reativo na relação Cliente/ Servidor.
Possui uma execução contínua.
Recebe e responde às solicitações de diversos
Clientes.
Presta serviços distribuídos.
13. 13
Ambiente e Infraestrutura WEB
08/04/20
Vantagens
✔
Confiabilidade
✔
Centralização e Segurança
✔
Escalabilidade
✔
Independência de Plataforma e SO
18. 18
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
O TCP é um protocolo de nível da camada de
transporte (camada 4) do
Modelo OSI e é sobre o
qual que se assentam a
maioria das aplicações,
como o SSH, FTP, HTTP.
19. 19
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
Orientado à conexão
A aplicação envia um pedido de conexão para o destino
e usa a "conexão" para transferir dados.
Ponto a ponto
Uma conexão TCP é estabelecida entre dois pontos.
20. 20
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
Confiabilidade
Possibilita a recuperação de pacotes perdidos, eliminação
de duplicados, a recuperação de dados corrompidos e pode
restabelecer ao encontrar problemas de meio.
Full Duplex
Transferência simultânea em ambas direções durante toda
a sessão.
21. 21
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
Handshake
Mecanismo de estabelecimento e finalização de
conexão a três e quatro tempos, respectivamente, o
que permite a autenticação e encerramento de uma
sessão completa. O TCP garante que, no final da
conexão, todos os pacotes foram bem recebidos.
22. 22
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
Controle de Fluxo
O TCP usa o campo janela ou window para controlar o
fluxo. O receptor, à medida que recebe os dados, envia
mensagens ACK (=Acknowledgement), confirmando a
recepção de um segmento. Em resumo, elimina a
possibilidade do remetente sobrecarregar o destinatário.
23. 23
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
O TCP/IP, é formado por um grande conjunto de
diferentes protocolos de rede. Ele deriva dos dois
protocolos mais importantes e mais utilizados, que são
os seguintes:
TCP (Transmission Control Protocol)
IP (Internet Protocol)
24. 24
Ambiente e Infraestrutura WEB
08/04/20
TCP / IP
TCP (transporte)
Protocolo de transporte. Executa importantes funções para
garantir que os dados sejam entregues de uma maneira
confiável.
IP (rede)
Protocolo de rede. Responsável pelo endereçamento e
roteamento. Provê meios para estabelecer um caminho
entre origem e destino
28. 28
Ambiente e Infraestrutura WEB
08/04/20
HTTP
HyperText Transfer Protocol
Protocolo de comunicação mantido pelo W3C utilizado
para sistemas de informação de hipermídia distribuídos e
colaborativos.
Seu uso surgiu da necessidade de distribuir informações
pela rede de maneira padronizada para a obtenção de
recursos interligados, o que culminou o surgimento da
World Wide Web.
29. 29
Ambiente e Infraestrutura WEB
08/04/20
HTTP
É um protocolo de aplicação responsável pelo
tratamento de pedidos e respostas entre cliente e
servidor na Internet através do uso de regras básicas.
30. 30
Ambiente e Infraestrutura WEB
08/04/20
HTTP
Um programa requisitante (cliente) estabelece uma
conexão com um outro programa receptor (servidor) e
envia-lhe uma requisição, contendo a URI, a versão do
protocolo, uma mensagem MIME contendo os
modificadores da requisição, informações sobre o
cliente e, possivelmente, o conteúdo no corpo da
mensagem.
31. 31
Ambiente e Infraestrutura WEB
08/04/20
Métodos HTTP
GET: Solicita algum recurso por meio do protocolo
HTTP.
HEAD: Variação do GET. Obtém somente o cabeçalho da
resposta.
POST: Envia dados para serem processados para o
recurso especificado.
32. 32
Ambiente e Infraestrutura WEB
08/04/20
Métodos HTTP
PUT: Envia certo recurso (Upload).
DELETE: Exclui o recurso.
TRACE: Ecoa o pedido, de maneira que o cliente possa
saber o que os servidores intermediários estão mudando
em seu pedido.
33. 33
Ambiente e Infraestrutura WEB
08/04/20
Métodos HTTP
OPTIONS: Recupera os métodos HTTP que o servidor
aceita.
CONNECT: Serve para uso com um proxy que possa se
tornar um túnel SSL (um túnel pode ser usado, por
exemplo, para criar uma conexão segura).
34. 34
Ambiente e Infraestrutura WEB
08/04/20
Métodos HTTP (get)
telnet www.google.com 80
Trying 64.233.163.104...
Connected to www.l.google.com.
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 302 Found
Location: http://www.google.com.br/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie:
PREF=ID=c828845416419fb6:TM=1271466117:LM=1271466117:S=xWBi4aTDqXGboVMI;
expires=Mon, 16-Apr-2012 01:01:57 GMT; path=/; domain=.google.com
Set-Cookie:
NID=33=rLLQbMPjTqBPKgAPbtfIs4AvjR4umT7D9zd4Qj_nev7qqyHdsqb9gq9DkDRzljiLAFMtdvCPcHf
u6TFzdtZAcxCciOwt4s9gxsD96Ya1myHU93tJiTIHJZs0zbCoUdZy; expires=Sun, 17-Oct-2010
01:01:57 GMT; path=/; domain=.google.com; HttpOnly
Date: Sat, 17 Apr 2010 01:01:57 GMT
Server: gws
Content-Length: 222
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8“>
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF=http://www.google.com.br/>here</A>.
</BODY></HTML>
35. 35
Ambiente e Infraestrutura WEB
08/04/20
Métodos HTTP (post)
POST /diretorio/arquivo.html HTTP/1.1
Host: www.exemplo.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2b5)
Gecko/20091204 Firefox/3.6b5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-alive: 115
Cookie: nome=valor; nome2=valor2
Connection: keep-alive
Content-Length: 28
usuario=exemplo&senha=123456
36. 36
Ambiente e Infraestrutura WEB
08/04/20
Conexões HTTP
HTTP / 1.0 – Stateless
As conexões entre um cliente e um servidor são
encerradas após o envio de cada requisição ou
resposta. Cada vez que uma conexão é estabelecida ou
encerrada, é consumida uma grande quantidade de
tempo da CPU, largura de banda e memória.
37. 37
Ambiente e Infraestrutura WEB
08/04/20
Conexões HTTP
HTTP / 1.1 – Persistent
Possibilita que uma conexão seja estabelecida para
enviar várias requisições em sequência sem a
necessidade de esperar por cada resposta, no qual
serão recebidas na mesma ordem em que as
solicitações foram enviadas, um processo chamado
de pipelining.
38. 38
Ambiente e Infraestrutura WEB
08/04/20
Conexões HTTP
CLIENTE SERVIDOR
CLOSE
OPEN
TEMPO
CLIENTE SERVIDOR
CLOSE
OPEN
TEMPO
CLOSE
CLOSE
OPEN
OPEN
HTTP / 1.0 – Stateless
HTTP / 1.1 – Persistent
40. 40
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
Em 2009 o Google fez um experimento onde expôs a
um grupo de usuários uma busca mais lenta. O
resultado por página aumentou de 10 para 30, onde o
tempo de carregamento foi de 0.4s para 0.9s.
Resultado: As buscas diminuíram em 20%.
0,5s
41. 41
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
O Yahoo! descobriu que, para cada 400ms de melhora
na performance, seu tráfego aumentava em 9%.
400 ms
42. 42
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
A Amazon concluiu que apenas 100ms de melhora em
seu site, aumentou 1% seu faturamento.
100 ms
1º Trimestre de 2012 = U$ 13,2 Bilhões – 1% = U$132
Milhões
2º Trimestre de 2012 = U$ 12,8 Bilhões – 1% = U$128
Milhões
43. 43
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
"If it is fast and ugly, they will use it and curse you; if it is
slow, they will not use it"
David Cheriton
Computer Science Professor
Stanford University
"Se ele é rápido e feio, eles vão criticar mas vão usá-lo,
porém se for lento ninguém irá usá-lo"
44. 44
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
"Performance golden rule: Optimize front-end
performance first, that's where 80/90% of the end-user
response time is spent.""
Steve Souders
High Performance Web Sites
45. 45
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
principal.jpg = 245KB
www.utfpr.edu.br -> 580.5KB
1 requisições/seg.:
1 Segundo : 580 KB
1 Minuto : 33 MB
1 Hora : 1.9 GB
1 Dia : 47 GB
1 Mês : 1.4 TB
1 Ano : 17 TB
Tempo Carregamento : 1,54 s
Tempo Carregamento principal.jpg : 1,16s
46. 46
Ambiente e Infraestrutura WEB
08/04/20
Tunning vs Velocidade
principal.jpg = 45KB
www.utfpr.edu.br -> 380.5KB
1 requisições/seg.:
1 Segundo : 380 KB
1 Minuto : 22 MB
1 Hora : 1.3 GB
1 Dia : 31 GB
1 Mês : 950 GB
1 Ano : 11 TB
Previsto
Tempo Carregamento : 1,14 s
Tempo Carregamento principal.jpg : 400 ms
47. 47
Ambiente e Infraestrutura WEB
08/04/20
Servidores WEB
Um software responsável por aceitar pedidos HTTP de
clientes, e servi-los com as respectivas respostas, incluindo
opcionalmente dados, que geralmente são páginas web,
tais como documentos (html, php, etc) com objetos
embutidos (imagens, etc.).
Timothy John Berners-Lee
51. 51
Ambiente e Infraestrutura WEB
08/04/20
Servidores WEB
Apache
Criado em 1995 é Responsável por 58% dos sites ativos no
mundo (aprox. 102 Milhões).
Implementa 100% do padrão HTTP/1.1;
Disponível para diversos SO's, além do GNU/Linux o para
qual foi criado inicialmente.
52. 52
Ambiente e Infraestrutura WEB
08/04/20
Servidores WEB
Apache
Suporte ao protocolo HTTPS;
Facilmente extensível (PHP, JSP, Perl, Python etc.) por meio
de módulos extras;
Suporte a VirtualHosts, possibilitando a hospedagem várias
páginas no mesmo servidor.
53. 53
Ambiente e Infraestrutura WEB
08/04/20
Servidores WEB
NGINX*
Criado em 2005, encontrava-se presente em 3% de sites
ativos em 2008.
Ultrapassou o IIS em 2012 ficando em 2º lugar no ranking,
com 12.18% de sites ativos.
Hoje é responsável por aproximadamente 22 Milhões de
sites ativos em 3º lugar.
* pronuncia-se Engine-X
54. 54
Ambiente e Infraestrutura WEB
08/04/20
Servidores WEB
Varnish
Varnish Cache é um acelerador de aplicação web também
conhecido como cache HTTP e proxy reverso. Ele deve ser
instalado atuar antes do seu servidor web principal pois irá
armazenar em cache o conteúdo de todas as chamadas.
Ele normalmente acelera entre 300 a 1000x dependendo de
sua arquitetura.
56. 56
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (requisitos)
➢
VirtualBox + Extension Pack
➢
ISO do Ubuntu 14.04 Network Install
➢
Putty
57. 57
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (VBOX install)
✔
Escolha a plataforma
●
i386 ou AMD64
✔
Instale o Extension Pack para dar suporte ao hardware
do hospedeiro (opcional).
✔
Crie a definição da máquina para o servidor web.
58. 58
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (VBOX install)
✔
webserver1
●
Plataforma : amd64
●
Tipo : Ubuntu GNU/Linux
●
Memória : 1024 MB
●
Disco : 40 GB (dinamicamente expansível)
●
Chipset : PIIX3
●
Disp. Apontador : PS/2
●
Virt. de Hardware : VT-x/AMD-V e Paginação aninhada
59. 59
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (VBOX install)
Se ao clonar ou copiar uma vm obtiver mensagens de erro de uuid de
disco, utilize o comando abaixo para a correção:
$ VBoxManage internalcommands sethduuid nome_da_vm.vdi → Vdisc
61. 61
Ambiente e Infraestrutura WEB
08/04/20
O básico do VI / VIM
Habilitar o modo de edição
✔
Insert ou i : Edição
✔
Insert 2x : Substituição
Atalhos
✔
:w = Salva
✔
:x / :wq = Salva e sai
✔
:q! = Sai em modo forçado em salvar
62. 62
Ambiente e Infraestrutura WEB
08/04/20
O básico do VI / VIM
Edição
●
/ [texto] = Buscar
●
u = Desfazer
●
x = Apagar a direita do cursor
●
d+X+↓↑ = Apagar X linhas abaixo/acima
●
dd = Apagar linha
●
yy = Copiar linha
●
y+X+↓↑ = Copiar X linhas -1 acima/abaixo
●
p = Colar
63. 63
Ambiente e Infraestrutura WEB
08/04/20
O básico do VI / VIM
Dicas
●
:set number = Habilitar a numeração de linha
●
:s/A/B = Substituir A por B
65. 65
Ambiente e Infraestrutura WEB
08/04/20
O básico do apt-get
Para atualizar a lista local de pacotes:
apt-get update
Para instalar as atualizações disponíveis:
apt-get upgrade
Para instalar um pacote:
apt-get install [nome_do_pacote]
Para remover um pacote:
apt-get remove [nome_do_pacote]
Para remover completamente um pacote:
apt-get --purge remove [nome_do_pacote]
Buscar um pacote pelo nome ou descrição:
apt-cache search [nome/descrição]
66. 66
# apt-get update && apt-get -V upgrade
# updatedb
# apt-get install vim
# vi /etc/vim/vimrc
...
syntax on
...
# vi ~/.bashrc
...
export LS_OPTIONS='--color=auto'
eval “'dircolors'”
...
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (vim)
67. 67
# vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 172.17.171.1
netmask 255.255.255.0
network 172.17.171.0
broadcast 172.17.171.255
gateway 172.17.250.1
dns-nameservers 172.17.250.2 8.8.8.8
dns-search espwebux.lan
# ifdown eth0 ; /etc/init.d/networking stop
# service networking start ; ifup eth0
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (rede)
68. 68
# vi /etc/resolv.conf
...
nameserver 172.17.250.2
nameserver 8.8.8.8
...
# vi /etc/hosts
...
127.0.0.1 localhost
127.0.1.1 webserver1
...
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (dns / hosts)
127.0.0.1 é loopback para o ip real
do host, já o 127.0.1.1 é um ip
adicional para o mesmo host (
Debian: Chapter 5), basicamente
para chamadas recusadas para
loopback.
Caso não tenha setado o
dns em
/etc/network/interfaces,
pode-se fixar em
/etc/resolv.conf.
69. 69
# dpkg-reconfigure tzdata
# apt-get install ntpdate
# cd /etc/cron.hourly
# vi ntp
#!/bin/sh
ntpdate pool.ntp.br
exit 0
# chmod +x ntp
# service cron restart OU
# /etc/init.d/cron restart
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (ntp)
70. 70
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (ntp: horário de verão)
Como não há um padrão para a vigência do horário de verão
no Brasil (depende de decretos), a cada ano um novo período
é “estabelecido” mas pode sofrer alterações de última hora,
além de possuirmos quatro fusos distintos (UTC -5, -4, -3 e -2
conforme site do Observatório Nacional), devemos ajustar
manualmente. Estas mudanças podem gerar danos
financeiros e técnicos vindo comprometer seu servidor e
serviços de rede.
71. 71
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (ntp: horário de verão)
Para o Paraná o
Time Zone correto
é o UTC -2, porém
o geral para o
Brasil é o -3.
72. 72
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (ntp: horário de verão)
# cd /usr/share/zoneinfo/posix/Brasil
# mv East East.ori
# rm ../../Brazil/East
# vi verao_2014-16.zic
Rule Brazil 2014 only - Oct 19 00:00 1 S
Rule Brazil 2015 only - Feb 22 00:00 0 -
Rule Brazil 2015 only - Oct 18 00:00 1 S
Rule Brazil 2016 only - Feb 21 00:00 0 -
#Zone NAME GMTOFF RULES/SAVE FORMAT[UNTIL]
Zone Brazil/East -3:00 Brazil BR%sT
# zic verao_2014-16.zic
# cd ../../Brazil/
# rm East
# ln -s ../posix/Brasil/East ./
# mv /etc/localtime /etc/localtime.ori
# cp East /etc/localtime
# ntpdate pool.ntp.br
# date
A regra diz que o
início é no 3o
domingo de
outubro
(19/10/14) e o
final no 3o
domingo de
fevereiro
(15/02/15),
porém a data
final ficou para o
dia 22
contradizendo a
regra.
73. 73
# apt-get install ssh
# vi /etc/ssh/sshd_config
Port ????
PermitRootLogin no
PermitEmptyPassword no
PasswordAuthentication yes
# cd /etc
# mv securetty securetty.ori
# touch securetty
# /etc/init.d/ssh restart
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (ssh / securetty)
75. 75
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork vs Worker vs Event)
Prefork: PHP como módulo do apache. Cada requisição HTTP é
atendida por um processo individual criado a partir de um fork.
Worker: PHP através de CGI. No modo worker, os processos-filhos
têm capacidade de lançar vários threads que ouvem por
requisições.
Event: PHP-FPM (FastCGI Process Manager). É uma variante do
worker, elaborada para permitir mais requisições simultâneas
utilizando intensamente os threads.
76. 76
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork vs Worker vs Event)
Por padrão o Apache utiliza o MPM Prefork para sistemas
monoprocessados e o MPM Worker para sistemas multiprocessados.
✔
Cada request é tratado por um processo
separado (não trava o pai).
✔
Pode ser utilizado com módulos não thread-
safe.
✔
Maior consumo de memória.
✔
Mais estável.
✔
Indicado p/ + de 3 mil req. simultâneas.
✔
Problemas na thread podem travar o pai.
✔
Problemas c/ módulos não thread-safe.
✔
Maior velocidade de resposta.
✔
Menor consumo de memória.
✔
Requer menos hardware.
✔
Difícil de debugar.
✔
Menos estável.
78. 78
Ambiente e Infraestrutura WEB
08/04/20
Apache (Qual MPM escolher?)
1) O núcleo do sistema operacional suporta threads?
2) O núcleo do sistema operacional suporta threads seguros
(thread-safe polling)?
3) Sua aplicação está madura o suficiente para trabalhar com
threads?
Se a resposta é sim para todas as perguntas, seu MPM deve ser o
event.
Se a resposta é sim para a primeira pergunta, seu MPM deve ser o
worker.
Se a resposta é não para qualquer uma das perguntas, seu MPM
deve ser o prefork.
79. 79
Ambiente e Infraestrutura WEB
08/04/20
Dicas de segurança
UTILIZE SENHAS DIFÍCEIS DE SEREM DESCOBERTAS E FÁCEIS DE SEREM
LEMBRADAS POR VOCÊ
NÃO DEIXE TUDO NA MESMA MÁQUINA
MANTENHA O SERVIDOR ATUALIZADO
apt-get update
apt-get upgrade
SE POSSÍVEL UTILIZE FIREWALL's
CRIE UMA DMZ E COLOQUE SEU WEBSERVER NELA
DEIXE SOMENTE OS SOFTWARES NECESSÁRIOS
81. 81
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork)
O método prefork é mantido para fins de compatibilidade com
antigos sistemas que não podem suportar o uso de threads, para
servidores que atendem poucas requisições ou possuem um
processador legado de núcleo único.
Entretanto, mesmo hoje prefork é conhecido pela estabilidade de
seu código, desenvolvido ao longo de anos, e ainda é o modo
preferido por muitos administradores.
Alberto Federman Neto
http://www.vivaolinux.com.br/artigo/Apache-24-Modulos-de-Multiprocessamento-MPM
82. 82
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork)
Lembre-se que para um servidor web com Apache responder
carga a qual foi planejada, o GNU/Linux deve ter parâmetros de
kernel devidamente ajustados como:
Limpeza de cache de memória
Ajustes nos segmentos de memória compartilhada
Coleta de lixo
Memória virtual
Paginação
Semaphore
http://kernel-handbook.alioth.debian.org/
83. 83
Ambiente e Infraestrutura WEB
08/04/20
Tunando o SO
# su – www-data -c 'ulimit -aHS' -s '/bin/bash'
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 9433
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 9433
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
●
Exibindo os limites máximos do www-data
84. 84
Ambiente e Infraestrutura WEB
08/04/20
Tunando o SO
# ps aux | grep apache
Root 2083 0.0 0.8 37204 10016 ? Ss 17:38 0:00 /usr/sbin/apache2 -k start
www-data 2088 0.0 0.2 24700 2880 ? S 17:38 0:00 /usr/sbin/apache2 -k start
# cat /proc/2083/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 9433 9433 processes
Max open files 8192 8192 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 9433 9433 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
●
Exibindo os limites de determinado processo
85. 85
Ambiente e Infraestrutura WEB
08/04/20
Tunando o SO
# ulimit -Sn ; ulimit -Hn
# ulimit -n 80000 ; ulimit -n
# sysctl fs.file-max fs.file-max=500000
fs.file-max = 120719
fs.file-max = 500000
# vi /etc/sysctl.conf
...
fs.file-max = 500000
...
# vi /etc/security/limits.conf
...
* soft nproc 500000
* hard nproc 500000
* soft nofile 500000
* hard nofile 500000
Existem duas maneiras de alterar os limites. Utilizando o comando
ulimit ou o sysctl (visualiza ou altera parâmetros do kernel em /proc/
sys/)
86. 86
Ambiente e Infraestrutura WEB
08/04/20
Apache (Cálculo de memória)
# ps -ylC apache2 –sort:rss
S 33 17530 16102 0 78 0 6008 5038 341548 ? 00:00:00 apache2
S 33 17491 16102 0 75 0 6036 5036 354540 ? 00:00:00 apache2
S 33 17529 16102 0 75 0 6036 5038 357283 ? 00:00:00 apache2
S 33 17472 16102 0 75 0 6044 5038 359161 ? 00:00:00 apache2
S 33 17438 16102 0 75 0 6056 5036 351130 ? 00:00:00 apache2
# top
25255 nobody 15 0 8992 4796 2088 S 0.7 0.1 0:01.10 apache2
25330 nobody 15 0 9112 5040 2304 S 0.7 0.1 0:01.02 apache2
25369 nobody 15 0 8824 4608 2084 S 0.7 0.1 0:01.07 apache2
25372 nobody 15 0 9088 4792 2084 S 0.7 0.1 0:00.92 apache2
25399 nobody 15 0 8928 4876 2296 S 0.7 0.1 0:00.81 apache2
Quantidade de memória gasta
por processo (KB)
Memória virtual
Memória residente
Memória
compartilhada
87. 87
Ambiente e Infraestrutura WEB
08/04/20
Apache (Cálculo de memória)
Como calcular o valor correto para os parâmetros MaxClients e
ServerLimit?
Ao utilizar o comando free na máquina virtual criada (com 1024
MB de ram) obtemos o resultado abaixo:
Dividindo a média de memória aproximada para cada conexão (6
MB) pela memória total disponível (1080 MB) conclui-se que o
máximo de conexões é de 180.
Total used free
Mem: 1217464 473960 743504
-/+ buffers/cache: 136596 1080868
Swap: 1748988 0 1748988
88. 88
# apt-get install apache2-mpm-prefork php5 openssl
libapache2-mod-php5 ca-certificates
# vi /etc/apache2/apache2.conf
...
ServerName webserver1?
...
# apt-get install php5-mysql OU
# apt-get install php5-pgsql
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork: instalação)
Para retirar a mensagem
“Could not reliably determine
the server's fully qualified
domain name, using
127.0.1.1 for ServerName”
89. 89
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork: configuração)
# vi /etc/apache2/mods-available/mpm_prefork.conf
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxRequestsPerChild 5
</IfModule>
90. 90
Ambiente e Infraestrutura WEB
08/04/20
Apache+PHP (Segurança básica)
# vi /etc/apache2/conf-available/security.conf
...
ServerTokens Prod
ServerSignature Off
TraceEnabler Off
...
# vi /etc/php5/apache2/php.ini
expose_php Off
Dicas
Páginas de erro
/etc/apache2/conf.d/localized-error-pages
Fail2Ban
SELinux
Apparmor
91. 91
# vi /etc/apache2/sites-available/espwebux2015.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName espwebux2015.com
ServerAlias www.espwebux2015.com espwebux2015.com
DocumentRoot /var/www/espwebux2015
<Directory /var/www/espwebux2015/>
Options Indexes
DirectoryIndex index.html index.php
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_espwebux2015.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_espwebux2015.log
vhost_combined
</VirtualHost>
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork: Virtual Host)
92. 92
# mkdir /var/www/espwebux2015
# chown -R www-data:www-data /var/www/espwebux2015
# chmod -R 755 /var/www/espwebux2015
# service apache2 restart
# a2ensite espwebux2015
# a2dissite 000-default
# ls -la /etc/apache2/sites-enabled
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork: Virtual Host)
93. 93
# mkdir /etc/apache2/cert ; cd /etc/apache2/cert
# openssl genrsa -des3 -out espwebux2015_cert.key 2048
# openssl rsa -in espwebux2015_cert.key -out
espwebux2015_cert_nopwd.key
# chmod 600 espwebux2015_cert_nopwd.key
# openssl req -new -key espwebux2015_cert.key -out
espwebux2015_cert.csr
# openssl x509 -req -days 365 -in espwebux2015_cert.csr
-signkey espwebux2015_cert.key -out espwebux2015_cert.crt
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork: Certificado)
Gerar a chave privada (Private Key)
Remove a senha da chave privada
Gerar o pedido de certificação (Certificate Signing Request).
Country: BR, State: Parana, Locality: Londrina, Org./OU:
UTFPRLD, Common Name: espwebux2015.com, Email:
email@admin.com.
Assinar o certificado (Self-Signed Certificate):
94. 94
# vi /etc/apache2/sites-available/espwebux2015.conf
…
SSLEngine on
SSLCertificateFile /etc/apache2/cert/nome_cert.crt
SSLCertificateKeyFile /etc/apache2/cert/nome_cert_nopwd.key
...
# a2enmod ssl ; service apache2 restart
Ambiente e Infraestrutura WEB
08/04/20
Apache (Prefork: Módulo SSL)
Módulo SSL
Adicionar os certificados ao Virtual Host,
carregar o módulo ssl e reiniciar o Apache
99. 99
# mkdir /var/www/espwebux2015
# chown -R www-data:www-data /var/www/espwebux2015
# chmod -R 755 /var/www/espwebux2015
# service apache2 restart ; a2ensite espwebux2015
# a2dissite 000-default
# la -la /etc/apache2/sites-enabled
# la -la /etc/apache2/sites-enabled
Ambiente e Infraestrutura WEB
08/04/20
Apache (Worker: Virtual Host)
100. 100
Ambiente e Infraestrutura WEB
08/04/20
Apache (Worker)
Os procedimentos para Certificado e SSL, são os mesmos
descritos para o Prefork.
101. 101
Ambiente e Infraestrutura WEB
08/04/20
Apache (Worker: suexec+fcgi)
Opcional
É possível criar usuários para se executar cada VirtualHost em
uma instância própria via suexec isolando-se versão de php,
FastCGI (inclusive cpanel) e otimizando a utilização de memória e
cpu.
https://www.howtoforge.com/...
102. 102
# dpkg-reconfigure dash → NÃO
# service apparmor stop
# update-rc.d -f apparmor remove
# aptitude remove apparmor apparmor-utils
# vi /etc/php5/cgi/php.ini
...
cgi.fix_pathinfo=1
...
# vi /etc/apache2/mods-available/fcgid.conf
<IfModule mod_fcgid.c>
FcgidConnectTimeout 20
PHP_Fix_Pathinfo_Enable 1
<IfModule mod_mime.c>
AddHandler fcgid-script .fcgi
</IfModule>
</IfModule>
Ambiente e Infraestrutura WEB
08/04/20
Apache (Worker: suexec+fcgi)
107. 107
# apt-get install libapache2-mod-fastcgi php5-fpm
apache2-mpm-event
# vi /etc/apache2/conf-available/php5-fpm.conf
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -
socket /var/run/php5-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
# apt-get install php5-mysql OU
# apt-get install php5-pgsql
Ambiente e Infraestrutura WEB
08/04/20
Apache (Event: instalação)
108. 108
# vi /etc/apache2/mods-enabled/mpm_event.conf
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
Ambiente e Infraestrutura WEB
08/04/20
Apache (Event: configuração)
109. 109
# a2enmod actions fastcgi alias
# a2dismod mpm_prefork php5
# a2enconf php5-fpm
# a2enmod mpm_event
# service apache2 restart
Ambiente e Infraestrutura WEB
08/04/20
Apache (Event: instalação)
Descarga de módulos
antigos, carga de
novas configurações e
módulos.
110. 110
Ambiente e Infraestrutura WEB
08/04/20
Apache (Event: configuração)
# vi /etc/apache2/apache2.conf
#Worker MPM
<IfModule worker.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 25
ServerLimit 180
MaxClients 180
MaxRequestsPerChild 200
MaxKeepAliveRequests 500
KeepAliveTimeout 5
</IfModule> Resolvido no mpm-event
111. 111
Ambiente e Infraestrutura WEB
08/04/20
Apache (Event)
Os procedimentos para Virtual Host, Certificado e SSL, são os
mesmos descritos para o Prefork.
113. 113
Ambiente e Infraestrutura WEB
08/04/20
Apache (Comandos úteis)
●
a2enmod: habilita um módulo (se disponível em
/etc/apache2/mods-available)
●
a2dismod: desabilita um módulo ativo (se presente
em '/etc/apache2/mods-enabled')
●
a2ensite: habilita um site (se configurado em
/etc/apache2/sites-available)
●
a2dissite: desabilita um site (se linkado em
●
/etc/apache2/sites-enabled)
●
apache2ctl -v ou curl -I localhost: informações
114. 114
Ambiente e Infraestrutura WEB
08/04/20
Apache (Comandos úteis)
# command type -f 'service' &>'/dev/null' && command
service 'apache2' 'force-reload'
# command type -f 'service' &>'/dev/null' ||
/etc/init.d/apache2 'force-reload'
# command type -f 'newaliases' &>'/dev/null' && command
newaliases
# command apache2ctl -t
# command type -f 'service' &>'/dev/null' && command
service 'apache2' 'reload'
# command type -f 'service' &>'/dev/null' ||
/etc/init.d/apache2 'reload'
Relê as novas configurações sem
para o serviço.
Testa a sintax nos arquivos de
configuração.
Relê novos aliases criados.
Relê as novas configurações.
115. 115
Ambiente e Infraestrutura WEB
08/04/20
Apache (Comandos úteis)
# command type -f 'service' &>'/dev/null' && command
service 'apache2' 'force-reload'
# command type -f 'service' &>'/dev/null' ||
/etc/init.d/apache2 'force-reload'
# command type -f 'service' &>'/dev/null' && command
service 'apache2' 'restart'
# command type -f 'service' &>'/dev/null' ||
/etc/init.d/apache2 'restart'
# command apache2ctl -t -D DUMP_MODULES
Relê as novas configurações sem
fechar as conexões do clientes.
Relê as novas configurações e
fecha as conexões dos clientes.
Lista os móulos carregados.
119. 119
Ambiente e Infraestrutura WEB
08/04/20
NGINX: estratégias
Server 1 Server 3
Server 2
Varnish
NGINX
Apache
MySQLPHP
Estático
Dinâm
ico
Server 4
Varnish
NGINX
Apache
MySQLPHP
Estático
Dinâm
ico
Server 1
Server 3
Server 2
Varnish
NGINX Apache
MySQL
PHP
Estático
Server 4
Apache
Apache
Dinâmico
Dinâmico
Dinâmico
Server 5 Server 6
Server EUA
Server 3
Server 2
Varnish
NGINX Apache
MySQL
PHP
Estático
Server 4
Apache
Apache
Dinâmico
Dinâmico
Dinâmico
Server 5 Server 6
Varnish
Estático
Server Brasil
120. 120
Ambiente e Infraestrutura WEB
08/04/20
NGINX
Nginx é um servidor web de código aberto escrito para resolver
alguns dos problemas de desempenho e escalabilidade
associados ao Apache.
Nginx diz que seu servidor web foi escrito para resolver o
problema C10K, que é uma referência a um artigo escrito por
Daniel Kegel sobre como obter um servidor web para lidar com
10.000 conexões, dadas as limitações dos sistemas operacionais.
Em seu artigo, ele citou um paper de Dean Gaudet, que diz: “Why
don't you guys use a select/event based model like Zeus? It's
clearly the fastest”.
121. 121
Ambiente e Infraestrutura WEB
08/04/20
NGINX
Nginx é composto por módulos que estão incluídos em tempo de
compilação. Isso significa que o usuário faz o download do
código-fonte e seleciona quais módulos vai compilar. Existem
módulos de conexão para fazer servidores de aplicação, proxy e
balanceamento de carga entre outros. Não há nenhum módulo de
PHP pois o Nginx pode compilar o código PHP sozinho.
122. 122
Ambiente e Infraestrutura WEB
08/04/20
NGINX (Diagrama de arquitetura)
Neste diagrama vemos que Nginx, neste caso, está usando o
processo FastCGI para executar Python, Ruby, ou outro código
além de gerenciar o armazenamento de objetos em cache (loader/
manager)
123. 123
Ambiente e Infraestrutura WEB
08/04/20
NGINX (Instalação)
# apt-cache show nginx
# vi /etc/apt/sources.list
...
### DotDeb ###
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
# mkdir ~/Downloads ; cd ~/Downloads
# wget http://www.dotdeb.org/dotdeb.gpg
# cat dotdeb.gpg | apt-key add -
# apt-get update
# apt-get install nginx php5-fpm php-pear
# cd /etc/nginx
# cp -pa nginx.conf nginx.conf.ori
# apt-cache show nginx | grep Version
Será exibido o pacote do repositório
“oficial” em uma versão mais antiga.
Se quiser utilizar
versões mais
novas, adicione
o repositório da
DotDeb.
Observe que a
versão disponível
no repositório da
DotDeb é mais
nova.
124. 124
Ambiente e Infraestrutura WEB
08/04/20
NGINX (Ajustes)
# vi /etc/nginx/nginx.conf
user www-data;
worker_process 4;
#worker_cpu_affinity 0001 0010 0100 1000;
worker_priority -5;
events {
#use epoll;
worker_connections 256;
#multi_accept on;
}
... (continua no próximo slide)
Conforme quantidade de Cores de CPU's.
Variar entre -4 e 0 (-20 maior ~ 19 menor)
Valor de memória
utilizado (monitorar e
ajustar).
Seleciona o modelo de fila
de atendimento de
requisições.
Valores: select, poll,
kqueue, epoll, rtsig,
/dev/poll e eventport
Desativar na VM.
133. 133
Ambiente e Infraestrutura WEB
08/04/20
NGINX (Modificações: Apache)
# cp -pa /var/www/espwebux2015
/var/www/espwebux2015.apache
# cd /var/www/espwebux2015.apache
# rm -rf scripts index.html
# cd ../espwebux2015 ; rm phpinfo.php
# vi index.html
# vi /etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
# vi /etc/apache2/sites-enabled/espwebux2015
<VirtualHost *:8080>
...
DocumentRoot /var/www/espwebux2015.apache
<Directory /var/www/espwebux2015.apache/>
...
Realizar as instalações do NGINX e Apache2-mpm-prefork
/worker normalmente (Mesma máquina).
Renomear a pasta padrão do
apache.
Alterar a porta de escuta.
Alterar o arquivo do site.
Remover a chamada ao
phpinfo.php
134. 134
Ambiente e Infraestrutura WEB
08/04/20
NGINX (Modificações: NGINX)
# vi /etc/nginx/sites-enabled/espwebux2015
location ~ .php$ {
...
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
...
}
Redirecionamento para
o Apache.
135. 135
Ambiente e Infraestrutura WEB
08/04/20
NGINX (balanceamento de carga)
Opcional
É possível utilizar a ideia de um pool de servidores apache para a
balanceamento de carga.
NGINX DinâmicoVarnish Estático Apache
Apache
Apache
Dinâm
ico
Dinâm
ico
136. 136
Ambiente e Infraestrutura WEB
08/04/20
NGINX (Modificações: NGINX)
# vi /etc/nginx/sites-enabled/espwebux2015
location ~ .php$ {
...
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://apaches;
...
}
# Pool
upstream apaches {
server ipdoserver1:8081;
server ipdoserver2:8082;
server ipdoserver3:8083;
}
Fora da TagServer
Realizar as instalações do NGINX e Apache2-mpm-prefork
normalmente (Máquinas separadas).
142. 142
Ambiente e Infraestrutura WEB
08/04/20
MySQL (Instalação)
# apt-get install mysql-server
# apt-get install php5-mysql
# apt-get install phpmyadmin
Informe uma senha para o mysql
(pode ser nula). Recomenda-se
que não seja a de root ou
administrador.
Selecionar o Servidor Web
Selecionar YES para configurar o
PHPMyAdmin
Abrir o PHPMyAdmin no
navegador
http://ip_server/phpmyadmin
143. 143
Ambiente e Infraestrutura WEB
08/04/20
MySQL (PHP PGAdmin)
# vi /etc/php5/conf.d/suhosin.ini
suhosin.sql.bailout_on_error = off
suhosin.post.max_array_index_length = 256
suhosin.post.max_totalname_length = 8192
suhosin.post.max_vars = 2048
suhosin.request.max_array_index_length = 256
suhosin.request.max_totalname_length = 8192
suhosin.request.max_vars = 2048
Otimizar configurações do PHP
para o PHPPGAdmin
Descomentar e Alterar os
seguintes parâmetros.
OBS: o Suhosin corrige diversas
brechas de segurança.
145. 145
Ambiente e Infraestrutura WEB
08/04/20
PostgreSQL (Instalação/Configuração)
# apt-get install postgresql php5-pgsql phppgadmin
# vi /etc/phppgadmin/config.inc.php
$conf['servers'][0]['host'] = 'localhost';
$conf['servers'][0]['defaultdb'] = 'postgres';
# su - postgres
$ createuser -P nome-do-usuario
$ logout
# vi /etc/postgresql/X.Y/main/postgresql.conf
listen_addresses = '*'
146. 146
Ambiente e Infraestrutura WEB
08/04/20
PostgreSQL (Instalação/Configuração)
# vi /etc/postgresql/8.4/main/pg_hba.conf
#"local" is for Unix domain socket connections only
#local all all ident sameuser
...
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# vi /etc/phppgadmin/apache.conf
allow from all
# /etc/init.d/apache2 restart
# /etc/init.d/postgresql restart
Comente (#)
Abrir o PHPMyAdmin no navegador
http://ip_server/phppgadmin
147. 147
# ps aux | fgrep -i apache
# apache2 -V
Ambiente e Infraestrutura WEB
08/04/20
Prática 1 (Apache: comandos úteis)
Observe que na primeira
linha o usuário usado para
“startar” o serviço (Ss) foi
root, mas as demais
instâncias (S) são do próprio
apache (www-data).
Este relatório fornece
diversas informações sobre
o MPM.
151. 151
Ambiente e Infraestrutura WEB
08/04/20
A importância do tunning de SO
Abaixo a saída do console do terminal utilizado com o siege
mostra que houve um estouro no número máximo de arquivos
abertos, ou seja, foram abertos simultaneamente mais arquivos
do que estava estipulado na variável open files.
152. 152
# siege -b -t60S http://www.espwebux2015.com
...
[error] socket: 71800576 address is unavailable.: Cannot assign requested address
[error] socket: 105371392 address is unavailable.: Cannot assign requested address
[error] socket: 113764096 address is unavailable.: Cannot assign requested address
HTTP/1.1 200 0.01 secs: 148 bytes ==> GET /
done.
siege aborted due to excessive socket failure; you
can change the failure threshold in $HOME/.siegerc
Transactions: 30637 hits
Availability: 96.73 %
Elapsed time: 20.59 secs
Data transferred: 4.32 MB
Response time: 0.01 secs
Transaction rate: 1487.96 trans/sec
Throughput: 0.21 MB/sec
Concurrency: 13.07
Successful transactions: 30637
Failed transactions: 1037
Longest transaction: 0.21
Shortest transaction: 0.00
FILE: /var/siege.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.
Ambiente e Infraestrutura WEB
08/04/20
Benchmark
SIEGE (Benchmark)
153. 153
# siege -c50 -d10 -t3M http://www.espwebux2015.com
...
HTTP/1.1 200 0.01 secs: 148 bytes ==> GET /
HTTP/1.1 200 0.01 secs: 148 bytes ==> GET /
^C
Lifting the server siege... done.
Transactions: 496 hits
Availability: 100.00 %
Elapsed time: 50.03 secs
Data transferred: 0.07 MB
Response time: 0.00 secs
Transaction rate: 9.91 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 0.02
Successful transactions: 496
Failed transactions: 0
Longest transaction: 0.02
Shortest transaction: 0.00
FILE: /var/siege.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.
Ambiente e Infraestrutura WEB
08/04/20
Benchmark
SIEGE (Loading)
155. 155
Ambiente e Infraestrutura WEB
08/04/20
Benchmark (Ferramentas)
●
Google Web Toolkit
●
Apache Jmeter
●
Página com várias ferramentas listadas
●
Open Web Application Security Project (OWASP)
●
http://www.webpagetest.org/
156. 156
Ambiente e Infraestrutura WEB
08/04/20
Criar conta;
Criar instância EC2 T2.Micro com o Ubuntu 14.04 AMD64 (utilize o ponto de
presença de São Paulo preferencialmente);
Associar um Elastic IP a mesma instância;
Liberar as portas 22, 80, 443, 3306, 8181 (Nginx), 8080 (Apache http), 8081
(Apache https);
Criar e importar Key Pair para acesso ssh;
Converter via PuttyGen a chave .pem para .ppk;
Acessar via ssh e instalar conforme a proposta principal do slide 117 (Web
Varnish Nginx Apache).→ → →