Ottimizzazione di un server Web virtuale dedicato

Sommario:

Ottimizzazione di un server Web virtuale dedicato
Ottimizzazione di un server Web virtuale dedicato

Video: Ottimizzazione di un server Web virtuale dedicato

Video: Ottimizzazione di un server Web virtuale dedicato
Video: How to Import Outlook.com Emails to Thunderbird | Cost-Effective Solution! - YouTube 2024, Novembre
Anonim

Quando si ottiene un server virtuale dedicato per l'esecuzione del sito Web, è probabile che sia configurato per tutti e non personalizzato per ottimizzare le prestazioni per l'esecuzione di un sito Web.

Contenuto

[nascondere]

  • 1. Panoramica
  • 2 Configurazione Linux

    • 2.1 Disabilita DNS
    • 2.2 Disabilita SpamAssassain
    • 2.3 Disabilita xinetd
    • 2.4 Limitazione dell'uso della memoria di Plesk
    • 2.5 Disabilita o Disattiva Plesk (opzionale)
  • 3 Configurazione MySQL

    • 3.1 Abilita Query Cache
    • 3.2 Disabilita TCP / IP
  • 4 Configurazione di Apache
  • 5 configurazione PHP

    • 5.1 Rimuovere i moduli PHP non necessari
    • 5.2 PHP Opcode Cache
  • 6 backup

    • 6.1 Crea script di backup automatico
    • 6.2 Sincronizzazione dei backup fuori sito con Rsync
  • 7 Sicurezza

    • 7.1 Disabilitare il login root su SSH
    • 7.2 Disabilita SSH versione 1
    • 7.3 Riavvia il server SSH
    • 7.4 Verifica porte aperte
    • 7.5 Impostazione di un firewall
  • 8 Vedi anche
  • 9 riferimenti

Panoramica

Esiste una serie di aree problematiche in cui vogliamo massimizzare le prestazioni:

  • Configurazione Linux Di solito ci sono servizi in esecuzione che non devono necessariamente essere, sprecando memoria che potrebbe essere utilizzata per più connessioni.
  • Configurazione MySQL Spesso le impostazioni predefinite sono basate su un server di piccole dimensioni, possiamo aggiungere alcune modifiche chiave per aumentare notevolmente le prestazioni.
  • Configurazione Apache Di default la maggior parte dei provider di hosting installa apache con quasi tutti i moduli installati. Non c'è motivo di caricare moduli se non li userai mai.
  • Configurazione PHP La configurazione predefinita di PHP è altrettanto gonfia, di solito ci sono un sacco di moduli aggiuntivi non necessari installati.
  • PHP Opcode Cache Invece di consentire a PHP di ricompilare gli script ogni volta, una cache di opcode memorizzerà nella cache gli script compilati in memoria per enormi aumenti di prestazioni.
  • I backup Probabilmente dovrebbe configurare alcuni backup automatici, dal momento che il tuo provider di hosting non ha intenzione di farlo per te.
  • Sicurezza Certo, Linux è abbastanza sicuro per impostazione predefinita, ma di solito ci sono alcuni problemi di sicurezza che puoi correggere con alcune impostazioni rapide.

Configurazione Linux

C'è un certo numero di modifiche che puoi fare, che possono variare leggermente in base al server che stai utilizzando. Queste modifiche sono per un server che esegue CentOS, ma dovrebbero funzionare per la maggior parte dei server DV.

Disabilita DNS

Se il tuo provider di hosting gestisce il DNS per il tuo dominio (probabilmente), puoi disattivare il servizio DNS.

disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named

Il comando chmod rimuove il permesso di esecuzione dallo script, impedendogli di essere eseguito all'avvio.

Disabilita SpamAssassain

Se non si utilizzano account e-mail sul server stesso, non si deve preoccupare di eseguire gli strumenti anti-spam. (Inoltre dovresti controllare Google Apps, soluzione email molto migliore)

/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin

Disabilita xinetd

Il processo xinetd contiene una serie di altri processi, nessuno dei quali è utile per un server web tipico.

/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd

Limitare l'utilizzo della memoria di Plesk

Se si utilizza il pannello plesk, è possibile forzarlo a utilizzare meno memoria aggiungendo un file di opzioni.

