Când primiți un server virtual dedicat pentru a vă rula site-ul web, sunt mari șanse ca acesta să fie configurat pentru toată lumea și să nu fie personalizat pentru a maximiza performanțele pentru rularea unui site web.
Cuprins[ ascunde ]
|
Prezentare generală
Există o serie de domenii cu probleme în care dorim să maximizăm performanța:
-
Configurare Linux
Există, de obicei, servicii care nu trebuie să fie, risipind memorie care ar putea fi folosită pentru mai multe conexiuni. -
Configurare 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 foarte mult performanța. -
Configurație Apache
În mod implicit, majoritatea furnizorilor de găzduire instalează apache cu aproape fiecare modul instalat. Nu există niciun motiv pentru a încărca module dacă nu le veți folosi vreodată. -
Configurare PHP
Configurația PHP implicită este umflată în mod similar, există de obicei o mulțime de module suplimentare inutile instalate. -
Cache Opcode PHP
În loc să permită PHP-ului să recompileze scripturile de fiecare dată, o memorie cache opcode va memora scripturile compilate în memorie pentru creșteri imense de performanță. -
Copii de rezervă
Probabil ar trebui să configurați unele copii de rezervă automate, deoarece furnizorul dvs. de găzduire nu o va face pentru dvs. -
Securitate
Sigur, Linux este suficient de sigur în mod implicit, dar există de obicei unele probleme de securitate evidente pe care le puteți remedia cu câteva setări rapide.
Configurare Linux
Puteți face destul de multe modificări, 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 serviciul DNS din rularea acestuia.
dezactivați dns /etc/init.d/numit stop chmod 644 /etc/init.d/named
Comanda chmod elimină permisiunea de executare din script, oprindu-l să ruleze la pornire.
Dezactivați SpamAssassin
Dacă nu utilizați conturi de e-mail pe serverul dvs. însuși, nu ar trebui să vă deranjați să folosiți instrumente anti-spam. (De asemenea, ar trebui să verificați Google Apps, o 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 niciunul nu este util pentru un server web tipic.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Limitați utilizarea memoriei Plesk
Dacă utilizați panoul plesk, îl puteți forța să utilizeze mai puțină memorie adăugând un 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 MaxSpareServers 1 StartServers 1 MaxClients 5
Rețineți că se știe că această opțiune funcționează pe serverele MediaTemple DV, dar nu a fost bifată pe niciun alt server. (Vedea Referințe )
Dezactivați sau dezactivați Plesk (opțional)
Dacă utilizați Plesk doar o dată pe an, există foarte puține motive să îl lăsați să funcționeze. Rețineți că acest pas este complet opțional și puțin mai avansat.
Rulați următoarea comandă pentru a dezactiva plesk:
/etc/init.d/psa stop
Puteți să-l dezactivați de la rulare 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 modifica înapoi permisiunile fișierului (chmod u + x).
Configurare MySQL
Activați memoria cache a interogărilor
Deschideți fișierul /etc/my.cnf și adăugați următoarele linii în secțiunea [mysqld] astfel:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Puteți adăuga mai multă memorie în memoria cache a interogării, dacă doriți, dar nu utilizați prea mult.
Dezactivați TCP / IP
Un număr surprinzător de gazde permite accesul la MySQL pe TCP / IP în mod implicit, ceea ce nu are sens pentru un site web. Vă puteți da seama 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:
sări peste rețea
Configurare Apache
Deschideți fișierul httpd.conf, adesea găsit în /etc/httpd/conf/httpd.conf
Găsiți linia care arată astfel:
Expirare 120
Și schimbați-l astfel:
Expirare 20
Acum găsiți secțiunea care include aceste linii și ajustați-vă la ceva similar:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Configurare PHP
Unul dintre lucrurile pe care trebuie să le aveți în vedere atunci când modificați un server pe platforma PHP este că fiecare fir de apache va încărca PHP într-o locație separată în memorie. Aceasta înseamnă că dacă un modul neutilizat adaugă 256k de memorie la PHP, pe 40 de fire de apache pierdeți 10 MB de memorie.
Eliminați modulele PHP inutile
Va trebui să localizați fișierul dvs. php.ini, care se găsește de obicei la /etc/php.ini (Rețineți că pe unele distribuții, va exista un director /etc/php.d/ cu un număr de fișiere .ini, câte unul pentru fiecare modul.
Comentează orice linie de module de încărcare cu aceste module:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncursuri
Tot: Adăugați mai multe informații aici.
Cache Opcode PHP
Există o serie de cache-uri opcode pe care le puteți utiliza, inclusiv APC, eAccelerator și Xcache, ultima fiind preferința mea personală datorită 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 face instalare
Deschideți fișierul php.ini și adăugați o nouă secțiune 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 în fișier:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "numele meu de utilizator" xcache.admin.pass = "putanmd5hashhere" [xcache] ; Schimbați xcache.size pentru a regla dimensiunea cache-ului opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ; Schimbați xcache.var_size pentru a ajusta dimensiunea memoriei cache variabile 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 = Activat xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Activat xcache.stat = Activat xcache.optimizer = Dezactivat
Tot: Trebuie să extindeți puțin acest lucru și să faceți legătura cu xcache în referințe.
Copii de rezervă
Este foarte puțin mai important decât să aveți copii de rezervă 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ă am și copii de rezervă automate.
Creați un script de backup automat
De obicei încep prin crearea unui director / backups, cu un director / backups / files sub el. Puteți regla aceste căi dacă doriți.
mkdir -p / backup-uri / fișiere
Acum creați un script backup.sh în directorul copiilor de rezervă:
vi /backups/backup.sh
Adăugați următoarele la fișier, ajustând căile și parola mysqldump după cum este necesar:
#! / 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
find / backups / files / site * -mtime +5 -exec rm {} \;
find / backups / files / db * -mtime +5 -exec rm {} \;
Scriptul va crea mai întâi o variabilă de dată, astfel încât toate fișierele vor fi denumite la fel pentru o singură copie de rezervă, apoi aruncă baza de date, aruncă fișierele web și le gzipează. Comenzile de căutare sunt utilizate pentru a elimina orice fișier mai vechi de 5 zile, deoarece nu doriți ca unitatea dvs. să rămână fără spațiu.
Faceți scriptul executabil executând următoarea comandă:
chmod u + x /backups/backup.sh
Apoi va trebui să-l atribuiți pentru a fi rulat automat de cron. Asigurați-vă că utilizați un cont care are acces la directorul copiilor de rezervă.
crontab -e
Adăugați următoarea linie în crontab:
1 1 * * * /backups/backup.sh
Puteți testa scriptul din timp executându-l în timp ce sunteți conectat la contul de utilizator. (De obicei rulez copiile de rezervă ca root)
Sincronizarea copiilor de rezervă în afara site-ului cu Rsync
Acum că aveți copii de rezervă automate ale serverului dvs. care rulează, le puteți sincroniza în altă parte utilizând utilitarul rsync. Veți dori să citiți acest articol despre cum să configurați cheile ssh pentru autentificare automată: Adăugați o cheie SSH publică la serverul la distanță într-o singură comandă
Puteți testa acest lucru executând această comandă pe o mașină Linux sau Mac într-o altă locație (am un server Linux acasă, unde execut acest lucru)
rsync -a [email protected]: / backups / files / * / offsite backups /
Acest lucru va dura destul de mult pentru a rula prima dată, dar la final computerul dvs. local ar trebui să aibă o copie a directorului de fișiere din directorul / offsitebackups /. (Asigurați-vă că creați acel director înainte de a rula scriptul)
Puteți programa acest lucru adăugându-l 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ă către rsync aici.
45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /
Puteți să-l programați să ruleze la o oră diferită sau doar o dată pe zi. Asta depinde de tine.
Rețineți că există o mulțime de utilități care vă vor permite să sincronizați 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 proastă să permiți conectarea directă pentru root peste ssh.
Dezactivați conectarea rădăcină peste SSH
Editați fișierul / etc / ssh / sshd_config și căutați următoarea linie:
#PermitRootLogin da
Schimbați această linie pentru a arăta astfel:
PermitRootLogin nr
Asigurați-vă că aveți un cont de utilizator obișnuit și că puteți face root înainte de a efectua această modificare, altfel s-ar putea să vă blocați.
Dezactivați versiunea SSH 1
Nu există niciun motiv pentru a folosi 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:
#Protocol 2,1 Protocolul 2
Asigurați-vă că utilizați Protocolul 2 doar 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 dacă există porturi deschise
Puteți utiliza următoarea comandă pentru a vedea pe ce porturi ascultă serverul:
netstat -an | grep ASCULTĂ
Într-adevăr, nu ar trebui să ascultați nimic în afară de porturile 22, 80 și, eventual, 8443 pentru plesk.
Configurați un firewall
Opțional, puteți configura un firewall iptables pentru a bloca mai multe conexiuni. De exemplu, de obicei blochez accesul la orice alte porturi, altele decât din 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 și un firewall la mix, dar este bine să vă înțelegeți opțiunile.
Vezi si
- Utilizarea Iptables pe Linux