SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
Infraestrutura de Internet e
Servidores Web
André Frederico Lucas da Silva
andresilva@utfpr.edu.br
Auto ethX
iface ethX inet static(ou dhcp)
address 172.17.X.X
netmask 255.255.0.0
gateway 172.17.250.1
nameserver XXX.XXX.XXX.XXX
ENDEREÇO IP
nano /etc/network/interfaces
Pressionar CTRL + X
Pressionar Y
Pressionar Enter (Salvar o arquivo no
caminho indicado)
SERVIDOR DNS
nano /etc/resolv.conf
Pressionar CTRL + X
Pressionar Y
Pressionar Enter (Salvar o arquivo no
caminho indicado)
APLICANDO AS CONFIGURAÇÕES
/etc/init.d/networking restart
Atualizar pacotes informações sobre repositórios
apt-get update
Manter o S.O. sempre atualizado
apt-get upgrade
• Instalar pacote SSH: apt-get instal ssh
• editar o arquivo /etc/ssh/sshd_config
• Editar arquivo securetty
cp /etc/securetty /etc/securetty.ori
echo “## Arquivo modificado ##” > /etc/securetty
• Reiniciar o serviço SSH
/etc/init.d/ssh restart
Port XXXX
...
PermitRootLogin no
...
PermitEmptyPassword no
...
PasswordAuthentication yes
CARREGAR MÁQUINA VIRTUAL DEBIAN_APACHE_PREFORK COM ADAPTADOR
DE REDE NO MODO BRIDGE
apt-get install apache2-mpm-prefork
apt-get install php5 libapache2-mod-php5
Para retirar a mensagem “Could not reliably determine the server's fully
qualified domain name, using 127.0.1.1 for ServerName”
Editar o arquivo httpd.conf e Adicionar a seguinte linha:
ServerName NOMEDOSERVIDOR
VHOST
Criar o arquivo de configuração do site na pasta sites-available
Editar o arquivo criado com as seguintes linhas:
ServerAdmin email@admin.com.br
ServerName www.nomedosite.com.br
DocumentRoot /var/www/pastadosite
<Directory /var/www/pastadosite/>
Criar a pasta conforme indicado no arquivo de conf.
Logs:
ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.log
CustomLog ${APACHE_LOG_DIR}/access_nomedosite.log
vhost_combined
Certificado SSL
apt-get install openssl ca-certificates
Criar pasta cert dentro de /etc/apache2 e entrar na pasta criada
mkdir /etc/apache2/cert
cd /etc/apache2/cert
Gerar a chave privada (Private Key):
openssl genrsa -des3 -out nome_certificado.key 1024 (2048)
Retirar a Senha da chave privada:
openssl rsa -in nome_certificado.key -out nome_certificado_nopwd.key
*** IMPORTANTE: executar chmod 600 nome_certificado_nopwd.key ***
chmod 600 /etc/apache2/cert/nome_certificado_nopwd.key
Gerar o pedido de certificação (Certificate Signing Request):
openssl req -new -key nome_certificado.key -out nome_certificado.csr
*** O Comon Name, deverá ter o mesmo nome do servidor, exemplo: host.dominio.com.br***
Assinar o certificado (Self-Signed Certificate):
openssl x509 -req -days 365 -in nome_certificado.csr -signkey nome_certificado.key -
out nome_certificado.crt
Ativar o módulo SSL
a2enmod ssl
Editar o arquivo do site ssl com as seguintes linhas: (/etc/apache2/sites-available)
ServerAdmin email@admin.com.br
ServerName www.nomedosite.com.br
DocumentRoot /var/www/pastadosite
<Directory /var/www/pastadosite/>
Logs:
ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.log
CustomLog ${APACHE_LOG_DIR}/access_nomedosite.log vhost_combined
SSLCertificateFile /etc/apache2/cert/cert_vhost1.crt
SSLCertificateKeyFile /etc/apache2/cert/cert_vhost1_nopwd.key
Entrar na pasta sites-available e ativar o site
a2ensite nomedosite
Reiniciar o Apache
/etc/init.d/apache2 restart
Páginas de erro personalizadas
/etc/apache2/conf.d/localized-error-pages
Edite o arquivo /etc/apt/sources.list
nano /etc/apt/sources.list
Adicione as linhas abaixo
deb http://ftp.br.debian.org/debian squeeze main contrib
deb-src http://ftp.br.debian.org/debian squeeze main contrib
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
Instale a Chave Pública do repositório LAMP DotDeb
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
apt-get update
apt-get install nginx
apt-get install apt-get install php5-fpm php-pear
Criar diretório /var/www
mkdir /var/www
chown -R www-data:www-data /var/www
Faça backup do arquivo nginx.conf
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.default
Editar o arquivo nginx.conf em /etc/nginx/
nano /etc/nginx/nginx.conf
user www-data www-data;
worker_process X; //Conforme quantidade de Cores de
Cpus
worker_cpu_affinity X; //Ex: 4 cpus(0001 0010 0100 1000)
worker_priority [-]X; //EX: -5
events {
use epoll;
worker_conections X;
(descomentar) multi_accept on;
}
http {
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
keepalive_timeout 30;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
(descomentar)server_tokens off;
(descomentar)gzip_*
}
Criar um arquivo de configuração do site
nano /etc/nginx/sites-available/nome_do_site
server {
listen 80;
server_name test.example.com;
root /var/www/test.example.com;
index index.html index.php;
# setup logging
access_log /var/log/nginx/access_nomedosite.log;
error_log /var/log/nginx/error_nomedosite.log;
}
ATIVAR O SITE
ln -s /etc/nginx/sites-available/nome_do_site
etc/nginx/sites-enabled/nome_do_site
Criar a pasta do site configurado
mkdir /var/www/nome_do_site
Criar o arquivo index
nano /var/www/nome_do_site/index.html
Alterar a permissão para a pasta geral e subarquivos
chown www-data:www-data –R /var/www
Reiniciar o NGINX e PHP-FPM
/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart
Ao iniciar o NGINX retornará o seguinte erro
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Editar o site padrão
nano /etc/nginx/sites-available/default
Alterar a linha
listen [::]:80 default_server;
Para
listen [::]:80 ipv6only=on default_server;
Reiniciar o NGINX e PHP-FPM
/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart
CONFIGURAR PHP
Abrir o arquivo de configuração do site
nano /etc/nginx/sites-available/nome_do_site
Adicionar as linhas abaixo dentro da tag server {
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
Criar o arquivo php
nano /var/www/nome_do_site/info.php
<?php
phpinfo();
?>
Alterar a permissão para a pasta geral e subarquivos
chown www-data:www-data –R /var/www
Chmod 644 –R /var/www
Reiniciar o NGINX e PHP-FPM
/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart
Certificado SSL
apt-get install openssl ca-certificates
Criar pasta cert dentro de /etc/nginx e entrar na pasta criada
mkdir /etc/nginx/cert
cd /etc/ngins/cert
Gerar a chave privada (Private Key):
openssl genrsa -des3 -out nome_certificado.key 1024 (2048)
Retirar a Senha da chave privada:
openssl rsa -in nome_certificado.key -out nome_certificado_nopwd.key
*** IMPORTANTE: executar chmod 600 nome_certificado_nopwd.key ***
Gerar o pedido de certificação (Certificate Signing Request):
openssl req -new -key nome_certificado.key -out nome_certificado.csr
*** O Comon Name, deverá ter o mesmo nome do site, exemplo: www.site.com.br***
Assinar o certificado (Self-Signed Certificate):
openssl x509 -req -days 365 -in nome_certificado.csr -signkey nome_certificado.key -
out nome_certificado.crt
Editar o arquivo do site ssl com as seguintes linhas (ou criar um novo):
server {
listen 443;
server_name nome_do_site.com.br;
root /var/www/nome_do_site;
index index.php;
# setup logging
access_log /var/log/nginx/access_nome_do_site_ssl.log;
error_log /var/log/nginx/error_nome_do_site_ssl.log;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
ssl on;
ssl_certificate /etc/nginx/cert/nome_certificado.crt; (ou .pem)
ssl_certificate_key /etc/nginx/cert/nome_certificado_nopwd.key;
}
Ativar o Site
ln -s /etc/nginx/sites-available/nome_do_site
etc/nginx/sites-enabled/nome_do_site
Reiniciar o NGINX e PHP5-FPM
/etc/init.d/nginx restart && /etc/init.d/php5-fpm
restart
Realizar as instalações do NGINX e Apache2-mpm-prefork normalmente (Mesma Máquina)
Modificações APACHE:
Renomear a pasta padrão do apache
mv /var/www /var/www_apache
Editar o arquivo /etc/apache2/ports.conf com a nova porta de escuta:
nano /etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
Editar o arquivo correspondente ao site /etc/apache2/sites-enabled/nome_do_site
nano /etc/apache2/sites-enabled/nome_do_site
<VirtualHost *:8080>
...
...
DocumentRoot /var/www_apache/pasta_do_site
<Directory /var/www_apache/pasta_do_site/>
...
Modificações NGINX:
Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site:
nano /etc/nginx/sites-enabled/nome_do_site
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;
}
Modificações NGINX:
Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site:
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://servidores;
}
FORA DA TAG SERVER {
upstream servidores {
server ipdoserver1:porta;
server ipdoserver2:porta;
server ipdoserver3:porta;
}
Realizar as instalações do NGINX e Apache2-mpm-prefork normalmente (Máquinas Separadas)
Modificações APACHE:
Editar o arquivo /etc/apache2/ports.conf com a nova porta de escuta:
nano /etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
Editar o arquivo correspondente ao site /etc/apache2/sites-enabled/nome_do_site
nano /etc/apache2/sites-enabled/nome_do_site
<VirtualHost *:8080>
...
...
DocumentRoot /var/www/pasta_do_site
<Directory /var/www/pasta_do_site/>
...
Modificações NGINX:
Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site:
nano /etc/nginx/sites-enabled/nome_do_site
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://IP_APACHE:8080;
}
Múltiplos Apaches
Modificações NGINX:
Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site:
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://servidores;
}
FORA DA TAG SERVER {
upstream servidores {
server ipdoserver1:porta;
server ipdoserver2:porta;
server ipdoserver3:porta;
}
Alterar a porta de resposta do NGINX
nano /etc/nginx/sites-enabled/nome_do_site
listen 8081;
Instalar o Varnish
apt-get install varnish
Abrir o arquivo /etc/varnish/default.vcl e alterar as linhas
nano /etc/varnish/default.vcl
backend default {
.host = “127.0.0.1”;
.port = “8080”;
}
...para...
backend default {
.host = “IP_SERVIDOR_NGNIX”; Ex: 192.168.245.138
.port = “PORTA DO SERVIDOR NGINX”; Ex: 81
}
Alterar o arquivo /etc/default/varnish
nano /etc/default/varnish
START=no --> START=yes
Comentar a ALTERNATIVE 2
DAEMON_OPTS=“-a :6081 
-T localhost: 6082 
-f /etc/varnish/default.vcl 
-S /etc/varnish/secret 
-s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G”
Descomentar e alterar os itens da ALTERNATIVE 3
VARNISH_VCL_CONF=/etc/varnish/default.vcl
VARNISH_LISTEN_PORT=80
VARNISH_MIN_THREADS=1
VARNISH_MAX_THREADS=1000
VARNISH_THREAD_TIMEOUT=60
VARNISH_STORAGE_FILE=/var/lib/varnish/$INSTANCE/varnish_storage.bin
VARNISH_STORAGE_SIZE=2G
VARNISH_SECRET_FILE=/etc/varnish/secret
VARNISH_STORAGE=“file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE
}”
VARNISH_TTL=20 (Tempo de atualização do cache)
DAEMON_OPTS....
Reiniciar o Varnish
/etc/init.d/varnish restart
Instalar o Banco de Dados MYSQL
apt-get install mysql-server
Fornecer uma senha para o usuário ROOT do banco (não obrigatório)
Instalar o módulo MYSQL para PHP
apt-get install php5-mysql
Instalar o Painel de Controle PHPMyAdmin
apt-get install phpmyadmin
Selecionar o Servidor Web
Selecionar YES para configurar o PHPMyAdmin
Abrir o PHPMyAdmin no navegador
http://ip_server/phpmyadmin
Otimizar configurações do PHP para o PHPPGAdmin
nano /etc/php5/conf.d/suhosin.ini
Descomentar e Alterar os seguintes parâmetros
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
Instalar o Banco de Dados POSTGRESQL
apt-get install postgresql
Instalar o módulo PGSQL para PHP
apt-get install php5-pgsql
Instalar o Painel de Controle PHPPGAdmin
apt-get install phppgadmin
Abrir o arquivo
nano /etc/phppgadmin/config.inc.php
E verifique as seguintes configurações
$conf['servers'][0]['host'] = 'localhost';
$conf['servers'][0]['defaultdb'] = 'postgres';
Criar o usuário administrador, Para isso, logar com o usuário postgres:
su postgres
E criar o usuário:
$ createuser -P nome-do-usuário
Informar o password 2 vezes e responder se este usuário será superuser
Após isso deslogar do usuário postgres
exit
Entrar no arquivo
nano /etc/postgresql/8.4/main/postgresql.conf
E alterar a opção
listen_addresses = 'localhost' para listen_addresses = '*'
Abrir o arquivo
nano /etc/postgresql/8.4/main/pg_hba.conf
Nas linhas:
#"local" is for Unix domain socket connections only
local all all ident sameuser
Comente ("#") "local all all ident sameuser“
E, em:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Deixe:
# IPv4 local connections:
host all all 0.0.0.0/0 md5
Abrir o arquivo
nano /etc/phppgadmin/apache.conf
Altere a linha
deny from all
Para:
allow from all
Reinicie o Apache e o Postgre
/etc/init.d/apache2 restart
/etc/init.d/postgresql restart
Abrir o PHPMyAdmin no navegador
http://ip_server/phppgadmin
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 POSSIVEL UTILIZE FIREWALLs
CRIE UMA DMZ E COLOQUE SEU WEBSERVER NELA
DEIXE SOMENTE OS SOFTWARES NECESSÁRIOS
MELHORE A SEGURANÇA BÁSICA APACHE
nano /etc/apache2/conf.d/security
ServerTokens Prod
ServerSignature Off
TraceEnabler Off
MELHORE A SEGURANÇA BÁSICA PHP
Edite o arquivo /etc/php5/apache2/php.ini
Altere “expose_php On” para “expose_php Off”
Complementos Firefox
Firebug
PageSpeed
Apache Benchmarking
ab -k -n 50000 -c 2 -e apache.cvs http://202.54.200.1/snkpage.html
Site para monitoramento de sites e servidores web
http://www.pingdom.com
Site para avaliação de websites
http://www.woorank.com/pt

