12Sep

Ugađanje namjenskih virtualnih web poslužitelja

Kada dobijete posvećeni virtualni poslužitelj za pokretanje svoje web stranice, šanse su dobre da je konfiguriran za sve, a ne prilagođene za maksimiziranje performansi za pokretanje web stranice.

  • Sadržaj

    [skrivanje]

    • 1 Pregled
    • 2 Linux konfiguracija
      • 2.1 Onemogući DNS
      • 2.2 Onemogućiti SpamAssassain
      • 2.3 Onemogućiti xinetd
      • 2.4 Ograničiti Plesk korištenje memorije
      • 2.5 Onemogućiti ili isključiti Plesk( opcionalno)
    • 3 MySQL konfiguracija
      • 3.1 Omogućiti Cache upit
    • 3.2 Onemogućiti TCP / IP
  • 4 Konfiguracija Apache
  • 5 PHP konfiguracija
    • 5.1 Uklanjanje nepotrebnih PHP modula
    • 5.2 PHP Cache opcode
  • 6 Sigurnosne kopije
    • 6.1 Stvaranje skripte za automatsku izradu sigurnosnih kopija
    • 6.2 Sigurnosno kopiranje sigurnosnih kopija s Rsync
  • 7 Sigurnost
    • 7.1 Onemogućavanje korijenaPrijava preko SSH
    • 7.2 Onemogućivanje SSH verzije 1
    • 7.3 Ponovno pokretanje SSH poslužitelja
    • 7.4 Provjera otvorenih ulaza
    • 7.5 Postavljanje vatrozida
  • 8 Vidi također
  • 9 References

Pregled

Postoji nekoliko problematičnih područja u kojima padamot za maksimiziranje performansi:

  • Linux konfiguracija
    Obično se izvode usluge koje ne trebaju biti, gubitak memorije koja bi se mogla koristiti za više veza.
  • MySQL konfiguracija
    Često se zadane postavke temelje na malom poslužitelju, možemo dodati nekoliko ključnih izmjena koje će mnogo povećati učinkovitost.
  • Apache konfiguracija
    Po defaultu većina pružatelja hostinga instalira apache sa gotovo svakim instaliranim modulom. Nema razloga za učitavanje modula ako ih nikada nećete koristiti.
  • PHP konfiguracija
    Zadana PHP konfiguracija slično je preopterećena, obično je instalirano više tona nepotrebnih dodatnih modula.
  • PHP opcode cache
    Umjesto da PHP dozvoli recompile skripti svaki put, opcode cache će cache skripte skripte u memoriji za ogromne performanse potaknuti.
  • Sigurnosne kopije
    Treba vjerojatno postaviti neke automatizirane sigurnosne kopije, budući da vaš davatelj usluge hostinga neće to učiniti za vas.
    Sigurnost
    Naravno, Linux je dovoljno siguran prema zadanim postavkama, ali obično postoje neke ozbiljne sigurnosne poteškoće koje možete popraviti s nekoliko brzih postavki.

Linux konfiguracija

Postoji dosta podešavanja koje možete učiniti, što će neznatno varirati ovisno o poslužitelju koji koristite. Ovi ugađaji služe za poslužitelj koji koristi CentOS, ali bi trebali raditi za većinu DV poslužitelja.

Onemogući DNS

Ako vaš davatelj usluge hostinga upravlja DNS-om za svoju domenu( vjerojatno), tada možete onemogućiti pokretanje DNS servisa.

onemogućuje dns /etc/init.d/ nazvanu stop chmod 644 /etc/init.d/ pod nazivom

Chmod naredba uklanja dozvolu za izvršavanje iz skripte, čime se zaustavlja pokretanje pri pokretanju.

Onemogući SpamAssassain

Ako ne upotrebljavate račune e-pošte na samom poslužitelju, ne biste smetali pokretanju alata za sprječavanje neželjene pošte.(Također biste trebali provjeriti Google Apps, puno bolje e-mail rješenje)

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

Onemogućiti xinetd

xinetd proces sadrži niz drugih procesa, od kojih niti jedan nije koristan za tipičan web poslužitelj.

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

Ograničenje uporabe Plesk memorije

Ako koristite plesk ploču, možete ga prisiliti na manje memorije dodavanjem datoteke opcija.

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

Dodajte sljedeće retke u datoteku:

MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

Imajte na umu da se ova opcija zna da radi na MediaTemple DV poslužiteljima, ali nije provjerena ni na jednoj drugoj.(Vidi Reference)

Onemogući ili isključiti Plesk( opcionalno)