vi /usr/local/psa/admin/conf/httpsd.custom.include

Aggiungi le seguenti righe al file:

MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

Si noti che questa opzione è nota per funzionare sui server MediaTemple DV, ma non è stata controllata su nessun'altra. (Vedi riferimenti)

Disattiva o Disattiva Plesk (opzionale)

Se usi Plesk solo una volta all'anno, c'è ben poco motivo per lasciarlo funzionare. Si noti che questo passaggio è completamente facoltativo e leggermente più avanzato.

Esegui il seguente comando per disattivare plesk:

/etc/init.d/psa stop

Puoi disabilitarlo dall'esecuzione all'avvio eseguendo il seguente comando:

chmod 644 /etc/init.d/psa

Nota che se lo disattivi, non puoi avviarlo manualmente senza cambiare i permessi del file (chmod u + x).

Configurazione MySQL

Abilita Query Cache

Apri il tuo file /etc/my.cnf e aggiungi le seguenti righe nella tua sezione [mysqld] in questo modo:

[mysqld] query-cache-type = 1 query-cache-size = 8M

Puoi aggiungere più memoria alla cache delle query se lo desideri, ma non usare troppo.

Disabilita TCP / IP

Un numero sorprendente di host consente l'accesso a MySQL su TCP / IP per impostazione predefinita, il che non ha senso per un sito Web. Puoi capire se mysql sta ascoltando su TCP / IP eseguendo il seguente comando:

netstat -an | grep 3306

Per disabilitare, aggiungi la seguente riga al tuo file /etc/my.cnf:

skip-networking

Configurazione di Apache

Apri il tuo file httpd.conf, che si trova spesso in /etc/httpd/conf/httpd.conf

Trova la linea che assomiglia a questa:

Timeout 120

E cambialo in questo:

Timeout 20

Ora trova la sezione che include queste righe e regola qualcosa di simile:

StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

Configurazione PHP

Una delle cose da tenere a mente quando si modifica un server sulla piattaforma PHP è che ogni singolo thread di apache caricherà PHP in una posizione separata in memoria. Ciò significa che se un modulo non utilizzato aggiunge 256k di memoria a PHP, su 40 thread apache stai sprecando 10MB di memoria.

Rimuovere i moduli PHP non necessari

