Quando você recebe um servidor virtual dedicado para veicular seu website, há grandes chances de que ele esteja configurado para todos e não seja personalizado para maximizar o desempenho da execução de um website.
Conteúdo[ocultar]
|
visão global
Há várias áreas problemáticas em que queremos maximizar o desempenho:
- Configuração do Linux Geralmente, há serviços em execução que não precisam ser, desperdiçando memória que poderia 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 alterações importantes para aumentar o desempenho muito.
- Configuração do Apache Por padrão, a maioria dos provedores de hospedagem instala o apache com quase todos os módulos instalados. Não há motivo para carregar módulos se você não for 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.
- Cache Opcode PHP Em vez de permitir que o PHP recompile os scripts todas as vezes, um cache opcode armazenará em cache 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 gritantes que você pode corrigir com algumas configurações rápidas.
Configuração Linux
Há vários ajustes que você pode fazer, que variam um pouco com base no servidor que você está usando. Esses ajustes são para um servidor rodando o CentOS, mas eles devem funcionar para a maioria dos servidores de DV.
Desativar DNS
Se o seu provedor de hospedagem lida com o DNS do seu domínio (provavelmente), você pode desabilitar a execução do serviço DNS.
disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named
O comando chmod remove a permissão de execução do script, impedindo que ele seja executado na inicialização.
Desativar SpamAssassain
Se você não estiver usando contas de e-mail no próprio servidor, não se preocupe em executar ferramentas anti-spam. (Além disso, você deve verificar o Google Apps, muito melhor solução de e-mail)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Desativar 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/xinetd
Limite de uso da memória do Plesk
Se você usar o painel plesk, poderá 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 essa opção é conhecida por funcionar nos servidores do MediaTemple DV, mas não foi verificada em nenhuma outra. (Ver referências)
Desativar ou desativar o Plesk (opcional)
Se você usa o Plesk apenas uma vez por ano, há muito poucas razões para deixá-lo funcionando. Note que este passo é completamente opcional e um pouco mais avançado.
Execute o seguinte comando para desativar o plesk:
/etc/init.d/psa stop
Você pode desativá-lo da execução na inicialização executando o seguinte comando:
chmod 644 /etc/init.d/psa
Se você desativá-lo, não será possível iniciá-lo manualmente sem alterar as permissões do arquivo de volta (chmod u + x).
Configuração MySQL
Ativar 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 quiser, mas não usar muito.
Desativar TCP / IP
Um número surpreendente de hosts permite o acesso ao MySQL no 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 desabilitar, adicione a seguinte linha ao seu arquivo /etc/my.cnf:
skip-networking
Configuração do Apache
Abra o seu arquivo httpd.conf, freqüentemente encontrado em /etc/httpd/conf/httpd.conf
Encontre a linha que se parece com isso:
Timeout 120
E mude para isso:
Timeout 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 que devem ser lembradas quando se está ajustando um servidor na plataforma PHP é que cada thread do apache vai carregar o PHP em um local separado na memória. Isso significa que, se um módulo não utilizado adicionar 256k de memória ao PHP, em 40 segmentos do apache, você estará desperdiçando 10 MB de memória.
Remova os módulos desnecessários do PHP
Você precisará localizar o arquivo php.ini, que normalmente é encontrado em /etc/php.ini (Note que em algumas distribuições, haverá um diretório /etc/php.d/ com vários arquivos.ini, um para cada módulo.
Comente qualquer linha de módulo de carga com estes módulos:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- carregador-ioncube
- json
- imap
- ldap
- ncurses
Todo: adicione mais informações aqui.
Cache Opcode PHP
Há vários caches opcode que você pode usar, incluindo APC, eAccelerator e Xcache, sendo este último minha preferência pessoal devido à estabilidade.
Faça o 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 make make install
Abra seu arquivo php.ini e adicione uma nova seção para o xcache. Você precisará ajustar os caminhos se os módulos do 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 = 'myusername' xcache.admin.pass = 'putanmd5hashhere' [xcache]; Change xcache.size to tune the size of the opcode cache xcache.size = 16M xcache.shm_scheme = 'mmap' xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Change xcache.var_size to adjust the size of variable cache 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: Precisa expandir um pouco e vincular ao xcache nas referências.
Backups
Há muito pouco mais importante do que ter backups automatizados do seu site. Você pode conseguir backups de snapshots do seu provedor de hospedagem, que também são muito úteis, mas eu prefiro ter backups automatizados também.
Criar script de backup automatizado
Eu geralmente começo criando um diretório / backups, com um diretório / backups / files abaixo dele. Você pode ajustar esses caminhos se quiser.
mkdir -p /backups/files
Agora crie um script backup.sh dentro do diretório de backups:
vi /backups/backup.sh
Adicione o seguinte ao arquivo, ajustando os caminhos e a senha do mysqldump, conforme necessário:
#!/bin/sh THEDATE=`date +%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 find /backups/files/site* -mtime +5 -exec rm {}; find /backups/files/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, depois copie o banco de dados, limpe os arquivos da Web e faça gzips. Os comandos de localização são usados para remover arquivos com mais de cinco dias, pois 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 antecipadamente, executando-o enquanto estiver conectado à conta do usuário. (Eu normalmente executo os backups como root)
Sincronizar backups fora do local com o Rsync
Agora que você tem backups automatizados do servidor em execução, é possível sincronizá-los em outro local usando o utilitário rsync. Você desejará ler este artigo sobre como configurar 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 um linux ou máquina Mac em outro local (eu tenho um servidor Linux em casa, que é onde eu corro isso)
rsync -a [email protected]:/backups/files/* /offsitebackups/
Isso levará um bom tempo para ser executado na primeira vez, mas, no final, o 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 de crontab:
crontab -e
Adicione a seguinte linha, que executará o rsync a cada hora na marca de 45 minutos. Você perceberá 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 é com você.
Note 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 é ter certeza de que você tem uma conta de usuário regular para usar através do ssh, e certifique-se de que você pode usar su para mudar para root. É uma péssima ideia permitir o login direto para o root sobre o ssh.
Desativar o logon da raiz por SSH
Edite o arquivo / etc / ssh / sshd_config e procure pela seguinte linha:
#PermitRootLogin yes
Altere essa linha para ficar assim:
PermitRootLogin no
Certifique-se de que você tem uma conta de usuário regular e pode su a raiz antes de fazer essa alteração, caso contrário você pode se trancar para fora.
Desativar versão do SSH 1
Não há realmente nenhum motivo para usar outra coisa senão a versão 2 do SSH, 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 Protocol 2
Certifique-se de que você esteja usando apenas o Protocolo 2, conforme mostrado.
Reinicie o servidor SSH
Agora você precisará reiniciar o servidor SSH para que isso seja efetivado.
/etc/init.d/sshd restart
Verifique se há portas abertas
Você pode usar o seguinte comando para ver em quais portas o servidor está atendendo:
netstat -an | grep LISTEN
Você realmente não deveria ter nada além de portas 22, 80 e possivelmente 8443 para plesk.
Configurar um firewall
Artigo principal:Usando o Iptables no Linux
Opcionalmente, você pode configurar um firewall iptables para bloquear mais conexões. Por exemplo, eu 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, evite essa opção.
Se você já seguiu todas as etapas deste guia até o momento, provavelmente não é necessário adicionar um firewall à mistura, mas é bom entender suas opções.
Veja também
Usando o Iptables no Linux
Referências
- Otimizando seu servidor DV (mediatemple.net)
- XCache