Mais conteúdo relacionado

Mais procurados

Instalação de um servidor debian
Instalação de um servidor debianInstalação de um servidor debian
Instalação de um servidor debianEduardo Mendes
 
Configurando o ftp - ubuntu server
Configurando o ftp - ubuntu serverConfigurando o ftp - ubuntu server
Configurando o ftp - ubuntu serverAparicio Junior
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)elliando dias
 
SegurançA BáSica Do Apache
SegurançA BáSica Do ApacheSegurançA BáSica Do Apache
SegurançA BáSica Do ApacheFelipe Santos
 
Aula 10 configuração ip estático ubuntu server
Aula 10   configuração ip estático ubuntu serverAula 10   configuração ip estático ubuntu server
Aula 10 configuração ip estático ubuntu serverAparicio Junior
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxoFrederico Madeira
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosFernando Mercês
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]João Augusto
 
Tutorial instalacao linux_ubuntu_server
Tutorial instalacao linux_ubuntu_serverTutorial instalacao linux_ubuntu_server
Tutorial instalacao linux_ubuntu_serverGeovanni Viana
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)elliando dias
 
Instalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu ServerInstalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu ServerAparicio Junior
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - AmbientesDirceu Belém
 

Mais procurados (20)

Instalação de um servidor debian
Instalação de um servidor debianInstalação de um servidor debian
Instalação de um servidor debian
 