Dovrai localizzare il tuo file php.ini, che di solito si trova in /etc/php.ini (nota che su alcune distribuzioni, ci sarà una directory /etc/php.d/ con un numero di file.ini, uno per ogni modulo.

Commenta qualsiasi linea di modulo di carico con questi moduli:

  • odbc
  • snmp
  • pdo
  • odbc pdo
  • mysqli
  • ionCube-loader
  • jSON
  • imap
  • LDAP
  • ncurses

Todo: aggiungi ulteriori informazioni qui.

PHP Opcode Cache

Ci sono un certo numero di cache opcode che puoi usare, tra cui APC, eAccelerator e Xcache, l'ultima è la mia preferenza personale a causa della stabilità.

Scarica xcache ed estrailo in una directory, quindi esegui i seguenti comandi dalla directory di origine xcache:

phpize./configure --enable-xcache make make install

Apri il tuo file php.ini e aggiungi una nuova sezione per xcache. Avrai bisogno di regolare i percorsi se i tuoi moduli php vengono caricati da qualche altra parte.

vi /etc/php.ini

Aggiungi la seguente sezione al file:

[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: Bisogno di espandere questo un po 'e link a xcache nei riferimenti.

I backup

È molto più importante avere i backup automatici del tuo sito web. Potresti riuscire a ottenere backup di istantanee dal tuo provider di hosting, che sono anche molto utili, ma preferisco anche avere backup automatici.

Crea script di backup automatico

Di solito inizio creando una directory / backups, con una directory / backups / files al di sotto di essa. Puoi regolare questi percorsi se vuoi.

mkdir -p /backups/files

Ora crea uno script backup.sh all'interno della directory dei backup:

vi /backups/backup.sh

Aggiungi il seguente al file, regolando i percorsi e la password di mysqldump come necessario:

#!/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 {};

Lo script creerà dapprima una variabile di data in modo che tutti i file saranno nominati uguali per un singolo backup, quindi scaricherà il database, rastrellerà i file web e li gzips. I comandi di ricerca vengono utilizzati per rimuovere tutti i file più vecchi di 5 giorni, dal momento che non si desidera che l'unità esaurisca lo spazio.

Rendi eseguibile lo script eseguendo il seguente comando:

chmod u+x /backups/backup.sh

Successivamente dovrai assegnarlo per essere eseguito automaticamente da cron. Assicurati di utilizzare un account che abbia accesso alla directory dei backup.

crontab -e

Aggiungi la seguente riga al crontab:

1 1 * * * /backups/backup.sh

È possibile testare lo script in anticipo eseguendolo mentre si è connessi all'account utente. (Di solito eseguo i backup come root)

Sincronizza i backup fuori sito con Rsync

Ora che hai eseguito il backup automatico del tuo server, puoi sincronizzarlo da qualche altra parte usando l'utility rsync. Ti consigliamo di leggere questo articolo su come configurare le chiavi ssh per l'accesso automatico: Aggiungi la chiave SSH pubblica al server remoto in un singolo comando

Puoi testarlo eseguendo questo comando su un computer Linux o Mac in un'altra posizione (ho un server linux a casa, che è dove lo eseguo)

rsync -a [email protected]:/backups/files/* /offsitebackups/

Questo richiederà un po 'di tempo per essere eseguito la prima volta, ma alla fine il computer locale dovrebbe avere una copia della directory dei file nella directory / offsitebackups /. (Assicurati di creare quella directory prima di eseguire lo script)

Puoi pianificare questo aggiungendolo a una linea crontab:

crontab -e

Aggiungi la seguente riga, che eseguirà rsync ogni ora al punto di 45 minuti. Noterai che utilizziamo il percorso completo per rsync qui.

45 * * * * /usr/bin/rsync -a [email protected]:/backups/files/* /offsitebackups/

È possibile pianificare l'esecuzione in un momento diverso o solo una volta al giorno. Dipende solo da te.

Nota che ci sono molte utility che ti permetteranno di sincronizzare tramite ssh o ftp. Non devi usare rsync.

Sicurezza

La prima cosa che vuoi fare è assicurarti di avere un account utente regolare da usare tramite ssh, e assicurati di poter usare su per passare a root. È una pessima idea consentire il login diretto per root su ssh.

Disabilitare il login root su SSH

Modifica il file / etc / ssh / sshd_config e cerca la seguente riga:

#PermitRootLogin yes

Cambia quella linea per assomigliare a questa:

PermitRootLogin no

Assicurati di avere un account utente regolare e puoi eseguire il comando su per eseguire il root prima di apportare questa modifica, altrimenti potresti bloccarti.

Disabilita SSH versione 1

Non c'è davvero alcun motivo per utilizzare qualcosa di diverso da SSH versione 2, in quanto è più sicuro rispetto alle versioni precedenti. Modifica il file / etc / ssh / sshd_config e cerca la seguente sezione:

#Protocol 2,1 Protocol 2

Assicurati di utilizzare solo il protocollo 2 come mostrato.

Riavvia il server SSH

Ora è necessario riavviare il server SSH per renderlo effettivo.

/etc/init.d/sshd restart

Verifica le porte aperte

È possibile utilizzare il seguente comando per vedere su quali porte il server è in ascolto:

netstat -an | grep LISTEN

In realtà non dovresti avere niente che ascolti oltre alle porte 22, 80 e possibilmente 8443 per plesk.

Imposta un firewall

Articolo principale:Uso di Iptables su Linux

Opzionalmente puoi configurare un firewall iptables per bloccare più connessioni. Ad esempio, di solito blocco l'accesso a qualsiasi altra porta diversa dalla mia rete di lavoro. Se hai un indirizzo IP dinamico, vorrai evitare questa opzione.

Se hai già seguito tutti i passaggi di questa guida fino ad ora, probabilmente non è necessario aggiungere un firewall al mix, ma è bene capire le tue opzioni.

Guarda anche

Uso di Iptables su Linux

Riferimenti

  • Ottimizzazione del tuo server DV (mediatemple.net)
  • XCache

Consigliato: