Quando ottieni un server virtuale dedicato per eseguire il tuo sito web, è probabile che sia configurato per tutti e non personalizzato per massimizzare le prestazioni per l'esecuzione di un sito web.
Contenuti[ nascondere ]
|
Panoramica
Esistono numerose aree problematiche in cui vogliamo massimizzare il rendimento:
-
Linux configuration
Di solito ci sono servizi in esecuzione che non è necessario che siano, sprecando memoria che potrebbe essere utilizzata per più connessioni. -
Configurazione MySQL
Spesso le impostazioni predefinite si basano su un piccolo server, possiamo aggiungere alcune modifiche chiave per aumentare notevolmente le prestazioni. -
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 i moduli se non li utilizzerai mai. -
Configurazione PHP
La configurazione PHP predefinita è ugualmente gonfia, di solito ci sono un sacco di moduli aggiuntivi non necessari installati. -
Cache codice operativo PHP
Invece di consentire a PHP di ricompilare gli script ogni volta, una cache del codice operativo memorizzerà nella cache gli script compilati per ottenere enormi miglioramenti delle prestazioni. -
Backup
Probabilmente dovresti configurare alcuni backup automatici, poiché il tuo provider di hosting non lo farà per te. -
Sicurezza
Certo, Linux è abbastanza sicuro per impostazione predefinita, ma di solito ci sono alcuni problemi di sicurezza evidenti che puoi risolvere con alcune impostazioni rapide.
Linux Configuration
Ci sono un certo numero di modifiche che puoi fare, che variano 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 disabilitare l'esecuzione del servizio DNS.
disabilita dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Il comando chmod rimuove l'autorizzazione di esecuzione dallo script, impedendone l'esecuzione all'avvio.
Disabilita SpamAssassin
Se non stai utilizzando account di posta elettronica sul tuo server stesso, non dovresti preoccuparti di eseguire strumenti anti-spam. (Inoltre dovresti controllare Google Apps, una soluzione di posta elettronica 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 tipico server web.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Limita l'utilizzo della memoria di Plesk
Se usi il pannello plesk, puoi forzarlo a usare 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
Notare che questa opzione è nota per funzionare sui server MediaTemple DV, ma non è stata selezionata su nessun altro. (Vedere Riferimenti )
Disabilita o disattiva Plesk (opzionale)
Se usi Plesk solo una volta all'anno, ci sono pochissime ragioni per lasciarlo in esecuzione. Nota che questo passaggio è completamente facoltativo e leggermente più avanzato.
Esegui il seguente comando per disattivare plesk:
/etc/init.d/psa stop
Puoi disabilitarne l'esecuzione all'avvio eseguendo il seguente comando:
chmod 644 /etc/init.d/psa
Nota che se lo disabiliti, non puoi avviarlo manualmente senza modificare nuovamente i permessi del file (chmod u + x).
Configurazione MySQL
Abilita cache delle query
Apri il tuo file /etc/my.cnf e aggiungi le seguenti righe nella 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 usarne troppa.
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 è in ascolto su TCP / IP eseguendo il seguente comando:
netstat -an | grep 3306
Per disabilitare, aggiungi la seguente riga al tuo file /etc/my.cnf:
saltare il networking
Configurazione di Apache
Apri il tuo file httpd.conf, che spesso si trova 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 linee e adattati a 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 apache caricherà PHP in una posizione separata nella memoria. Ciò significa che se un modulo inutilizzato aggiunge 256k di memoria a PHP, su 40 thread Apache stai sprecando 10 MB di memoria.
Rimuovi i moduli PHP non necessari
Dovrai individuare 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 tutte le righe del loadmodule con questi moduli:
- odbc
- snmp
- dop
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: aggiungi ulteriori informazioni qui.
Cache codice operativo PHP
Ci sono un certo numero di cache di codice operativo 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 di xcache:
phpize ./configure --enable-xcache rendere fare installazione
Apri il tuo file php.ini e aggiungi una nuova sezione per xcache. Dovrai 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] ; Modificare xcache.size per regolare la dimensione della cache del codice operativo xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ; Modificare 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 = Attivato xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Attivato xcache.stat = On xcache.optimizer = Disattivato
Cose da fare: è necessario espandere questo un po 'e collegarsi a xcache nei riferimenti.
Backup
C'è molto poco più importante che avere backup automatici del tuo sito web. Potresti essere in grado di ottenere backup di istantanee dal tuo provider di hosting, che sono anche molto utili, ma preferisco avere anche backup automatici.
Crea script di backup automatizzato
Di solito inizio creando una directory / backups, con una directory / backups / files sotto di essa. Puoi modificare questi percorsi se lo desideri.
mkdir -p / backups / files
Ora crea uno script backup.sh all'interno della directory dei backup:
vi /backups/backup.sh
Aggiungere quanto segue al file, modificando i percorsi e la password mysqldump secondo necessità:
#! / 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
trova / backups / files / site * -mtime +5 -exec rm {} \;
trova / backups / files / db * -mtime +5 -exec rm {} \;
Lo script creerà prima una variabile di data in modo che tutti i file abbiano lo stesso nome per un singolo backup, quindi scaricherà il database, tarerà i file web e li zipperà. I comandi di ricerca vengono utilizzati per rimuovere i file più vecchi di 5 giorni, poiché non vuoi che lo spazio sull'unità si esaurisca.
Rendi eseguibile lo script eseguendo il seguente comando:
chmod u + x /backups/backup.sh
Successivamente dovrai assegnarlo affinché venga 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 backup off-site con Rsync
Ora che hai eseguito i backup automatici del tuo server, puoi sincronizzarli da qualche altra parte utilizzando 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 con un singolo comando
Puoi testarlo eseguendo questo comando su una macchina Linux o Mac in un'altra posizione (ho un server Linux a casa, che è dove lo eseguo)
rsync -a [email protected]: / backups / files / * / offsitebackups /
La prima esecuzione richiederà un po 'di tempo, 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 programmarlo aggiungendolo a una riga crontab:
crontab -e
Aggiungi la seguente riga, che eseguirà rsync ogni ora al segno di 45 minuti. Noterai che qui utilizziamo il percorso completo per rsync.
45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /
Puoi programmarlo in modo che venga eseguito in un momento diverso o solo una volta al giorno. Dipende davvero da te.
Nota che ci sono molte utilità che ti permetteranno di sincronizzare tramite ssh o ftp. Non è necessario utilizzare rsync.
Sicurezza
La prima cosa che vuoi fare è assicurarti di avere un account utente normale da usare tramite ssh, e assicurarti di poter usare su per passare a root. È una pessima idea consentire l'accesso diretto per root su ssh.
Disabilita l'accesso root su SSH
Modifica il file / etc / ssh / sshd_config e cerca la riga seguente:
#PermitRootLogin sì
Cambia quella linea in questo modo:
PermitRootLogin no
Assicurati di avere un account utente regolare e di poter eseguire su come root prima di apportare questa modifica, altrimenti potresti bloccarti.
Disabilita SSH versione 1
Non c'è davvero alcun motivo per utilizzare qualcosa di diverso dalla versione 2 di SSH, poiché è più sicura delle versioni precedenti. Modifica il file / etc / ssh / sshd_config e cerca la sezione seguente:
#Protocollo 2,1 Protocollo 2
Assicurati di utilizzare solo il protocollo 2 come mostrato.
Riavvia il server SSH
Ora dovrai riavviare il server SSH per rendere effettivo ciò.
/etc/init.d/sshd riavvio
Verificare la presenza di porte aperte
È possibile utilizzare il seguente comando per vedere su quali porte è in ascolto il server:
netstat -an | grep ASCOLTA
Non dovresti davvero avere nulla in ascolto oltre alle porte 22, 80 e forse 8443 per plesk.
Configura un firewall
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, evita questa opzione.
Se hai già seguito tutti i passaggi di questa guida fino ad ora, probabilmente non è necessario aggiungere anche un firewall al mix, ma è bene comprendere le tue opzioni.
Guarda anche
- Utilizzo di Iptables su Linux