Linux - Servidor Web Apache
Linux - Servidor Web ApacheLinux - Servidor Web Apache
Linux - Servidor Web Apache
 
Shell Scipt - Comandos
Shell Scipt - ComandosShell Scipt - Comandos
Shell Scipt - Comandos
 
Configurando o ftp - ubuntu server
Configurando o ftp - ubuntu serverConfigurando o ftp - ubuntu server
Configurando o ftp - ubuntu server
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)
 
SegurançA BáSica Do Apache
SegurançA BáSica Do ApacheSegurançA BáSica Do Apache
SegurançA BáSica Do Apache
 
Aula 10 configuração ip estático ubuntu server
Aula 10   configuração ip estático ubuntu serverAula 10   configuração ip estático ubuntu server
Aula 10 configuração ip estático ubuntu server
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 
Glassfish41 debian76
Glassfish41 debian76Glassfish41 debian76
Glassfish41 debian76
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutos
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Proftpd
ProftpdProftpd
Proftpd
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]
 
Tutorial instalacao linux_ubuntu_server
Tutorial instalacao linux_ubuntu_serverTutorial instalacao linux_ubuntu_server
Tutorial instalacao linux_ubuntu_server
 
SSL no apache
SSL no apacheSSL no apache
SSL no apache
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Dhcp com controle_ip_compartilhamento
Dhcp com controle_ip_compartilhamentoDhcp com controle_ip_compartilhamento
Dhcp com controle_ip_compartilhamento
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
 
Instalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu ServerInstalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu Server
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - Ambientes
 

Destaque

Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
Projetos Web Por Maike Robert
Projetos Web   Por Maike RobertProjetos Web   Por Maike Robert
Projetos Web Por Maike Robertguest4d3fce
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidorMarcia Abrahim
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosFrederico Madeira
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídosEduardo de Lucena Falcão
 

Destaque (6)

Aula 1
Aula 1Aula 1
Aula 1
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
Projetos Web Por Maike Robert
Projetos Web   Por Maike RobertProjetos Web   Por Maike Robert
Projetos Web Por Maike Robert
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 

Semelhante a Aula 2

Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Apache2.4 tuning-hands on
Apache2.4 tuning-hands onApache2.4 tuning-hands on
Apache2.4 tuning-hands onRenato Gomes
 
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Aécio Pires
 
Ferramentas para Automação de Datacenter
Ferramentas para Automação de DatacenterFerramentas para Automação de Datacenter
Ferramentas para Automação de DatacenterWilson Lopes
 
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Wilson Lopes
 
instalação do expresso br
instalação do expresso brinstalação do expresso br
instalação do expresso brCarlos Veiga
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxSaveincloud
 
Project HA
Project HAProject HA
Project HAKarpv
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídosvinycesar
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppetpericles_junior
 