Ako koristite samo Plesk jednom godišnje, postoji vrlo malo razloga da ga ostavite da radi na sve. Napominjemo da je ovaj korak potpuno opcionalan i malo napredniji.

Pokrenite sljedeću naredbu da isključite plesk:

/etc/init.d/ psa stop

Možete onemogućiti njegovo pokretanje pri pokretanju tako da pokrenete sljedeću naredbu:

chmod 644 /etc/init.d/ psa

Imajte na umu da ako ga onemogućite, ne možete ga pokrenuti ručno bezmijenjajuće dozvole datoteka natrag( chmod u + x).

MySQL konfiguracija

Omogući Cache upitnika

Otvorite /etc/ my.cnf datoteku i dodajte sljedeće retke u [mysqld] odjeljak kao što je ovaj:

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

Možetedodajte više memorije u predmemoriju upita ako želite, ali nemojte previše koristiti.

Onemogući TCP / IP

Iznenađujuće broj domaćinstva omogućuju pristup MySQL-u na TCP / IP po defaultu, što nema smisla za web stranicu. Možete shvatiti hoće li mysql slušati TCP / IP pokretanjem sljedeće naredbe:

netstat -an |grep 3306

Da biste onemogućili, dodajte sljedeću liniju na /etc/ my.cnf datoteku:

preskočenje umrežavanje

Apache konfiguracija

Otvorite svoju httpd.conf datoteku koja se često nalazi u /etc/httpd/conf/ httpd.conf

Pronađite redak koji izgleda ovako:

Timeout 120

I promijenite to na sljedeći način:

Timeout 20

Sada pronađite odjeljak koji uključuje te retke i prilagodite se na nešto slično:

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

PHP konfiguracija

Jedna od stvariimajte na umu prilikom ugađanja poslužitelja na PHP platformi je da svaki pojedini Apache nit će učitati PHP na zasebnom mjestu u memoriji. To znači da ako neiskorišteni modul doda 256 k memorije u PHP, preko 40 apache niti troši 10 MB memorije.

Uklanjanje nepotrebnih PHP modula

