12Sep
Quando você obtém um servidor virtual dedicado para executar o seu site, é provável que esteja configurado para todos e não personalizado para maximizar o desempenho para a execução de um site.
Conteúdo[ocultar]
|
Visão geral
Há uma série de áreas problemáticas onde nós want para maximizar o desempenho:
- Configuração do Linux
Geralmente, os serviços que funcionam não precisam ser, desperdiçando memória que pode ser usada para mais conexões. - Configuração do MySQL
Muitas vezes, as configurações padrão são baseadas em um pequeno servidor, podemos adicionar algumas mudanças importantes para aumentar o desempenho de um ótimo negócio. - Configuração do Apache
Por padrão, a maioria dos provedores de hospedagem instalam o apache com quase todos os módulos instalados. Não há motivos para carregar módulos se você nunca vai usá-los. - Configuração PHP
A configuração padrão do PHP está igualmente 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 cada vez, um cache de código operacional armazena os scripts compilados na memória para grandes aumentos de desempenho. - Backups
Provavelmente deveria configurar alguns backups automatizados, já que o seu provedor de hospedagem não o fará por você. - Security
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 do Linux
Há uma série de ajustes que você pode fazer, o que variará ligeiramente com base no servidor que você está usando. Esses ajustes são para um servidor que executa o CentOS, mas eles devem trabalhar para a maioria dos servidores DV.
Desativar DNS
Se seu provedor de hospedagem lidar com o DNS para seu domínio( provável), então você pode desativar o serviço DNS de execução.
desabilita dns /etc/init.d/ chamado stop chmod 644 /etc/init.d/ chamadoO comando chmod remove a permissão de execução do script, impedindo que ele seja executado na inicialização.
Desative o SpamAssassain
Se você não estiver usando contas de e-mail no seu próprio servidor, não deve se preocupar em executar ferramentas anti-spam.(Também você deve verificar o Google Apps, solução de e-mail muito melhor)
/etc/init.d/ psa-spamassassin parar chmod 644 /etc/init.d/ psa-spamassassinDesativar xinetd
O processo xinetd abriga uma série de outros processos, nenhum dos quais é útil para um servidor web típico.
/etc/init.d/ xinetd stop chmod 644 /etc/init.d/ xinetdLimite a utilização da memória Plesk
Se você usa 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.includeAdicione as seguintes linhas ao arquivo:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Observe que esta opção é conhecida por trabalhar em servidores DV MediaTemple, mas não foi verificada em nenhum outro.(Ver Referências)
Desativar ou Desligar Plesk( opcional)
Se você usar apenas o Plesk uma vez por ano, há muito poucas razões para deixá-lo funcionar. Observe que este passo é completamente opcional, e um pouco mais avançado.
Execute o seguinte comando para desativar o plesk:
/etc/init.d/ psa pararVocê pode desativá-lo de execução na inicialização executando o seguinte comando:
chmod 644 /etc/init.d/ psaObserve que, se você desativá-lo, não pode iniciá-lo manualmente semalterando as permissões do arquivo de volta( chmod u + x).
Configuração do MySQL
Habilite o Cache de Consulta
Abra o arquivo my.cnf /etc/ e adicione as seguintes linhas em sua seção [mysqld] como esta:
[mysqld] query-cache-type = 1 query-cache-size = 8MVocê podeAdicione mais memória ao cache da 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á ouvindo no TCP / IP executando o seguinte comando:
netstat -an |grep 3306Para desativar, adicione a seguinte linha ao seu arquivo /etc/ my.cnf:
skip-networkingConfiguração do Apache
Abra seu arquivo httpd.conf, encontrado frequentemente em /etc/httpd/conf/ httpd.conf
Encontre a linha que se parece com isto:
Timeout 120E alterá-lo para isso:
Timeout 20Agora, encontre a seção que inclui essas linhas e ajuste para algo semelhante:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000Configuração PHP
Uma das coisas paraTenha em mente quando ajustar um servidor na plataforma PHP é que cada thread apache único irá carregar o PHP em uma localização separada na memória. Isso significa que se um módulo não utilizado adiciona 256k de memória ao PHP, em 40 threads apache você está desperdiçando 10MB de memória.
Remove Módulos 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 paracada módulo.
Comente com quaisquer módulos de carga 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
Theresão uma série de caches opcode que você pode usar, incluindo APC, eAccelerator e Xcache, sendo a última minha preferência pessoal devido à estabilidade.
Baixe o xcache e extraie-o para um diretório e, em seguida, execute os seguintes comandos da origem xcachediretório:
phpize. /configure --enable-xcache make make installAbra seu arquivo php.ini eAdicione uma nova seção para xcache. Você precisará ajustar os caminhos se seus módulos php forem carregados de algum outro lugar.
vi /etc/ php.iniAdicione a seguinte seção ao arquivo:
[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere"[xcache];Altere xcache.size para ajustar o tamanho do cache do 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 = Desligado xcache.readonly_protection =Em xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = DesligadoTodo: Precisa expandir este um bit e link para xcache nas referências.
Backups
Há muito pouco mais importante do que ter backups automatizados do seu site. Você pode obter backups de snapshot do seu provedor de hospedagem, que também são muito úteis, mas eu prefiro também ter backups automatizados.
Criar Script de Backup Automatizado
Eu costumo começar criando um diretório / backups, com um diretório de arquivos /backups/ abaixo dele. Você pode ajustar esses caminhos se desejar.
mkdir -p Arquivos /backups/Agora crie um script backup.sh dentro do diretório de backups:
vi /backups/ backup.shAdicione o seguinte ao arquivo, ajustando os caminhos e mysqldump senha conforme necessário:
#!/bin/ sh THEDATE = `data +% d% m% y% H% M` mysqldump -uadmin -pPASSWORD DATABASENAME & gt;/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 encontre o site /backups/files/ * -mtime +5 -exec rm{ } \;encontre /backups/files/ db * -mtime +5 -exec rm{ } \;O script primeiro criará uma variável de data para que todos os arquivos sejam denominados o mesmo para um único backup, então despeja o banco de dados, acerta os arquivos da Web e os gzips. Os comandos de busca são usados para remover qualquer arquivo com mais de 5 dias, uma vez que você não deseja que sua unidade fique sem espaço.
Faça o script executável executando o seguinte comando:
chmod u + x /backups/ backup.shEm seguida, você precisará atribuí-lo para ser executado automaticamente pelo cron. Verifique se você usa uma conta que tenha acesso ao diretório de backups.
crontab -eAdicione a seguinte linha ao crontab:
1 1 * * * /backups/ backup.shVocê pode testar o script de antemão executando-o enquanto estiver conectado à conta de usuário.(Normalmente, eu executo os backups como root)
Backs de sincronização fora do site com o Rsync
Agora que você possui backups automatizados do seu servidor, você pode sincronizá-los em outro lugar, usando o utilitário rsync. Você quer ler este artigo sobre como configurar chaves ssh para login automático: Adicionar SSH pública ao servidor remoto em um único comando
Você pode testar isso executando esse comando em uma máquina Linux ou Mac em outro local( Item um servidor linux em casa, onde é que eu administrai isso)
rsync -a [email protected]: /backups/files/ * /offsitebackups/Isso levará bastante tempo para ser executado pela primeira vez, mas no final o seu computador local deve ter uma cópiado 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 -eAdicione 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 agendá-lo para executar em um momento diferente, ou apenas uma vez por dia. Isso é mesmo para você.
Observe que existem muitos 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 você tenha uma conta de usuário regular para usar através do ssh e certifique-se de que pode usar su para alternar para a raiz.É uma idéia muito ruim para permitir o login direto para root over ssh.
Desativar o Login da Raiz Sobre SSH
Edite o arquivo sshd_config do /etc/ssh/ e procure a seguinte linha:
#PermitRootLogin simAltere essa linha para se parecer com isto:
PermitRootLogin noCertifique-se de que você tenha uma conta de usuário normal e possa su pararaiz antes de fazer isso mudar, caso contrário você pode se bloquear.
Desativar SSH Versão 1
Não há realmente nenhuma razão para usar qualquer coisa além da SSH versão 2, pois é mais seguro do que as versões anteriores. Edite o arquivo sshd_config /etc/ssh/ e procure a seguinte seção:
#Protocol 2,1 Protocolo 2Certifique-se de que você está usando apenas o Protocolo 2 como mostrado.
Reinicie o Servidor SSH
Agora, você precisará reiniciar o servidor SSH para que isso tenha efeito.
/etc/init.d/ sshd reiniciarVerificar portas abertas
Você pode usar o seguinte comando para ver em quais portas o servidor está ouvindo:
netstat -an |grep LISTENVocê realmente não deveria ter nada além de portas 22, 80 e possivelmente 8443 para plesk.
Configurar um Firewall
Artigo principal: Usando Iptables no Linux
Você pode opcionalmente configurar um firewall iptables para bloquear mais conexões. Por exemplo, geralmente bloqueio o acesso a outras portas que não sejam da minha rede de trabalho. Se você tiver um endereço IP dinâmico, você deseja evitar essa opção.
Se você já seguiu todas as etapas deste guia até agora, provavelmente não é necessário também adicionar um firewall ao mix, mas é bom entender suas opções.
Consulte também
- Usando Iptables no Linux
Referências
- Otimizando seu servidor DV( mediatemple.net)
- XCache