Pagina principala » HOWTO » Optimizați un server web dedicat virtual

    Optimizați un server web dedicat virtual

    Când obțineți un server virtual dedicat pentru a rula site-ul dvs., este posibil ca acesta să fie configurat pentru toată lumea și să nu fie personalizat pentru a maximiza performanța pentru rularea unui site web.

    Cuprins

    [ascunde]

    • 1. Prezentare generală
    • 2 Configurația Linux
      • 2.1 Dezactivați DNS
      • 2.2 Dezactivați SpamAssassain
      • 2.3 Dezactivați xinetd
      • 2.4 Utilizarea limitei de memorie Plesk
      • 2.5 Dezactivare sau oprire Plesk (opțional)
    • 3 Configurarea MySQL
      • 3.1 Activați memoria cache de interogare
      • 3.2 Dezactivați TCP / IP
    • 4 Apache Configuration
    • 5 Configurație PHP
      • 5.1 Eliminați modulele PHP inutile
      • 5.2 Cache Opcode PHP
    • 6 Backupurile
      • 6.1 Crearea unui script automat de backup
      • 6.2 Sincronizarea copiilor de rezervă din afara site-ului cu Rsync
    • 7 Securitate
      • 7.1 Dezactivați conectarea la root prin SSH
      • 7.2 Dezactivați versiunea SSH 1
      • 7.3 Reporniți serverul SSH
      • 7.4 Verificați deschiderea porturilor
      • 7.5 Configurarea unui paravan de protecție
    • 8 Consultați de asemenea
    • 9 Referințe

    Prezentare generală

    Există o serie de domenii problematice în care vrem să maximizăm performanța:

    • Configurare Linux
      Există de obicei servicii de rulare care nu trebuie să fie, pierdeți memoria care ar putea fi folosită pentru mai multe conexiuni.
    • Configurația MySQL
      De multe ori, setările implicite se bazează pe un server mic, putem adăuga câteva modificări cheie pentru a crește performanța mult.
    • Apache configurație
      În mod implicit, majoritatea furnizorilor de hosting instalează Apache cu aproape fiecare modul instalat. Nu există niciun motiv pentru a încărca module dacă nu le vei folosi vreodată.
    • Configurare PHP
      Configurația implicită PHP este în mod similar umflată, de obicei există o tona de module suplimentare inutile instalate.
    • PHP Opcode Cache
      În loc să permită PHP să recompileze scripturile de fiecare dată, un cache de opcode va memora cache-urile scripturilor compilate din memorie pentru o creștere imensă a performanțelor.
    • Copiile de rezervă
      Ar trebui să configurați, probabil, unele backup-uri automate, deoarece furnizorul dvs. de gazduire nu o va face pentru dvs..
    • Securitate
      Sigur, Linux este suficient de sigur în mod implicit, dar de obicei există câteva probleme serioase despre securitate pe care le puteți remedia cu câteva setări rapide.

    Configurarea Linux

    Există destul de multe modificări pe care le puteți face, care vor varia ușor în funcție de serverul pe care îl utilizați. Aceste modificări sunt pentru un server care rulează CentOS, dar ar trebui să funcționeze pentru majoritatea serverelor DV.

    Dezactivați DNS

    Dacă furnizorul dvs. de găzduire gestionează DNS-ul pentru domeniul dvs. (probabil), atunci puteți dezactiva funcționarea serviciului DNS.

    dezactivați dns /etc/init.d/name stop chmod 644 /etc/init.d/named

    Comanda chmod elimină permisiunea de executare din script, stopându-l să ruleze la pornire.

    Dezactivați SpamAssassain

    Dacă nu utilizați conturi de e-mail pe serverul dvs. în sine, nu ar trebui să vă deranjez să utilizați instrumentele anti-spam. (De asemenea, ar trebui să verificați Google Apps, soluție de e-mail mult mai bună)

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

    Dezactivați xinetd

    Procesul xinetd găzduiește o serie de alte procese, dintre care nici unul nu este util pentru un server web tipic.

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

    Limit Plesk Utilizare memorie

    Dacă utilizați panoul de plesk, îl puteți forța să utilizeze mai puțină memorie prin adăugarea unui fișier de opțiuni.

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

    Adăugați următoarele linii în fișier:

    MinSpareServers 1 MaxSpareServere 1 StartServers 1 MaxClients 5

    Rețineți că această opțiune este cunoscută pentru a lucra pe servere MediaTemple DV, dar nu a fost verificată pe alte servere. (Vezi referințele)

    Dezactivați sau dezactivați funcția Plesk (opțional)

    Dacă folosiți numai Plesk o dată pe an, există foarte puține motive să-l lăsați să ruleze deloc. Rețineți că acest pas este complet opțional și ușor mai avansat.

    Rulați următoarea comandă pentru a dezactiva plesk:

    /etc/init.d/psa stop

    Puteți dezactiva executarea la pornire executând următoarea comandă:

    chmod 644 /etc/init.d/psa

    Rețineți că dacă îl dezactivați, nu îl puteți porni manual fără a schimba permisiunile fișierului înapoi (chmod u + x).

    Configurarea MySQL

    Activați memoria cache de interogare

    Deschideți fișierul /etc/my.cnf și adăugați următoarele linii în secțiunea [mysqld] astfel:

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

    Puteți adăuga mai multă memorie în cache-ul de interogare dacă doriți, dar nu utilizați prea mult.

    Dezactivați TCP / IP

    Un număr surprinzător de gazde permite implicit accesul la MySQL pe TCP / IP, ceea ce nu are sens pentru un site Web. Puteți afla dacă mysql ascultă pe TCP / IP executând următoarea comandă:

    netstat -an | grep 3306

    Pentru a dezactiva, adăugați următoarea linie în fișierul /etc/my.cnf:

    skip-rețea

    Apache Configuration

    Deschideți fișierul httpd.conf, care se găsește adesea în /etc/httpd/conf/httpd.conf

    Găsiți linia care arată astfel:

    Timeout 120

    Și schimbați-l la aceasta:

    Timeout 20

    Acum găsiți secțiunea care include aceste linii și ajustați ceva similar:

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

    Configurarea PHP

    Unul dintre lucrurile pe care trebuie să le ții cont atunci când tweaking un server pe platforma PHP este că fiecare thread apache va încărca PHP într-o locație separată în memorie. Acest lucru înseamnă că, dacă un modul neutilizat adaugă 256k de memorie la PHP, peste 40 de fire apache pierzi 10MB de memorie.

    Eliminați modulele PHP inutile

    Va trebui să localizați fișierul php.ini, care de obicei se află la /etc/php.ini (Rețineți că pe unele distribuții va fi un director /etc/php.d/ cu un număr de fișiere .ini, unul pentru fiecare modul.

    Comentează orice linii loadmodule cu aceste module:

    • odbc
    • snmp
    • PDO
    • odbc pdo
    • mysqli
    • ioncube-loader
    • JSON
    • imap
    • ldap
    • ncurses

    Todo: Adăugați mai multe informații aici.

    PHP Opcode Cache

    Există o serie de cache-uri opcode pe care le puteți utiliza, inclusiv APC, eAccelerator și Xcache, ultima fiind preferința mea personală din cauza stabilității.

    Descărcați xcache și extrageți-l într-un director, apoi executați următoarele comenzi din directorul sursă xcache:

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

    Deschideți fișierul php.ini și adăugați o secțiune nouă pentru xcache. Va trebui să ajustați căile dacă modulele dvs. php sunt încărcate din altă parte.

    vi /etc/php.ini

    Adăugați următoarea secțiune la fișier:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "numele meu" xcache.admin.pass = "putanmd5hashhere" [xcache]; Schimbați xcache.size pentru a ajusta dimensiunea cache-ului opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Modificați xcache.var_size pentru a ajusta dimensiunea cache-ului variabil 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 = Dezactivat xcache.readonly_protection = Pe xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Pe xcache.stat = Pe xcache.optimizer = Off

    Todo: Trebuie să extindeți acest lucru și să vă conectați la xcache în referințe.

    Copiile de rezervă

    Există foarte puțin mai important decât să aveți copii automate ale site-ului dvs. web. Este posibil să puteți obține copii de rezervă instantanee de la furnizorul dvs. de găzduire, care sunt, de asemenea, foarte utile, dar prefer să aibă și backupuri automate.

    Creați Script de copiere automată

    În mod obișnuit, încep prin crearea unui director / backup, cu directorul / backups / files sub el. Puteți modifica aceste căi dacă doriți.

    mkdir -p / copii de siguranță / fișiere

    Acum creați un script backup.sh în directorul de backup-uri:

    vi /backups/backup.sh

    Adăugați următoarele în fișier, ajustând căile și parola mysqldump după cum este necesar:

    #! / bin / sh THEDATE = "data +% d% m% y% H% M" mysqldump -uadmin -PASSWORD 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 găsi / backups / files / site * -mtime +5 -exec rm  \; găsi / backup-uri / fișiere / db * -mtime +5 -exec rm  \;

    Scriptul va crea mai întâi o variabilă de dată, astfel încât toate fișierele vor fi numite aceleași pentru o singură copie de rezervă, apoi vor șterge baza de date, vor crea fișiere web și vor gzip-uri. Comenzile de căutare sunt utilizate pentru a elimina orice fișiere mai vechi de 5 zile, deoarece nu doriți ca unitatea dvs. să nu se limiteze la spațiu.

    Faceți scriptul executabil executând următoarea comandă:

    chmod u + x /backups/backup.sh

    În continuare, va trebui să îl asignați pentru a rula automat de către cron. Asigurați-vă că utilizați un cont care are acces la directorul de copii de rezervă.

    crontab -e

    Adăugați următoarea linie în crontab:

    1 1 * * * /backups/backup.sh

    Puteți testa script-ul înainte de timp, executându-l în timp ce vă conectați la contul de utilizator. (De obicei execut backup-urile ca root)

    Sincronizați copiile de rezervă în afara site-ului cu Rsync

    Acum, când aveți backup automatizat al serverului dvs., puteți să îl sincronizați în altă parte utilizând utilitarul rsync. Veți dori să citiți acest articol despre cum să configurați tastele ssh pentru conectare automată: Adăugați cheia publică SSH la serverul de la distanță într-o comandă unică

    Puteți testa acest lucru prin executarea acestei comenzi pe o mașină linux sau Mac într-o altă locație (am un server linux la domiciliu, în cazul în care am rula acest lucru)

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

    Acest lucru va dura destul de mult timp pentru a rula prima dată, dar la sfârșitul calculatorului local ar trebui să aibă o copie a directorului de fișiere în directorul / offsitebackups /. (Asigurați-vă că ați creat acel director înainte de a rula scriptul)

    Puteți programa acest lucru adăugând-o la o linie crontab:

    crontab -e

    Adăugați următoarea linie, care va rula rsync la fiecare oră la marcajul de 45 de minute. Veți observa că folosim calea completă pentru rsync aici.

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

    Puteți să-l programați să ruleze la un moment diferit sau o singură dată pe zi. Asta depinde de tine.

    Rețineți că există o mulțime de utilitare care vă vor permite sincronizarea prin ssh sau ftp. Nu trebuie să utilizați rsync.

    Securitate

    Primul lucru pe care doriți să îl faceți este să vă asigurați că aveți un cont de utilizator obișnuit de utilizat prin ssh și asigurați-vă că puteți utiliza su pentru a comuta la root. Este o idee foarte rău să permiteți autentificarea directă pentru root peste ssh.

    Dezactivați conectarea la root prin SSH

    Editați fișierul / etc / ssh / sshd_config și căutați următoarea linie:

    #PermitRootLogin da

    Modificați acea linie pentru a arăta astfel:

    PermitRootLogin nr

    Asigurați-vă că aveți un cont de utilizator obișnuit și că puteți rădăcina înainte de a efectua această modificare, altfel s-ar putea să vă închideți.

    Dezactivați versiunea SSH 1

    Nu există nici un motiv să utilizați altceva decât SSH versiunea 2, deoarece este mai sigur decât versiunile anterioare. Editați fișierul / etc / ssh / sshd_config și căutați următoarea secțiune:

    #Protocolul 2,1 Protocolul 2

    Asigurați-vă că utilizați numai Protocolul 2 așa cum se arată.

    Reporniți serverul SSH

    Acum va trebui să reporniți serverul SSH pentru ca acest lucru să aibă efect.

    /etc/init.d/sshd reporniți

    Verificați deschiderea porturilor

    Puteți utiliza următoarea comandă pentru a vedea porturile pe care le asculte serverul:

    netstat -an | grep LISTEN

    Chiar nu ar trebui să aveți altceva decât să ascultați altceva decât porturile 22, 80 și, eventual, 8443 pentru plesk.

    Configurați un paravan de protecție

    Articolul principal: Utilizarea Iptables pe Linux

    Puteți configura opțional un paravan de protecție iptables pentru a bloca mai multe conexiuni. De exemplu, de obicei, blochez accesul la alte porturi decât la rețeaua mea de lucru. Dacă aveți o adresă IP dinamică, veți dori să evitați această opțiune.

    Dacă ați urmat deja toți pașii din acest ghid până acum, probabil că nu este necesar să adăugați un firewall la mix, dar este bine să înțelegeți opțiunile.

    Vezi si

    • Utilizarea Iptables pe Linux

    Referințe

    • Optimizarea serverului DV (mediatemple.net)
    • XCache