Homepage » come » Tweaking un server Web virtuale dedicato

    Tweaking 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.

    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 una tonnellata 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 incrementi 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.

    disabilitare 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 cache di query

    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. È possibile 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:

    salta 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 modo:

    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 dovuta alla 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 sono 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]; 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; Modifica 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: 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 avere anche 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 = "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 / percorso-mio-sito web / 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 denominati uguali per un singolo backup, quindi scaricherà il database, eseguirà il drill up dei 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. (Solitamente 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 usiamo il percorso completo per rsync qui.

    45 * * * * / usr / bin / rsync -a [email protected]: / backup / file / * / 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 sì

    Cambia quella linea per assomigliare a questa:

    PermitRootLogin no

    Assicurati di avere un account utente regolare e puoi su a 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:

    # 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 renderlo effettivo.

    /etc/init.d/sshd restart

    Controlla le porte aperte

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

    netstat -an | grep ASCOLTA

    Davvero 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 server DV (mediatemple.net)
    • XCache