Quando você obtém um servidor virtual dedicado para executar seu site, é provável que ele seja configurado para todos, e não personalizado para maximizar o desempenho de um site.
Conteúdo[ ocultar ]
|
Visão geral
Existem várias áreas problemáticas nas quais queremos maximizar o desempenho:
-
Configuração Linux
Normalmente, há serviços em execução que não precisam estar, desperdiçando memória que poderia ser usada para mais conexões. -
Configuração MySQL
Freqüentemente, as configurações padrão são baseadas em um pequeno servidor, podemos adicionar algumas mudanças importantes para aumentar muito o desempenho. -
Configuração Apache
Por padrão, a maioria dos provedores de hospedagem instala o apache com quase todos os módulos instalados. Não há razão para carregar módulos se você nunca vai usá-los. -
Configuração PHP
A configuração padrão do PHP é similarmente inchada, geralmente há uma tonelada de módulos extras desnecessários instalados. -
PHP Opcode Cache
Em vez de permitir que o PHP recompile os scripts todas as vezes, um cache de opcode armazenará os scripts compilados na memória para aumentar o desempenho. -
Backups
Provavelmente deve configurar alguns backups automatizados, já que seu provedor de hospedagem não fará isso por você. -
Segurança
Claro, o Linux é seguro o suficiente por padrão, mas geralmente há alguns problemas de segurança flagrantes que você pode corrigir com algumas configurações rápidas.
Configuração Linux
Há uma série de ajustes que você pode fazer, que variam ligeiramente com base no servidor que você está usando. Esses ajustes são para um servidor rodando CentOS, mas eles devem funcionar para a maioria dos servidores DV.
Desativar DNS
Se o seu provedor de hospedagem lida com o DNS do seu domínio (provavelmente), você pode desativar a execução do serviço DNS.
desabilitar dns /etc/init.d/named stop chmod 644 /etc/init.d/named
O comando chmod remove a permissão de execução do script, interrompendo sua execução na inicialização.
Desativar SpamAssassin
Se você não estiver usando contas de e-mail em seu próprio servidor, não se preocupe em executar ferramentas anti-spam. (Você também deve verificar o Google Apps, uma solução de e-mail muito melhor)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Desativar xinetd
O processo xinetd abriga vários outros processos, nenhum dos quais é útil para um servidor web típico.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Limite de uso de memória Plesk
Se você usar o painel plesk, você pode forçá-lo a usar menos memória adicionando um arquivo de opções.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Adicione as seguintes linhas ao arquivo:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Observe que esta opção é conhecida por funcionar em servidores MediaTemple DV, mas não foi marcada em nenhum outro. (Vejo Referências )
Desativar ou desligar o Plesk (opcional)
Se você usar o Plesk apenas uma vez por ano, há muito pouca razão para deixá-lo funcionando. Observe que esta etapa é totalmente opcional e um pouco mais avançada.
Execute o seguinte comando para desligar o plesk:
/etc/init.d/psa stop
Você pode desativar sua execução na inicialização, executando o seguinte comando:
chmod 644 /etc/init.d/psa
Observe que se você desativá-lo, não poderá iniciá-lo manualmente sem alterar as permissões do arquivo de volta (chmod u + x).
Configuração MySQL
Habilitar Cache de Consulta
Abra seu arquivo /etc/my.cnf e adicione as seguintes linhas em sua seção [mysqld] como esta:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Você pode adicionar mais memória ao cache de consulta, se desejar, mas não use muito.
Desativar TCP / IP
Um número surpreendente de hosts permite o acesso ao MySQL em TCP / IP por padrão, o que não faz sentido para um site. Você pode descobrir se o mysql está escutando no TCP / IP executando o seguinte comando:
netstat -an | grep 3306
Para desativar, adicione a seguinte linha ao seu arquivo /etc/my.cnf:
pular rede
Configuração Apache
Abra seu arquivo httpd.conf, geralmente encontrado em /etc/httpd/conf/httpd.conf
Encontre a linha parecida com esta:
Tempo Limite 120
E mude para isto:
Tempo Limite 20
Agora encontre a seção que inclui essas linhas e ajuste para algo semelhante:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Configuração PHP
Uma das coisas a se ter em mente ao ajustar um servidor na plataforma PHP é que cada thread do Apache carregará o PHP em um local separado na memória. Isso significa que se um módulo não utilizado adiciona 256k de memória ao PHP, em 40 threads do Apache você está desperdiçando 10 MB de memória.
Remover módulos de PHP desnecessários
Você precisará localizar seu arquivo php.ini, que geralmente é encontrado em /etc/php.ini (observe que em algumas distribuições, haverá um diretório /etc/php.d/ com vários arquivos .ini, um para cada módulo.
Comente quaisquer linhas de módulo de carregamento com estes módulos:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: Adicione mais informações aqui.
PHP Opcode Cache
Existem vários caches de opcode que você pode usar, incluindo APC, eAccelerator e Xcache, o último sendo minha preferência pessoal devido à estabilidade.
Faça download do xcache e extraia-o em um diretório e, em seguida, execute os seguintes comandos no diretório de origem do xcache:
phpize ./configure --enable-xcache faço faça a instalação
Abra seu arquivo php.ini e adicione uma nova seção para xcache. Você precisará ajustar os caminhos se seus módulos php forem carregados de outro lugar.
vi /etc/php.ini
Adicione a seguinte seção ao arquivo:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "meunomedeusuario" xcache.admin.pass = "putanmd5hashhere" [xcache] ; Altere xcache.size para ajustar o tamanho do cache de opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ; Altere xcache.var_size para ajustar o tamanho do cache variável xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.readonly_protection = On xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = Off
Todo: Preciso expandir um pouco isso e vincular o xcache nas referências.
Backups
Há muito pouco mais importante do que ter backups automatizados de seu site. Você pode obter backups instantâneos de seu provedor de hospedagem, que também são muito úteis, mas prefiro também fazer backups automatizados.
Criar script de backup automatizado
Normalmente começo criando um diretório / backups, com um diretório / backups / files abaixo dele. Você pode ajustar esses caminhos, se desejar.
mkdir -p / backups / arquivos
Agora crie um script backup.sh dentro do diretório backups:
vi /backups/backup.sh
Adicione o seguinte ao arquivo, ajustando os caminhos e a senha do mysqldump conforme necessário:
#! / bin / sh
THEDATE = `data +% d% m% y% H% M`
mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak
tar -cf /backups/files/sitebackup$THEDATE.tar / var / www / vhosts / my-website-path / httpdocs
gzip /backups/files/sitebackup$THEDATE.tar
localizar / backups / arquivos / site * -mtime +5 -exec rm {} \;
localizar / backups / arquivos / db * -mtime +5 -exec rm {} \;
O script criará primeiro uma variável de data para que todos os arquivos tenham o mesmo nome para um único backup, em seguida, despeja o banco de dados, faz o zip dos arquivos da web e gzip. Os comandos find são usados para remover qualquer arquivo com mais de 5 dias, já que você não quer que seu disco fique sem espaço.
Torne o script executável executando o seguinte comando:
chmod u + x /backups/backup.sh
Em seguida, você precisará atribuí-lo para ser executado automaticamente pelo cron. Certifique-se de usar uma conta que tenha acesso ao diretório de backups.
crontab -e
Adicione a seguinte linha ao crontab:
1 1 * * * /backups/backup.sh
Você pode testar o script com antecedência, executando-o enquanto estiver conectado à conta do usuário. (Eu geralmente executo os backups como root)
Sincronizar backups fora do local com Rsync
Agora que você tem backups automatizados do servidor em execução, pode sincronizá-los em outro lugar usando o utilitário rsync. Você vai querer ler este artigo sobre como configurar as chaves SSH para login automático: Adicionar chave SSH pública ao servidor remoto em um único comando
Você pode testar isso executando este comando em uma máquina Linux ou Mac em outro local (eu tenho um servidor Linux em casa, que é onde o executo)
rsync -a [email protected]: / backups / files / * / offsitebackups /
Isso vai demorar um pouco para ser executado pela primeira vez, mas no final o seu computador local deverá ter uma cópia do diretório de arquivos no diretório / offsitebackups /. (Certifique-se de criar esse diretório antes de executar o script)
Você pode agendar isso adicionando-o a uma linha crontab:
crontab -e
Adicione a seguinte linha, que executará rsync a cada hora na marca de 45 minutos. Você notará que usamos o caminho completo para rsync aqui.
45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /
Você pode programá-lo para ser executado em um horário diferente ou apenas uma vez por dia. Isso realmente depende de você.
Observe que existem vários utilitários que permitem sincronizar via ssh ou ftp. Você não precisa usar o rsync.
Segurança
A primeira coisa que você quer fazer é certificar-se de que possui uma conta de usuário regular para usar através do ssh e certificar-se de que pode usar o su para mudar para root. É uma ideia muito ruim permitir o login direto para root por ssh.
Desativar login raiz por SSH
Edite o arquivo / etc / ssh / sshd_config e procure a seguinte linha:
#PermitRootLogin sim
Mude essa linha para ficar assim:
PermitRootLogin no
Certifique-se de que possui uma conta de usuário regular e pode fazer su para fazer root antes de fazer esta alteração, caso contrário, você pode se bloquear.
Desativar SSH versão 1
Não há realmente nenhuma razão para usar algo diferente do SSH versão 2, pois é mais seguro do que as versões anteriores. Edite o arquivo / etc / ssh / sshd_config e procure a seguinte seção:
#Protocol 2,1 Protocolo 2
Certifique-se de usar apenas o Protocolo 2 conforme mostrado.
Reinicie o servidor SSH
Agora você precisará reiniciar o servidor SSH para que isso tenha efeito.
/etc/init.d/sshd restart
Verifique se há portas abertas
Você pode usar o seguinte comando para ver em quais portas o servidor está escutando:
netstat -an | grep LISTEN
Você realmente não deve ouvir nada além das portas 22, 80 e possivelmente 8443 para plesk.
Configure um Firewall
Você pode opcionalmente configurar um firewall iptables para bloquear mais conexões. Por exemplo, geralmente bloqueio o acesso a qualquer outra porta que não seja da minha rede de trabalho. Se você tiver um endereço IP dinâmico, convém evitar essa opção.
Se você já seguiu todas as etapas deste guia até agora, provavelmente não é necessário adicionar um firewall à mistura, mas é bom entender suas opções.
Veja também
- Usando Iptables no Linux