O documento fornece instruções para configurar infraestrutura de internet e servidores web em Debian/Ubuntu, incluindo configuração de endereço IP, servidor DNS, instalação e configuração de Apache, Nginx, PHP e bancos de dados MySQL e PostgreSQL.
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
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
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