Prilagajanje namenskega navideznega spletnega strežnika
Ko dobite namenski virtualni strežnik za vodenje vašega spletnega mesta, so dobre možnosti, da je konfiguriran za vse in ni prilagojen za povečanje učinkovitosti delovanja spletnega mesta..
Vsebina[skrij]
|
Pregled
Obstaja več problemskih področij, kjer želimo povečati učinkovitost:
- Konfiguracija Linuxa
Običajno se izvajajo storitve, ki ne potrebujejo, zapravljajo pomnilnik, ki ga lahko uporabite za več povezav. - MySQL konfiguracija
Pogosto privzete nastavitve temeljijo na majhnem strežniku, dodamo lahko nekaj ključnih sprememb, da bi veliko povečali zmogljivost. - Konfiguracija Apache
Privzeto večina ponudnikov gostovanja namesti apache s skoraj vsakim nameščenim modulom. Ni razloga za nalaganje modulov, če jih ne boste nikoli uporabili. - Konfiguracija PHP
Privzeta konfiguracija PHP je podobno napihnjena, običajno je nameščenih nekaj nepotrebnih dodatnih modulov. - PHP Opcode Cache
Namesto, da PHP vsakokrat ponovno prevede skripte, bo predpomnilnik opcode predpomnil prevedene skripte v spomin, da bi povečal zmogljivost.. - Varnostne kopije
Verjetno bi morali namestiti nekaj avtomatiziranih varnostnih kopij, saj vaš ponudnik gostovanja ne bo naredil za vas. - Varnost
Seveda je Linux privzeto dovolj varen, toda ponavadi obstajajo očitna varnostna vprašanja, ki jih lahko popravite z nekaj hitrimi nastavitvami.
Konfiguracija Linuxa
Obstaja kar nekaj sprememb, ki jih lahko storite, kar se bo nekoliko razlikovalo glede na strežnik, ki ga uporabljate. Te nastavitve so namenjene strežniku CentOS, vendar morajo delovati za večino strežnikov DV.
Onemogoči DNS
Če vaš ponudnik gostovanja obravnava DNS za vašo domeno (verjetno), lahko onemogočite izvajanje storitve DNS.
onemogoči dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Ukaz chmod odstrani dovoljenje za izvedbo iz skripta in ga ustavi pri zagonu.
Onemogoči funkcijo SpamAssassain
Če ne uporabljate e-poštnih računov na svojem strežniku, se ne bi smeli ukvarjati z orodji za preprečevanje neželene pošte. (Prav tako bi morali preveriti Google Aplikacije, veliko boljšo e-poštno rešitev)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Onemogoči xinetd
Proces xinetd vsebuje številne druge procese, od katerih noben ni uporaben za tipičen spletni strežnik.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Omejite porabo pomnilnika Plesk
Če uporabljate pleskalno ploščo, jo lahko prisilite, da porabi manj pomnilnika z dodajanjem opcijske datoteke.
vi /usr/local/psa/admin/conf/httpsd.custom.include
V datoteko dodajte naslednje vrstice:
MinSpareServers 1 MaxSpareServers 1 Začetni strežniki 1 MaxClients 5
Upoštevajte, da ta možnost deluje na strežnikih MediaTemple DV, vendar ni bila preverjena na nobenem drugem. (Glejte reference)
Onemogoči ali izklopi Plesk (izbirno)
Če Plesk uporabljate le enkrat letno, je zelo malo razloga, da bi ga sploh pustili. Upoštevajte, da je ta korak povsem neobvezen in nekoliko bolj napreden.
Zaženite naslednji ukaz za izklop pleskanja:
/etc/init.d/psa stop
Lahko ga onemogočite pri zagonu z izvajanjem naslednjega ukaza:
chmod 644 /etc/init.d/psa
Če ga onemogočite, je ne morete zagnati ročno brez spreminjanja dovoljenj datoteke (chmod u + x).
Konfiguracija MySQL
Omogoči predpomnilnik poizvedb
Odprite datoteko /etc/my.cnf in v razdelek [mysqld] dodajte naslednje vrstice:
[mysqld] query-cache-type = 1 poizvedba-cache-size = 8M
Če želite, lahko v predpomnilnik poizvedb dodate več pomnilnika, vendar ne uporabljajte preveč.
Onemogoči TCP / IP
Presenetljivo število gostiteljev po privzetku omogoči dostop do MySQL na TCP / IP, kar za spletno stran ni smiselno. Lahko ugotovite, ali mysql posluša na TCP / IP, tako da zaženete naslednji ukaz:
netstat -an | grep 3306
Če želite onemogočiti, dodajte naslednjo vrstico v datoteko /etc/my.cnf:
skip-networking
Konfiguracija Apache
Odprite datoteko httpd.conf, ki jo pogosto najdete v /etc/httpd/conf/httpd.conf
Poiščite vrstico, ki izgleda takole:
Časovna omejitev 120
In spremenite to v:
Časovna omejitev 20
Zdaj poiščite razdelek, ki vključuje te vrstice, in prilagodite nekaj podobnega:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Konfiguracija PHP
Ena od stvari, ki jih morate upoštevati pri urejanju strežnika na platformi PHP, je, da bo vsaka nit apache naložila PHP na ločeno mesto v pomnilniku. To pomeni, da če neuporabljen modul doda 256k pomnilnika v PHP, čez 40 apaških niti izgubite 10 MB pomnilnika.
Odstranite nepotrebne module PHP
Poiščite datoteko php.ini, ki jo običajno najdete na /etc/php.ini (na nekaterih distribucijah bo v imeniku /etc/php.d/ s številnimi datotekami .ini, enega za vsak modul.
Opišite vse vrstice za nalagalni modul s temi moduli:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- nakladalnik ioncube
- json
- imap
- ldap
- ncurses
Todo: Tukaj dodajte več informacij.
PHP Opcode Cache
Obstaja več predpomnilnikov opcode, ki jih lahko uporabite, vključno z APC, eAcceleratorjem in Xcache, ki je moja osebna preferenca zaradi stabilnosti.
Prenesite xcache in ga izvlecite v imenik, nato pa izvedite naslednje ukaze iz izvornega imenika xcache:
phpize ./configure --enable-xcache make make install
Odprite datoteko php.ini in dodajte nov razdelek za xcache. Če želite, da se vaši php moduli naložijo od nekje drugje, boste morali prilagoditi poti.
vi /etc/php.ini
V datoteko dodajte naslednji razdelek:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Spremenite xcache.size, da prilagodite velikost predpomnilnika opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Spremeni xcache.var_size za prilagoditev velikosti predpomnilnika spremenljivke 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 = Izključeno xcache.readonly_protection Na xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Na xcache.stat = Na xcache.optimizer = Izklopljeno
Todo: Potrebno je razširiti to bit in povezavo na xcache v referencah.
Varnostne kopije
Obstaja zelo malo bolj pomembno kot avtomatizirano varnostno kopiranje vaše spletne strani. Morda boste lahko dobili varnostne kopije posnetkov od ponudnika gostovanja, ki so prav tako zelo koristne, vendar raje imam tudi samodejne varnostne kopije..
Ustvarite samodejni varnostni skript
Običajno začnem z ustvarjanjem imenika / backups, pod njim pa imenik / backups / files. Te poti lahko prilagodite, če želite.
mkdir -p / varnostne kopije / datoteke
Zdaj ustvarite skript backup.sh v imeniku varnostnih kopij:
vi /backups/backup.sh
Dodajte naslednje v datoteko, po potrebi prilagodite poti in geslo 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 / my-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar Najdi / varnostne kopije / datoteke / mesto * -mtime +5 -exec rm \ t Najdi / varnostne kopije / datoteke / db * -mtime +5 -exec rm \ t
Skript bo najprej ustvaril časovno spremenljivko, tako da bodo vse datoteke imenovane enake za eno varnostno kopijo, nato pa bo odložila bazo podatkov, strgala spletne datoteke in jih gzips. Ukazi za iskanje se uporabljajo za odstranitev vseh datotek, starejših od 5 dni, saj ne želite, da vam zmanjka prostora.
Izvedite skript tako, da zaženete naslednji ukaz:
chmod u + x /backups/backup.sh
Nato ga morate dodeliti, da se samodejno zažene s cron. Preverite, ali uporabljate račun, ki ima dostop do imenika varnostnih kopij.
crontab -e
Dodajte naslednjo vrstico v crontab:
1 1 * * * /backups/backup.sh
Skript lahko predčasno preskusite tako, da ga zaženete, ko ste prijavljeni v uporabniški račun. (Ponavadi izvajam varnostne kopije kot root)
Sinhronizirajte varnostne kopije izven spletnega mesta z Rsync
Zdaj, ko imate samodejno varnostno kopiranje strežnika, jih lahko sinhronizirate drugje s pripomočkom rsync. Boste želeli prebrati ta članek o tem, kako nastaviti tipke ssh za samodejno prijavo: Dodajte javni ključ SSH za oddaljeni strežnik v eni sami ukazi
To lahko preizkusite tako, da zaženete ta ukaz na računalniku s sistemom linux ali Mac na drugi lokaciji (doma imam strežnik linux, kjer ga zaženem)
rsync -a [email protected]: / varnostne kopije / datoteke / * / offsitebackups /
To bo trajalo kar nekaj časa, da se bo zagnal prvič, toda na koncu mora vaš lokalni računalnik imeti kopijo imenika datotek v imeniku / offsitebackups /. (Preden zaženete skript, morate ustvariti ta imenik)
To lahko razporedite tako, da ga dodate v vrstico crontab:
crontab -e
Dodajte naslednjo vrstico, ki bo vsako uro zagnala rsync na oznaki 45 minut. Opazili boste, da tukaj uporabljamo celotno pot do rsync.
45 * * * * / usr / bin / rsync -a [email protected]: / varnostne kopije / datoteke / * / offsitebackups /
Lahko načrtujete, da se izvaja v drugem času ali samo enkrat na dan. To je odvisno od vas.
Upoštevajte, da obstaja veliko pripomočkov, ki vam omogočajo sinhronizacijo prek ssh ali ftp. Ni vam treba uporabljati rsync.
Varnost
Prva stvar, ki jo želite narediti, je, da imate običajni uporabniški račun, ki ga želite uporabljati s ssh, in se prepričajte, da lahko uporabite su, da preklopite na root. To je zelo slaba ideja, da dovolite neposredno prijavo za koren nad ssh.
Onemogoči prijavo korena prek SSH
Uredite datoteko / etc / ssh / sshd_config in poiščite naslednjo vrstico:
#PermitRootLogin da
Spremenite to vrstico tako, da bo videti tako:
PermitRootLogin no
Prepričajte se, da imate redni uporabniški račun in lahko su, da koren, preden naredite to spremembo, sicer se lahko zaklenete ven.
Onemogoči različico 1 SSH
Res ni razloga, da bi uporabljali kaj drugega kot različico SSH 2, saj je varnejša od prejšnjih različic. Uredite datoteko / etc / ssh / sshd_config in poiščite naslednji razdelek:
# Protokol 2.1 Protokol 2
Prepričajte se, da uporabljate samo protokol 2, kot je prikazano.
Znova zaženite strežnik SSH
Zdaj boste morali ponovno zagnati strežnik SSH, da bo to začelo veljati.
/etc/init.d/sshd ponovni zagon
Preverite odprta vrata
Z naslednjim ukazom lahko vidite, na katerih vratih strežnik posluša:
netstat -an | grep POSLUŠAJ
Res ne bi smeli ničesar poslušati, razen pristanišč 22, 80 in morda 8443 za pleskanje.
Nastavite požarni zid
Glavni člen: Uporaba Iptables na Linuxu
Po želji lahko nastavite požarni zid iptables, ki blokira več povezav. Na primer, običajno blokiram dostop do drugih vrat, razen iz svojega delovnega omrežja. Če imate dinamični naslov IP, se želite izogniti tej možnosti.
Če ste doslej že upoštevali vse korake v tem priročniku, verjetno ni treba dodati mešanice tudi požarnega zidu, vendar je dobro razumeti vaše možnosti..
Poglej tudi
- Uporaba Iptables na Linuxu
Reference
- Optimiziranje strežnika DV (mediatemple.net)
- XCache