Criando Sites Com CMS
Criando Sites Com CMSCriando Sites Com CMS
Criando Sites Com CMSClaudio Toldo
 

Semelhante a Aula 2 (20)

Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
06 - Servidor Apache
06 - Servidor Apache06 - Servidor Apache
06 - Servidor Apache
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
Apache2.4 tuning-hands on
Apache2.4 tuning-hands onApache2.4 tuning-hands on
Apache2.4 tuning-hands on
 
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
 
Ferramentas para Automação de Datacenter
Ferramentas para Automação de DatacenterFerramentas para Automação de Datacenter
Ferramentas para Automação de Datacenter
 
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37
 
Escalando Sites com Nginx
Escalando Sites com NginxEscalando Sites com Nginx
Escalando Sites com Nginx
 
instalação do expresso br
instalação do expresso brinstalação do expresso br
instalação do expresso br
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginx
 
Project HA
Project HAProject HA
Project HA
 
Php WatchDog
Php WatchDogPhp WatchDog
Php WatchDog
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídos
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppet
 
Criando Sites Com CMS
Criando Sites Com CMSCriando Sites Com CMS
Criando Sites Com CMS
 

Aula 2

  • 1. Infraestrutura de Internet e Servidores Web André Frederico Lucas da Silva andresilva@utfpr.edu.br
  • 2.
  • 3. Auto ethX iface ethX inet static(ou dhcp) address 172.17.X.X netmask 255.255.0.0 gateway 172.17.250.1 nameserver XXX.XXX.XXX.XXX ENDEREÇO IP nano /etc/network/interfaces Pressionar CTRL + X Pressionar Y Pressionar Enter (Salvar o arquivo no caminho indicado) SERVIDOR DNS nano /etc/resolv.conf Pressionar CTRL + X Pressionar Y Pressionar Enter (Salvar o arquivo no caminho indicado) APLICANDO AS CONFIGURAÇÕES /etc/init.d/networking restart
  • 4. Atualizar pacotes informações sobre repositórios apt-get update Manter o S.O. sempre atualizado apt-get upgrade
  • 5. • Instalar pacote SSH: apt-get instal ssh • editar o arquivo /etc/ssh/sshd_config • Editar arquivo securetty cp /etc/securetty /etc/securetty.ori echo “## Arquivo modificado ##” > /etc/securetty • Reiniciar o serviço SSH /etc/init.d/ssh restart Port XXXX ... PermitRootLogin no ... PermitEmptyPassword no ... PasswordAuthentication yes
  • 6. CARREGAR MÁQUINA VIRTUAL DEBIAN_APACHE_PREFORK COM ADAPTADOR DE REDE NO MODO BRIDGE apt-get install apache2-mpm-prefork apt-get install php5 libapache2-mod-php5 Para retirar a mensagem “Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName” Editar o arquivo httpd.conf e Adicionar a seguinte linha: ServerName NOMEDOSERVIDOR
  • 7. VHOST Criar o arquivo de configuração do site na pasta sites-available Editar o arquivo criado com as seguintes linhas: ServerAdmin email@admin.com.br ServerName www.nomedosite.com.br DocumentRoot /var/www/pastadosite <Directory /var/www/pastadosite/> Criar a pasta conforme indicado no arquivo de conf. Logs: ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.log CustomLog ${APACHE_LOG_DIR}/access_nomedosite.log vhost_combined
  • 8. Certificado SSL apt-get install openssl ca-certificates Criar pasta cert dentro de /etc/apache2 e entrar na pasta criada mkdir /etc/apache2/cert cd /etc/apache2/cert Gerar a chave privada (Private Key): openssl genrsa -des3 -out nome_certificado.key 1024 (2048) Retirar a Senha da chave privada: openssl rsa -in nome_certificado.key -out nome_certificado_nopwd.key *** IMPORTANTE: executar chmod 600 nome_certificado_nopwd.key *** chmod 600 /etc/apache2/cert/nome_certificado_nopwd.key Gerar o pedido de certificação (Certificate Signing Request): openssl req -new -key nome_certificado.key -out nome_certificado.csr *** O Comon Name, deverá ter o mesmo nome do servidor, exemplo: host.dominio.com.br*** Assinar o certificado (Self-Signed Certificate): openssl x509 -req -days 365 -in nome_certificado.csr -signkey nome_certificado.key - out nome_certificado.crt
  • 9. Ativar o módulo SSL a2enmod ssl Editar o arquivo do site ssl com as seguintes linhas: (/etc/apache2/sites-available) ServerAdmin email@admin.com.br ServerName www.nomedosite.com.br DocumentRoot /var/www/pastadosite <Directory /var/www/pastadosite/> Logs: ErrorLog ${APACHE_LOG_DIR}/error_nomedosite.log CustomLog ${APACHE_LOG_DIR}/access_nomedosite.log vhost_combined SSLCertificateFile /etc/apache2/cert/cert_vhost1.crt SSLCertificateKeyFile /etc/apache2/cert/cert_vhost1_nopwd.key Entrar na pasta sites-available e ativar o site a2ensite nomedosite Reiniciar o Apache /etc/init.d/apache2 restart
  • 10. Páginas de erro personalizadas /etc/apache2/conf.d/localized-error-pages
  • 11. Edite o arquivo /etc/apt/sources.list nano /etc/apt/sources.list Adicione as linhas abaixo deb http://ftp.br.debian.org/debian squeeze main contrib deb-src http://ftp.br.debian.org/debian squeeze main contrib deb http://packages.dotdeb.org stable all deb-src http://packages.dotdeb.org stable all Instale a Chave Pública do repositório LAMP DotDeb wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | apt-key add - apt-get update
  • 12. apt-get install nginx apt-get install apt-get install php5-fpm php-pear Criar diretório /var/www mkdir /var/www chown -R www-data:www-data /var/www Faça backup do arquivo nginx.conf cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.default Editar o arquivo nginx.conf em /etc/nginx/ nano /etc/nginx/nginx.conf
  • 13. user www-data www-data; worker_process X; //Conforme quantidade de Cores de Cpus worker_cpu_affinity X; //Ex: 4 cpus(0001 0010 0100 1000) worker_priority [-]X; //EX: -5 events { use epoll; worker_conections X; (descomentar) multi_accept on; }
  • 14. http { open_file_cache max=200000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; keepalive_timeout 30; reset_timedout_connection on; client_body_timeout 10; send_timeout 2; (descomentar)server_tokens off; (descomentar)gzip_* }
  • 15. Criar um arquivo de configuração do site nano /etc/nginx/sites-available/nome_do_site server { listen 80; server_name test.example.com; root /var/www/test.example.com; index index.html index.php; # setup logging access_log /var/log/nginx/access_nomedosite.log; error_log /var/log/nginx/error_nomedosite.log; } ATIVAR O SITE ln -s /etc/nginx/sites-available/nome_do_site etc/nginx/sites-enabled/nome_do_site
  • 16. Criar a pasta do site configurado mkdir /var/www/nome_do_site Criar o arquivo index nano /var/www/nome_do_site/index.html Alterar a permissão para a pasta geral e subarquivos chown www-data:www-data –R /var/www Reiniciar o NGINX e PHP-FPM /etc/init.d/nginx restart /etc/init.d/php5-fpm restart
  • 17. Ao iniciar o NGINX retornará o seguinte erro nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) Editar o site padrão nano /etc/nginx/sites-available/default Alterar a linha listen [::]:80 default_server; Para listen [::]:80 ipv6only=on default_server; Reiniciar o NGINX e PHP-FPM /etc/init.d/nginx restart /etc/init.d/php5-fpm restart
  • 18. CONFIGURAR PHP Abrir o arquivo de configuração do site nano /etc/nginx/sites-available/nome_do_site Adicionar as linhas abaixo dentro da tag server { location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
  • 19. Criar o arquivo php nano /var/www/nome_do_site/info.php <?php phpinfo(); ?> Alterar a permissão para a pasta geral e subarquivos chown www-data:www-data –R /var/www Chmod 644 –R /var/www Reiniciar o NGINX e PHP-FPM /etc/init.d/nginx restart /etc/init.d/php5-fpm restart
  • 20. Certificado SSL apt-get install openssl ca-certificates Criar pasta cert dentro de /etc/nginx e entrar na pasta criada mkdir /etc/nginx/cert cd /etc/ngins/cert Gerar a chave privada (Private Key): openssl genrsa -des3 -out nome_certificado.key 1024 (2048) Retirar a Senha da chave privada: openssl rsa -in nome_certificado.key -out nome_certificado_nopwd.key *** IMPORTANTE: executar chmod 600 nome_certificado_nopwd.key *** Gerar o pedido de certificação (Certificate Signing Request): openssl req -new -key nome_certificado.key -out nome_certificado.csr *** O Comon Name, deverá ter o mesmo nome do site, exemplo: www.site.com.br*** Assinar o certificado (Self-Signed Certificate): openssl x509 -req -days 365 -in nome_certificado.csr -signkey nome_certificado.key - out nome_certificado.crt
  • 21. Editar o arquivo do site ssl com as seguintes linhas (ou criar um novo): server { listen 443; server_name nome_do_site.com.br; root /var/www/nome_do_site; index index.php; # setup logging access_log /var/log/nginx/access_nome_do_site_ssl.log; error_log /var/log/nginx/error_nome_do_site_ssl.log; location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } ssl on; ssl_certificate /etc/nginx/cert/nome_certificado.crt; (ou .pem) ssl_certificate_key /etc/nginx/cert/nome_certificado_nopwd.key; }
  • 22. Ativar o Site ln -s /etc/nginx/sites-available/nome_do_site etc/nginx/sites-enabled/nome_do_site Reiniciar o NGINX e PHP5-FPM /etc/init.d/nginx restart && /etc/init.d/php5-fpm restart
  • 23. Realizar as instalações do NGINX e Apache2-mpm-prefork normalmente (Mesma Máquina) Modificações APACHE: Renomear a pasta padrão do apache mv /var/www /var/www_apache Editar o arquivo /etc/apache2/ports.conf com a nova porta de escuta: nano /etc/apache2/ports.conf NameVirtualHost *:8080 Listen 8080 Editar o arquivo correspondente ao site /etc/apache2/sites-enabled/nome_do_site nano /etc/apache2/sites-enabled/nome_do_site <VirtualHost *:8080> ... ... DocumentRoot /var/www_apache/pasta_do_site <Directory /var/www_apache/pasta_do_site/> ...
  • 24. Modificações NGINX: Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site: nano /etc/nginx/sites-enabled/nome_do_site 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; }
  • 25. Modificações NGINX: Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site: 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://servidores; } FORA DA TAG SERVER { upstream servidores { server ipdoserver1:porta; server ipdoserver2:porta; server ipdoserver3:porta; }
  • 26. Realizar as instalações do NGINX e Apache2-mpm-prefork normalmente (Máquinas Separadas) Modificações APACHE: Editar o arquivo /etc/apache2/ports.conf com a nova porta de escuta: nano /etc/apache2/ports.conf NameVirtualHost *:8080 Listen 8080 Editar o arquivo correspondente ao site /etc/apache2/sites-enabled/nome_do_site nano /etc/apache2/sites-enabled/nome_do_site <VirtualHost *:8080> ... ... DocumentRoot /var/www/pasta_do_site <Directory /var/www/pasta_do_site/> ...
  • 27. Modificações NGINX: Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site: nano /etc/nginx/sites-enabled/nome_do_site 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://IP_APACHE:8080; }
  • 28. Múltiplos Apaches Modificações NGINX: Editar o arquivo do site em /etc/nginx/sites-enabled/nome_do_site: 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://servidores; } FORA DA TAG SERVER { upstream servidores { server ipdoserver1:porta; server ipdoserver2:porta; server ipdoserver3:porta; }
  • 29. Alterar a porta de resposta do NGINX nano /etc/nginx/sites-enabled/nome_do_site listen 8081; Instalar o Varnish apt-get install varnish Abrir o arquivo /etc/varnish/default.vcl e alterar as linhas nano /etc/varnish/default.vcl backend default { .host = “127.0.0.1”; .port = “8080”; } ...para... backend default { .host = “IP_SERVIDOR_NGNIX”; Ex: 192.168.245.138 .port = “PORTA DO SERVIDOR NGINX”; Ex: 81 }
  • 30. Alterar o arquivo /etc/default/varnish nano /etc/default/varnish START=no --> START=yes Comentar a ALTERNATIVE 2 DAEMON_OPTS=“-a :6081 -T localhost: 6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G”
  • 31. Descomentar e alterar os itens da ALTERNATIVE 3 VARNISH_VCL_CONF=/etc/varnish/default.vcl VARNISH_LISTEN_PORT=80 VARNISH_MIN_THREADS=1 VARNISH_MAX_THREADS=1000 VARNISH_THREAD_TIMEOUT=60 VARNISH_STORAGE_FILE=/var/lib/varnish/$INSTANCE/varnish_storage.bin VARNISH_STORAGE_SIZE=2G VARNISH_SECRET_FILE=/etc/varnish/secret VARNISH_STORAGE=“file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE }” VARNISH_TTL=20 (Tempo de atualização do cache) DAEMON_OPTS.... Reiniciar o Varnish /etc/init.d/varnish restart
  • 32. Instalar o Banco de Dados MYSQL apt-get install mysql-server Fornecer uma senha para o usuário ROOT do banco (não obrigatório) Instalar o módulo MYSQL para PHP apt-get install php5-mysql Instalar o Painel de Controle PHPMyAdmin apt-get install phpmyadmin Selecionar o Servidor Web Selecionar YES para configurar o PHPMyAdmin Abrir o PHPMyAdmin no navegador http://ip_server/phpmyadmin
  • 33. Otimizar configurações do PHP para o PHPPGAdmin nano /etc/php5/conf.d/suhosin.ini Descomentar e Alterar os seguintes parâmetros 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
  • 34. Instalar o Banco de Dados POSTGRESQL apt-get install postgresql Instalar o módulo PGSQL para PHP apt-get install php5-pgsql Instalar o Painel de Controle PHPPGAdmin apt-get install phppgadmin Abrir o arquivo nano /etc/phppgadmin/config.inc.php E verifique as seguintes configurações $conf['servers'][0]['host'] = 'localhost'; $conf['servers'][0]['defaultdb'] = 'postgres';
  • 35. Criar o usuário administrador, Para isso, logar com o usuário postgres: su postgres E criar o usuário: $ createuser -P nome-do-usuário Informar o password 2 vezes e responder se este usuário será superuser Após isso deslogar do usuário postgres exit Entrar no arquivo nano /etc/postgresql/8.4/main/postgresql.conf E alterar a opção listen_addresses = 'localhost' para listen_addresses = '*'
  • 36. Abrir o arquivo nano /etc/postgresql/8.4/main/pg_hba.conf Nas linhas: #"local" is for Unix domain socket connections only local all all ident sameuser Comente ("#") "local all all ident sameuser“ E, em: # IPv4 local connections: host all all 127.0.0.1/32 md5 Deixe: # IPv4 local connections: host all all 0.0.0.0/0 md5
  • 37. Abrir o arquivo nano /etc/phppgadmin/apache.conf Altere a linha deny from all Para: allow from all Reinicie o Apache e o Postgre /etc/init.d/apache2 restart /etc/init.d/postgresql restart Abrir o PHPMyAdmin no navegador http://ip_server/phppgadmin
  • 38. 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 POSSIVEL UTILIZE FIREWALLs CRIE UMA DMZ E COLOQUE SEU WEBSERVER NELA DEIXE SOMENTE OS SOFTWARES NECESSÁRIOS
  • 39. MELHORE A SEGURANÇA BÁSICA APACHE nano /etc/apache2/conf.d/security ServerTokens Prod ServerSignature Off TraceEnabler Off MELHORE A SEGURANÇA BÁSICA PHP Edite o arquivo /etc/php5/apache2/php.ini Altere “expose_php On” para “expose_php Off”
  • 40. Complementos Firefox Firebug PageSpeed Apache Benchmarking ab -k -n 50000 -c 2 -e apache.cvs http://202.54.200.1/snkpage.html Site para monitoramento de sites e servidores web http://www.pingdom.com Site para avaliação de websites http://www.woorank.com/pt