Domača » kako » Prilagajanje namenskega navideznega spletnega strežnika

    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]

    • 1 Pregled
    • 2 Konfiguracija Linuxa
      • 2.1 Onemogoči DNS
      • 2.2 Onemogočite funkcijo SpamAssassain
      • 2.3 Onemogoči xinetd
      • 2.4 Omejitev uporabe pomnilnika Plesk
      • 2.5 Onemogoči ali izklopi Plesk (izbirno)
    • 3 MySQL konfiguracija
      • 3.1 Omogoči predpomnilnik poizvedb
      • 3.2 Onemogočite TCP / IP
    • 4 Apache konfiguracija
    • 5 Konfiguracija PHP
      • 5.1 Odstranite nepotrebne module PHP
      • 5.2 PHP Opcode Cache
    • 6 Varnostne kopije
      • 6.1 Ustvarjanje samodejne varnostne kopije
      • 6.2 Sinhroniziranje varnostnih kopij zunaj mesta z Rsync
    • 7 Varnost
      • 7.1 Onemogoči dostop do korena prek SSH
      • 7.2 Onemogoči različico 1 SSH
      • 7.3 Znova zaženite SSH strežnik
      • 7.4 Preverite odprta vrata
      • 7.5 Nastavitev požarnega zidu
    • 8 Glej tudi
    • 9 Reference

    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