Morat ćete pronaći datoteku php.ini koja se obično nalazi na /etc/ php.ini( Imajte na umu da će se na nekim distribucijama nalaziti /etc/php.d/ direktorij s brojem. ini datoteka,svaki modul

Ispričajte sve linije loadmodule s ovim modulima:

  • odbc
  • snmp
  • pdo
  • odbc pdo
  • mysqli
  • ioncube loader
  • json
  • imap
  • ldap
  • ncurses

Todo: Dodajte više informacija ovdje

PHP opcode cache

su brojne opcode sprema koje možete koristiti, uključujući APC, eAccelerator i Xcache, posljednji je moj osobni sklonost zbog stabilnosti.

Preuzmite xcache i izvadite ga u direktorij, a zatim pokrenite sljedeće naredbe iz izvora xcachedirektorij:

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

Otvorite datoteku php.ini idodajte novi odjeljak za xcache. Morat ćete prilagoditi putove ako su vaši php moduli učitani negdje drugdje.

vi /etc/ php.ini

Dodajte sljedeći odjeljak u datoteku:

[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "moje korisničko ime" xcache.admin.pass = "putanmd5hashhere"[xcache];Promijeni xcache.size za podešavanje veličine cache opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Promijeni xcache.var_size za podešavanje veličine promjenjive predmemorije 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 = Isključeno xcache.readonly_protection =Na xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Na xcache.stat = Na xcache.optimizer = Isključeno

Todo: Trebate malo proširiti i povezati xcache u referencama.

Sigurnosne kopije

Postoji vrlo malo važnije od automatiziranih sigurnosnih kopija vaše web stranice. Vi svibanj biti u mogućnosti da biste dobili snimku snapshot od vašeg hosting providera, koji su također vrlo korisne, ali volim imati automatizirane sigurnosne kopije kao dobro.

Stvaranje automatizirane skripte za izradu sigurnosnih kopija

Najčešće počinjem stvaranjem mape / backups, s imenom /backups/ datotekama ispod nje. Možete ih prilagoditi ako želite.

mkdir -p /backups/ datoteke

Sada stvorite backup.sh skriptu u direktoriju sigurnosnih kopija:

vi /backups/ backup.sh

Dodajte sljedeću datoteku, prilagodite putove i lozinku mysqldump po potrebi:

#!/bin/ sh THEDATE = `datum +% 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/ moj web-put / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar pronađi /backups/files/ web mjesto * -mtime +5 -exec rm{ } \;pronađite /backups/files/ db * -mtime +5 -exec rm{ } \;

Skripta će najprije stvoriti varijablu datuma, tako da će sve datoteke biti imenovane za jednu sigurnosnu kopiju, a zatim odlagali bazu podataka, tars up web datoteke i gzips njima. Naredbe za pronalaženje koriste se za uklanjanje svih datoteka starijih od 5 dana, jer ne želite da vaš pogon nestane iz svega.

Napravite izvršnu skriptu pokretanjem sljedeće naredbe:

chmod u + x /backups/ backup.sh

Potom ga morate dodijeliti za automatsko pokretanje pomoću cron. Pazite da koristite račun koji ima pristup direktoriju sigurnosnih kopija.

crontab -e

Dodajte sljedeću liniju na crontab:

1 1 * * * /backups/ backup.sh

Možete testirati skriptu ispred vremena tako da ga pokrenete dok ste prijavljeni na korisnički račun.(Obično izvodim sigurnosne kopije kao root)

Sigurnosne kopije sinkronizacije izvan radnog mjesta s Rsyncom

Sada kada imate automatizirane sigurnosne kopije poslužitelja, možete ih sinkronizirati negdje drugdje pomoću uslužnog programa rsync.Ćelite pročitati ovaj članak o tome kako postaviti ssh tipke za automatsku prijavu: Dodajte javni SSH ključ na daljinski poslužitelj u jednoj naredbi

Možete testirati ovo tako da pokrenete ovu naredbu na Linux ili Mac računalu na drugom mjestu( Iimam linux server kod kuće, gdje sam pokrenuo ovo)

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

To će potrajati dosta vremena da se pokrene prvi put, ali na kraju vašem lokalnom računalu treba imati kopijuu direktoriju datoteka u /offsitebackups/ direktoriju.(Obavezno stvorite taj direktorij prije pokretanja skripte)

Možete ovo zakazati tako da ga dodate u crontab liniju:

crontab -e

Dodajte sljedeću liniju koja će izvršiti rsync svaki sat u 45 minuta. Primijetit ćete da ovdje koristimo cijeli put do rsync.

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

Možete ga zakazati za rad u drugo vrijeme ili samo jednom dnevno. To je do tebe.

Imajte na umu da postoji mnogo uslužnih programa koji će vam omogućiti sinkronizaciju putem ssh ili ftp. Ne morate koristiti rsync.

Sigurnost

Prvo što želite učiniti je pobrinite se da imate redoviti korisnički račun za korištenje putem ssh-a i provjerite možete li koristiti su da biste se prebacili na root. To je vrlo loša ideja za dopuštanje izravne prijave za korijenje preko ssh-a.

Onemogući korijensku prijavu preko SSH-a

Uredite datoteku /etc/ssh/ sshd_config i potražite sljedeću liniju:

#PermitRootLogin da

Promijenite tu liniju da izgleda ovako:

PermitRootLogin ne

Uvjerite se da imate redovni korisnički račun i možete seprije nego što napravite tu promjenu, inače se možete zaključati.

Onemogući verziju SSH verzije 1

Stvarno nema razloga koristiti ništa drugo osim SSH verzije 2 jer je sigurnije od prethodnih verzija. Uredite /etc/ssh/ sshd_config datoteku i potražite sljedeći odjeljak:

#Protocol 2,1 Protokol 2

Pazite da koristite samo Protokol 2 kao što je prikazano.

Ponovno pokretanje SSH poslužitelja

Sada ćete morati ponovo pokrenuti SSH poslužitelj kako bi to učinio učinak.

/etc/init.d/ sshd restart

Provjerite otvorene ulaze

Možete koristiti sljedeću naredbu da biste vidjeli koji portovi služe za slušanje:

netstat -an |grep SLUŠAJ

Stvarno ne biste trebali ništa slušati osim luka 22, 80 i možda 8443 za plesk.

Postavljanje vatrozida

Glavni članak: Korištenje iptables na Linuxu

Možete po želji postaviti vatrozid iptables da biste blokirali više veza. Na primjer, obično blokirajem pristup svim drugim lukama, a ne mojoj radnoj mreži. Ako imate dinamičku IP adresu, želite izbjeći tu opciju.

Ako ste već dosad slijedili sve korake u ovom vodiču, vjerojatno nije potrebno dodati vatrozid za miks, ali je dobro razumjeti vaše mogućnosti.

Vidi također

  • Korištenje iptables na Linuxu

Reference

  • Optimiziranje DV poslužitelja( mediatemple.net)
  • XCache