12Sep
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]
|
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/ denominatoIl 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-spamassassinDisabilita 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/ xinetdLimite 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.includeAggiungere le seguenti righe al file:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Si 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/ psaSi 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 = 8MPuoiaggiungi 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 3306Per disabilitare, aggiungere la seguente riga al file my.cnf /etc/:
skip-networkingConfigurazione Apache
Aprire il file httpd.conf, spesso trovato in /etc/httpd/conf/ httpd.conf
Trovare la riga simile a questa:
Timeout 120E modificalo in questo:
Timeout 20Ora trova la sezione che include queste righe e regola qualcosa di simile:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000Configurazione 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 installApri 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.iniAggiungere 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 = OffTodo: È 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.shAggiungere 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.shSuccessivamente dovrai assegnarlo per essere eseguito automaticamente da cron. Assicurati di utilizzare un account che abbia accesso alla directory dei backup.
crontab -eAggiungere 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 -eAggiungi 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 yesModificare la riga in modo simile al seguente:
PermitRootLogin noAssicurarsi 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 2Assicurarsi 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 restartVerifica porte aperte
È possibile utilizzare il comando seguente per vedere su quali porte il server è in ascolto:
netstat -an |grep LISTENIn 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