12Sep

Ottimizzazione di un server Web virtuale dedicato

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.

Sommario

[nascondere]

  • 1 Panoramica
  • 2 Configurazione Linux
    • 2.1 Disabilitare DNS
    • 2.2 Disabilitare SpamAssassain
    • 2.3 Disabilitare xinetd
    • 2.4 Limitare Plesk Utilizzo della memoria
    • 2.5 Disabilitare o disabilitare Plesk( opzionale)
  • 3 Configurazione MySQL
    • 3.1 Abilitare la cache delle query
    • 3.2 Disabilitare TCP / IP
  • 4 Configurazione Apache
  • 5 Configurazione PHP
    • 5.1 Rimuovere i moduli PHP non necessari
    • 5.2 PHP Opcode Cache
  • 6 Backup
    • 6.1 Creare script di backup automatico
    • 6.2 Sincronizzare i backup fuori sede con Rsync
  • 7 Sicurezza
    • 7.1 Disabilitare rootLogin su SSH
    • 7.2 Disabilita SSH versione 1
    • 7.3 Riavvio SSH Server
    • 7.4 Verifica porte aperte
    • 7.5 Impostazione di un firewall
  • 8 Vedere anche
  • 9 Riferimenti

Panoramica

Esiste un certo numero di aree problematiche in cuit per 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 di MySQL
    Spesso le impostazioni predefinite sono basate su un server di piccole dimensioni, possiamo aggiungere alcune modifiche chiave per aumentare le prestazioni in modo significativo.
  • Configurazione di Apache
    Per impostazione predefinita 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 PHP di default è altrettanto gonfia, di solito ci sono una tonnellata di moduli aggiuntivi non necessari installati.
  • PHP Opcode Cache
    Invece di permettere 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.
  • Backup
    Probabilmente dovrebbe configurare alcuni backup automatici, poiché il tuo provider di hosting non lo farà per te.
  • Security
    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

Esiste un buon numero di modifiche che possono variare leggermente in base al server che si sta 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.

disattiva dns /etc/init.d/ denominato stop chmod 644 /etc/init.d/ denominato

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 ospita 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

Limite di memoria Plesk Utilizzo

Se si utilizza il pannello di plesk, è possibile forzare l'uso di meno memoria aggiungendo un file di opzioni.

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

Aggiungere 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 Bibliografia)

Disattiva o Disattiva Plesk( opzionale)

Se usi Plesk solo una volta all'anno, ci sono davvero poche ragioni per lasciarlo funzionare. Si noti che questo passaggio è completamente facoltativo e leggermente più avanzato.

Eseguire il seguente comando per disattivare plesk:

/etc/init.d/ psa stop

È possibile disabilitarlo dall'esecuzione all'avvio eseguendo il seguente comando:

chmod 644 /etc/init.d/ psa

Si noti che se si disabilita, non è possibile avviarlo manualmente senzacambiare i permessi del file( chmod u + x).

Configurazione MySQL

Abilita Query Cache

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

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

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

Disabilita TCP / IP

Un numero sorprendente di host abilita l'accesso a MySQL su TCP / IP per impostazione predefinita, il che non ha senso per un sito Web.È possibile capire se mysql è in ascolto su TCP / IP eseguendo il seguente comando:

netstat -an |grep 3306

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

skip-networking

Configurazione Apache

Aprire il file httpd.conf, spesso trovato in /etc/httpd/conf/ httpd.conf

Trovare la riga simile a questa:

Timeout 120

E modificalo 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 faretieni presente che quando si modifica un server sulla piattaforma PHP, ogni singolo thread di Apache carica 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

Avrete bisogno di localizzare il file php.ini, che di solito si trova su php.ini /etc/( si noti che su alcune distribuzioni, ci sarà una directory /etc/php.d/ con un numero di file. ini, una perogni modulo

Commenta qualsiasi linea 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

Làsono un numero di cache opcode che è possibile utilizzare, 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 dall'origine xcachedirectory:

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

Apri il tuo file php.ini eaggiungi 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

Aggiungere 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];Modifica xcache.size per ottimizzare la dimensione della cache dell'opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Cambia xcache.var_size per regolare la dimensione della cache delle variabili 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 =Su xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Su xcache.stat = Su xcache.optimizer = Off

Todo: È necessario espanderlo un po 'e collegarlo a xcache nei riferimenti. 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 di file /backups/ al di sotto di essa. Puoi regolare questi percorsi se vuoi.

mkdir -p File /backups/

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

vi /backups/ backup.sh

Aggiungere quanto segue 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 & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ sitebackup $ THEDATE.tar /var/www/vhosts/ mio-sito-web-path / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar trova il sito /backups/files/ * -mtime +5 -exec rm{ } \;trova /backups/files/ db * -mtime +5 -exec rm{ } \;

Lo script creerà dapprima una variabile di data in modo che tutti i file vengano nominati uguali per un singolo backup, quindi eseguirà il dump del database, rastrellano i file Web e li scaricano. 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

Aggiungere 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

di Rsync Ora che hai eseguito il backup automatico del tuo server, puoi sincronizzarli 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 testare questo comando eseguendo questo comando su un computer Linux o Mac in un'altra posizione( Iavere un server linux a casa, che è dove eseguo questo)

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

Ci vorrà un po 'di tempo per eseguire la prima volta, ma alla fine il tuo computer locale dovrebbe avere una copiadella directory dei file nella directory /offsitebackups/.(Assicurati di creare quella directory prima di eseguire lo script)

Puoi pianificare questo aggiungendolo ad una linea crontab:

crontab -e

Aggiungi la seguente riga, che eseguirà rsync ogni ora al punto dei 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 si vuole fare è assicurarsi di avere un account utente regolare da usare tramite ssh, e assicurarsi 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

Modificare il file sshd_config /etc/ssh/ e cercare la seguente riga:

#PermitRootLogin yes

Modificare la riga in modo simile al seguente:

PermitRootLogin no

Assicurarsi di disporre di un account utente regolare e possibile suroot 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. Modificare il file sshd_config /etc/ssh/ e cercare la seguente sezione:

#Protocol 2,1 Protocollo 2

Assicurarsi che si stia utilizzando 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 porte aperte

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

netstat -an |grep LISTEN

In realtà non dovresti avere niente ad ascoltare tranne le porte 22, 80 e possibilmente 8443 per plesk.

Impostazione di un firewall

Articolo principale: Utilizzo di Iptables su Linux

È possibile impostare facoltativamente 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.

Vedi anche

  • usando Iptables su Linux

Riferimenti

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