Početna » kako da » Ugađanje namjenskog virtualnog web poslužitelja

    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]

    • 1 Pregled
    • 2 Konfiguracija Linuxa
      • 2.1 Onemogući DNS
      • 2.2 Onemogući SpamAssassain
      • 2.3 Onemogući xinetd
      • 2.4 Ograničite korištenje Plesk memorije
      • 2.5 Onemogući ili isključi Plesk (opcionalno)
    • 3 MySQL konfiguracija
      • 3.1 Omogući predmemoriju upita
      • 3.2 Onemogućite TCP / IP
    • 4 Apache konfiguracija
    • 5 PHP konfiguracija
      • 5.1 Uklanjanje nepotrebnih PHP modula
      • 5.2 PHP Opcode Cache
    • 6 Sigurnosne kopije
      • 6.1 Stvorite automatizirani skript za sigurnosno kopiranje
      • 6.2 Sinkronizacija sigurnosnih kopija izvan mjesta s Rsync
    • 7 Sigurnost
      • 7.1 Onemogući prijavu korijena preko SSH-a
      • 7.2 Onemogućavanje verzije 1 SSH
      • 7.3 Ponovno pokretanje SSH poslužitelja
      • 7.4 Provjerite otvorene portove
      • 7.5 Postavljanje vatrozida
    • 8 Vidi također
    • 9 Reference

    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