Ugađanje namjenskog virtualnog web poslužitelja
Kada dobijete namjenski virtualni poslužitelj za pokretanje web-lokacije, vrlo je vjerojatno da je konfiguriran za svakoga, a nije prilagođen za maksimiziranje izvedbe za pokretanje web-lokacije.
Sadržaj[sakriti]
|
Pregled
Postoji nekoliko problemskih područja u kojima želimo maksimizirati izvedbu:
- Linux konfiguracija
Obično se pokreću servisi koji ne moraju biti, trošeći memoriju koja se može koristiti za više veza. - MySQL konfiguracija
Često se zadane postavke temelje na malom poslužitelju, dodajemo nekoliko ključnih promjena kako bismo povećali performanse. - Apache konfiguracija
Po defaultu većina davatelja hostinga instalira Apache s gotovo svakim instaliranim modulom. Nema razloga za učitavanje modula ako ih nikada nećete koristiti. - PHP konfiguracija
Zadana PHP konfiguracija je slično proširena, obično je instalirana tona nepotrebnih dodatnih modula. - PHP Opcode Cache
Umjesto dopuštanja PHP-u da rekompajlira skripte svaki put, opcode cache će pohraniti prevedene skripte u memoriju kako bi povećao performanse. - Sigurnosne kopije
Vjerojatno biste trebali postaviti neke automatizirane sigurnosne kopije, jer vaš davatelj hostinga neće to učiniti za vas. - sigurnosti
Naravno, Linux je dovoljno siguran prema zadanim postavkama, ali obično ima nekih očiglednih sigurnosnih problema koje možete riješiti s nekoliko brzih postavki.
Konfiguracija Linuxa
Postoji prilično velik broj izmjena koje možete napraviti, što će se malo razlikovati ovisno o poslužitelju koji koristite. Ova podešavanja su za poslužitelj koji pokreće CentOS, ali bi trebali raditi za većinu DV poslužitelja.
Onemogući DNS
Ako vaš davatelj usluge hostinga obrađuje DNS za vašu domenu (vjerojatno), tada možete onemogućiti pokretanje DNS usluge.
onemogući dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Naredba chmod uklanja dozvolu izvršenja iz skripte, zaustavljajući je pri pokretanju.
Onemogući SpamAssassain
Ako ne koristite račune e-pošte na samom poslužitelju, ne bi trebali gnjaviti anti-spam alate. (Također biste trebali provjeriti Google Apps, puno bolje rješenje za e-poštu)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Onemogući xinetd
Xinetd proces sadrži niz drugih procesa, od kojih nijedan nije koristan za tipični web poslužitelj.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Ograničite korištenje Plesk memorije
Ako koristite panel s pleskanjem, možete ga prisiliti da koristi manje memorije dodavanjem datoteke s opcijama.
vi /usr/local/psa/admin/conf/httpsd.custom.include
U datoteku dodajte sljedeće retke:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Imajte na umu da je poznato da ova opcija radi na poslužiteljima MediaTemple DV, ali nije provjerena na drugim poslužiteljima. (Vidi Reference)
Onemogući ili isključi Plesk (izborno)
Ako Plesk koristite samo jednom godišnje, vrlo je malo razloga da ga uopće ne pokrenete. Napominjemo da je ovaj korak potpuno neobavezan i malo napredniji.
Izvedite sljedeću naredbu da biste isključili plesk:
/etc/init.d/psa stop
Možete ga onemogućiti pri pokretanju pokretanjem sljedeće naredbe:
chmod 644 /etc/init.d/psa
Imajte na umu da ako ga onemogućite, ne možete ga pokrenuti ručno bez promjene natrag dopuštenih datoteka (chmod u + x).
MySQL konfiguracija
Omogući predmemoriju upita
Otvorite datoteku /etc/my.cnf i dodajte sljedeće retke u odjeljak [mysqld] ovako:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Ako želite, možete dodati više memorije u predmemoriju upita, ali nemojte previše koristiti.
Onemogući TCP / IP
Iznenađujući broj hostova po defaultu omogućuje pristup MySQL-u na TCP / IP, što nema smisla za web stranicu. Možete shvatiti da li mysql sluša na TCP / IP pokretanjem sljedeće naredbe:
netstat -an | grep 3306
Da biste onemogućili, dodajte sljedeći redak u datoteku /etc/my.cnf:
preskočiti-umrežavanje
Apache konfiguracija
Otvorite datoteku httpd.conf, često pronađenu u /etc/httpd/conf/httpd.conf
Pronađite redak koji izgleda ovako:
Timeout 120
I promijenite ga u ovo:
Timeout 20
Sada pronađite odjeljak koji uključuje ove retke i prilagodite nešto slično:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Konfiguracija PHP-a
Jedna od stvari koje trebate imati na umu prilikom ugađanja poslužitelja na PHP platformi jest da će svaki pojedinačni apache nit učitati PHP na zasebnoj lokaciji u memoriji. To znači da ako neiskorišteni modul doda 256 kB memorije u PHP, preko 40 Apache tema trošite 10MB memorije.
Uklanjanje nepotrebnih PHP modula
Morat ćete pronaći vašu php.ini datoteku, koja se obično nalazi na /etc/php.ini (Imajte na umu da će na nekim distribucijama postojati /etc/php.d/ direktorij s brojem .ini datoteka, po jedan za svaki modul.
Komentirajte bilo koju liniju loadmodule s ovim modulima:
- ODBC
- SNMP
- PDO
- odbc pdo
- mysqli
- ionCube-utovarivač
- JSON
- IMAP
- lDAP
- ncursesa
Todo: Dodajte više informacija ovdje.
PHP Opcode Cache
Postoje brojne predmemorije opcode koje možete koristiti, uključujući APC, eAccelerator i Xcache, a posljednja je moja osobna preferencija zbog stabilnosti.
Preuzmite xcache i izvucite ga u direktorij, a zatim pokrenite sljedeće naredbe iz xcache izvornog imenika:
phpize ./configure --enable-xcache make make install
Otvorite datoteku php.ini i dodajte novi odjeljak za xcache. Morat ćete prilagoditi staze ako se vaši php moduli učitavaju s negdje drugdje.
vi /etc/php.ini
U datoteku dodajte sljedeći odjeljak:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Promijenite xcache.size da biste podesili veličinu predmemorije opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Promijenite xcache.var_size da biste prilagodili veličinu cachea varijable 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 = Uključeno xcache.optimizer = Isključeno
Todo: Potrebno je malo proširiti i povezati se na xcache u referencama.
Sigurnosne kopije
Vrlo je malo važnije od automatiziranih sigurnosnih kopija vaše web-lokacije. Možda ćete moći dobiti sigurnosne kopije snimaka od davatelja usluge hostinga, koje su također vrlo korisne, ali i ja volim imati automatizirane sigurnosne kopije..
Stvorite automatizirani skript za sigurnosno kopiranje
Obično počinjem stvaranjem direktorija / backups, s direktorijem / backups / files ispod njega. Ove putove možete prilagoditi ako želite.
mkdir -p / backups / files
Sada kreirajte skriptu backup.sh unutar direktorija sigurnosnih kopija:
vi /backups/backup.sh
U datoteku dodajte sljedeće, prema potrebi prilagodite staze i lozinku za mysqldump:
#! / bin / sh THEDATE = "datum +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts / moja-web-staza / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backup / files / site * -mtime +5 -exec rm \ t pronađi / sigurnosne kopije / datoteke / db * -mtime +5 -exec rm \ t
Skripta će najprije stvoriti datumsku varijablu tako da se sve datoteke nazivaju istim za jednu sigurnosnu kopiju, a zatim ispusti bazu podataka, podigne web datoteke i gzips ih. Naredbe za pronalaženje koriste se za uklanjanje svih datoteka starijih od 5 dana, budući da ne želite da vam disk ponestane.
Napravite skriptu izvršnom naredbom:
chmod u + x /backups/backup.sh
Zatim ćete ga morati dodijeliti da se automatski pokreće putem cron-a. Provjerite koristite li račun koji ima pristup direktoriju sigurnosnih kopija.
crontab-e
Dodajte sljedeći redak u crontab:
1 1 * * * /backups/backup.sh
Skriptu možete testirati unaprijed tako da je pokrenete dok ste prijavljeni na korisnički račun. (Najčešće izvodim sigurnosne kopije kao root)
Sinkronizirajte sigurnosne kopije izvan mjesta s Rsync
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č udaljenom poslužitelju u jednoj naredbi
To možete testirati tako da pokrenete tu naredbu na Linux ili Mac računalu na drugoj lokaciji (kod kuće imam linux poslužitelj, gdje ga pokrećem)
rsync -a [email protected]: / sigurnosne kopije / datoteke / * / offsitebackups /
Ovo će potrajati neko vrijeme dok se prvi put ne pokrene, ali na kraju vaše lokalno računalo mora imati kopiju direktorija datoteka u / offsitebackups / direktoriju. (Svakako stvorite taj direktorij prije pokretanja skripte)
Ovo možete zakazati dodavanjem u crontab liniju:
crontab-e
Dodajte sljedeći redak, koji će se prikazivati svakih sat vremena na oznaci od 45 minuta. Primijetit ćete da ovdje koristimo punu putanju za rsync.
45 * * * * / usr / bin / rsync -a [email protected]: / backup / files / * / offsitebackups /
Možete ga zakazati za pokretanje u drugo vrijeme ili samo jednom dnevno. To je do vas.
Imajte na umu da postoji mnogo uslužnih programa koji će vam omogućiti sinkronizaciju preko ssh ili ftp. Ne morate koristiti rsync.
sigurnosti
Prvo što želite učiniti jest provjeriti imate li uobičajeni korisnički račun za korištenje preko ssh i provjerite možete li koristiti su za prebacivanje na root. Vrlo je loša ideja dopustiti izravnu prijavu za root preko ssh.
Onemogući prijavu korijena preko SSH-a
Uredite datoteku / etc / ssh / sshd_config i potražite sljedeći redak:
#PermitRootLogin da
Promijeni liniju tako da izgleda ovako:
PermitRootLogin br
Pobrinite se da imate uobičajeni korisnički račun i da ga možete pokrenuti prije nego što napravite ovu promjenu, u suprotnom možete se zatvoriti.
Onemogući SSH inačicu 1
Zaista nema razloga koristiti bilo što drugo osim SSH verzije 2, jer je sigurnije od prethodnih verzija. Uredite datoteku / etc / ssh / sshd_config i potražite sljedeći odjeljak:
Protokol 2, Protokol 2
Provjerite koristite li samo protokol 2 kao što je prikazano.
Ponovo pokrenite SSH poslužitelj
Sada ćete morati ponovno pokrenuti SSH poslužitelj kako bi to učinilo.
/etc/init.d/sshd ponovno pokretanje
Provjerite otvorene portove
Pomoću sljedeće naredbe možete vidjeti koje portove poslužitelj sluša:
netstat -an | grep POSLUŠAJ
Zaista ne biste trebali slušati ništa osim portova 22, 80 i možda 8443 za pleskanje.
Postavljanje vatrozida
Glavni članak: Korištenje Iptables na Linuxu
Po želji možete postaviti iptables firewall za blokiranje više veza. Na primjer, obično blokiram pristup bilo kojem drugom portu, osim iz svoje radne mreže. Ako imate dinamičku IP adresu, želite je izbjeći.
Ako ste dosad već slijedili sve korake u ovom vodiču, vjerojatno ne morate dodati vatrozid u mix, ali dobro je razumjeti vaše opcije.
Vidi također
- Korištenje Iptables na Linuxu
Reference
- Optimiziranje DV poslužitelja (mediatemple.net)
- XCache