Hjemmeside » hvordan » Tweaking en dedikert virtuell webserver

    Tweaking en dedikert virtuell webserver

    Når du får en dedikert virtuell server til å kjøre nettstedet ditt, er det gode muligheter for at det er konfigurert for alle, og ikke tilpasset for å maksimere ytelsen til å kjøre et nettsted.

    innhold

    [gjemme seg]

    • 1 oversikt
    • 2 Linux-konfigurasjon
      • 2.1 Deaktiver DNS
      • 2.2 Deaktiver SpamAssassain
      • 2.3 Deaktiver xinetd
      • 2.4 Begrens bruk av Plesk-minne
      • 2.5 Deaktiver eller Slå av Plesk (valgfritt)
    • 3 MySQL-konfigurasjon
      • 3.1 Aktiver Query Cache
      • 3.2 Deaktiver TCP / IP
    • 4 Apache-konfigurasjon
    • 5 PHP konfigurasjon
      • 5.1 Fjern unødvendige PHP-moduler
      • 5.2 PHP Opcode Cache
    • 6 sikkerhetskopier
      • 6.1 Opprett automatisk sikkerhetskopieringskript
      • 6.2 Synkroniser sikkerhetskopier utenfor nettstedet med Rsync
    • 7 Sikkerhet
      • 7.1 Deaktiver Root Login over SSH
      • 7.2 Deaktiver SSH versjon 1
      • 7.3 Start SSH-serveren på nytt
      • 7.4 Kontroller åpne porter
      • 7.5 Oppsett av en brannmur
    • 8 Se også
    • 9 Referanser

    Oversikt

    Det er flere problemområder hvor vi vil maksimere ytelsen:

    • Linux konfigurasjon
      Det er vanligvis tjenester som kjører som ikke trenger å være, sløse minne som kan brukes til flere tilkoblinger.
    • MySQL-konfigurasjon
      Standardinnstillingene er ofte basert på en liten server, og vi kan legge til noen viktige endringer for å øke ytelsen mye.
    • Apache konfigurasjon
      Som standard installerer de fleste hostingleverandører apache med nesten alle moduler installert. Det er ingen grunn til å laste inn moduler hvis du aldri skal bruke dem.
    • PHP konfigurasjon
      Standard PHP-konfigurasjonen er lik oppblåst, det er vanligvis en rekke unødvendige ekstra moduler installert.
    • PHP Opcode Cache
      I stedet for å tillate PHP å kompilere skriptene hver gang, vil en opcode cache cache de kompilerte skriptene i minnet for store ytelsesforbedringer.
    • sikkerhetskopier
      Skulle sannsynligvis sette opp noen automatiserte sikkerhetskopier, siden hostingleverandøren din ikke skal gjøre det for deg.
    • Sikkerhet
      Visst, Linux er sikkert nok som standard, men det er vanligvis noen skjulte sikkerhetsproblemer som du kan fikse med noen få raske innstillinger.

    Linux-konfigurasjon

    Det er ganske mange tweaks du kan gjøre, som vil variere litt basert på serveren du bruker. Disse tweaks er for en server som kjører CentOS, men de burde jobbe for de fleste DV-servere.

    Deaktiver DNS

    Hvis din hostingleverandør håndterer DNS-en for domenet ditt (sannsynligvis), kan du deaktivere DNS-tjenesten fra å kjøre.

    deaktiver dns /etc/init.d/named stop chmod 644 /etc/init.d/named

    Kommandoen chmod fjerner kjør tillatelse fra skriptet, og stopper det fra å kjøre ved oppstart.

    Deaktiver SpamAssassain

    Hvis du ikke bruker e-postkontoer på selve serveren din, bør du ikke bry deg om å kjøre anti-spam-verktøy. (Du bør også sjekke ut Google Apps, mye bedre e-postløsning)

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

    Deaktiver xinetd

    Xinetd-prosessen inneholder en rekke andre prosesser, hvorav ingen er nyttige for en typisk webserver.

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

    Begrens bruk av Plesk-minne

    Hvis du bruker plesk-panelet, kan du tvinge det til å bruke mindre minne ved å legge til en alternativfil.

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

    Legg til følgende linjer i filen:

    MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

    Merk at dette alternativet er kjent for å fungere på MediaTemple DV-servere, men er ikke sjekket på noen andre. (Se referanser)

    Deaktiver eller Slå av Plesk (valgfritt)

    Hvis du bare bruker Plesk en gang i året, er det veldig liten grunn til å la det løpe i det hele tatt. Merk at dette trinnet er helt valgfritt, og litt mer avansert.

    Kjør følgende kommando for å slå av plesk:

    /etc/init.d/psa stop

    Du kan deaktivere den fra å kjøre ved oppstart ved å kjøre følgende kommando:

    chmod 644 /etc/init.d/psa

    Merk at hvis du deaktiverer den, kan du ikke starte den manuelt uten å endre filtillatelsene tilbake (chmod u + x).

    MySQL-konfigurasjon

    Aktiver spørringsbufferen

    Åpne filen /etc/my.cnf og legg til følgende linjer i delen [mysqld] som denne:

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

    Du kan legge til mer minne til spørringsbufferen hvis du vil, men ikke bruk for mye.

    Deaktiver TCP / IP

    Et overraskende antall verter tillater tilgang til MySQL på TCP / IP som standard, noe som ikke gir mening for et nettsted. Du kan finne ut om mysql lytter på TCP / IP ved å kjøre følgende kommando:

    netstat -an | grep 3306

    For å deaktivere, legg til følgende linje i filen /etc/my.cnf:

    hoppe-nettverk

    Apache-konfigurasjon

    Åpne httpd.conf filen, som ofte finnes i /etc/httpd/conf/httpd.conf

    Finn linjen som ser slik ut:

    Timeout 120

    Og endre det til dette:

    Timeout 20

    Finn nå delen som inneholder disse linjene, og juster til noe lignende:

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

    PHP-konfigurasjon

    En av tingene du må huske på når du klipper en server på PHP-plattformen, er at hver enkelt apache-tråd skal laste opp PHP på et separat sted i minnet. Dette betyr at hvis en ubrukt modul legger til 256k minne til PHP, over 40 apache-tråder spilder du 10 MB minne.

    Fjern unødvendige PHP-moduler

    Du må finne din php.ini-fil, som vanligvis finnes på /etc/php.ini (Merk at på enkelte distribusjoner vil det være en /etc/php.d/ katalog med en rekke .ini-filer, en for hver modul.

    Kommentere eventuelle lastmodullinjer med disse modulene:

    • ODBC
    • snmp
    • PUD
    • odbc pdo
    • mysqli
    • ioncube-loader
    • json
    • imap
    • ldap
    • ncurses

    Todo: Legg til mer informasjon her.

    PHP Opcode Cache

    Det finnes en rekke opcode caches som du kan bruke, inkludert APC, eAccelerator og Xcache, den siste er min personlige preferanse på grunn av stabilitet.

    Last ned xcache og hent det ut i en katalog, og kjør deretter kommandoer fra xcache-kilden katalogen:

    phpize ./configure --enable-xcache gjør gjør installasjon

    Åpne php.ini-filen din og legg til en ny seksjon for xcache. Du må justere stiene hvis php-modulene dine er lastet fra et annet sted.

    vi /etc/php.ini

    Legg til følgende seksjon i filen:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusnavn" xcache.admin.pass = "putanmd5hashhere" [xcache]; Endre xcache.size for å justere størrelsen på opcode cache xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Endre xcache.var_size for å justere størrelsen på variabel cache 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 = Av xcache.readonly_protection = På xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = På xcache.stat = På xcache.optimizer = Av

    Todo: Trenger å utvide dette litt og lenke til xcache i referansene.

    sikkerhetskopier

    Det er veldig lite viktigere enn å ha automatiserte sikkerhetskopier av nettstedet ditt. Du kan muligens få stillbilder fra din hostingleverandør, som også er veldig nyttig, men jeg foretrekker å ha automatiserte sikkerhetskopier også.

    Opprett automatisk sikkerhetskopieringskript

    Jeg begynner vanligvis ved å lage en / backup-katalog, med en / backup / filer katalog under den. Du kan justere disse banene hvis du vil.

    mkdir -p / sikkerhetskopier / filer

    Opprett nå et backup.sh-skript i sikkerhetskopieringsmappen:

    vi /backups/backup.sh

    Legg til følgende i filen, juster banene og mysqldump-passordet etter behov:

    #! / bin / sh THEDATE = "dato +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts / min-nettsted-banen / httpdocs gzip /backups/files/sitebackup$THEDATE.tar finn / sikkerhetskopier / filer / nettsted * -mtime +5 -exec rm  \; finn / sikkerhetskopier / filer / db * -mtime +5 -exec rm  \;

    Skriptet vil først opprette en datavariabel slik at alle filene blir kalt samme for en enkelt sikkerhetskopiering, dumper deretter databasen, tars opp webfilene og gzips dem. Finnkommandoer brukes til å fjerne filer som er eldre enn 5 dager, siden du ikke vil at stasjonen din skal gå tom for plass.

    Gjør skriptet kjørbar ved å kjøre følgende kommando:

    chmod u + x /backups/backup.sh

    Deretter må du tilordne den til å kjøre automatisk av cron. Kontroller at du bruker en konto som har tilgang til sikkerhetskatalogen.

    crontab -e

    Legg til følgende linje i crontab:

    1 1 * * * /backups/backup.sh

    Du kan teste skriptet på forhånd ved å kjøre det mens du er logget på brukerkontoen. (Jeg kjører vanligvis sikkerhetskopiene som root)

    Synkroniser sikkerhetskopier utenom nettstedet med Rsync

    Nå som du har automatiserte sikkerhetskopier av serveren din, kan du synkronisere dem et annet sted ved hjelp av rsync-verktøyet. Du vil lese denne artikkelen om hvordan du konfigurerer ssh-nøkler for automatisk pålogging: Legg til offentlig SSH-nøkkel til ekstern server i en enkelt kommando

    Du kan teste dette ved å kjøre denne kommandoen på en Linux- eller Mac-maskin på et annet sted (jeg har en linux-server hjemme, som er hvor jeg driver dette)

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

    Dette vil ta en stund å kjøre første gang, men på slutten skal din lokale datamaskin ha en kopi av filkatalogen i / offsitebackups / katalog. (Pass på å lage den katalogen før du kjører scriptet)

    Du kan planlegge dette ved å legge det til en crontab-linje:

    crontab -e

    Legg til følgende linje, som vil kjøre rsync hver time på 45 minutters mark. Du vil legge merke til at vi bruker hele banen til rsync her.

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

    Du kan planlegge det for å kjøre på en annen tid, eller bare en gang per dag. Det er virkelig opp til deg.

    Vær oppmerksom på at det er mange verktøy som lar deg synkronisere via ssh eller ftp. Du trenger ikke å bruke rsync.

    Sikkerhet

    Det første du vil gjøre er å sørge for at du har en vanlig brukerkonto for å bruke gjennom ssh, og sørg for at du kan bruke su til å bytte til rot. Det er en veldig dårlig ide å tillate direkte pålogging for root over ssh.

    Deaktiver Root Login over SSH

    Rediger filen / etc / ssh / sshd_config, og se etter følgende linje:

    #PermitRootLogin ja

    Endre den linjen for å se slik ut:

    PermitRootLogin nr

    Sørg for at du har en vanlig brukerkonto, og at du kan rote før du gjør denne endringen, ellers kan du låse deg ut.

    Deaktiver SSH versjon 1

    Det er egentlig ingen grunn til å bruke noe annet enn SSH versjon 2, da det er sikrere enn tidligere versjoner. Rediger filen / etc / ssh / sshd_config, og se etter følgende seksjon:

    # Protokoll 2.1 Protokoll 2

    Pass på at du bare bruker protokoll 2 som vist.

    Start SSH Server på nytt

    Nå må du starte SSH-serveren igjen for å få dette til å fungere.

    /etc/init.d/sshd restart

    Se etter åpne porter

    Du kan bruke følgende kommando for å se hvilke porter serveren lytter på:

    netstat -an | grep LISTEN

    Du burde ikke ha noe annet å lytte enn porter 22, 80 og muligens 8443 for plesk.

    Konfigurer en brannmur

    Hovedartikkel: Bruke Iptables på Linux

    Du kan eventuelt konfigurere en iptables-brannmur for å blokkere flere tilkoblinger. For eksempel blokkerer jeg vanligvis tilgang til andre porter enn fra arbeidsnettverket mitt. Hvis du har en dynamisk IP-adresse, vil du unngå dette alternativet.

    Hvis du allerede har fulgt alle trinnene i denne håndboken så langt, er det sannsynligvis ikke nødvendig å også legge til en brannmur i blandingen, men det er godt å forstå alternativene dine.

    Se også

    • Bruke Iptables på Linux

    referanser

    • Optimalisering av DV-serveren (mediatemple.net)
    • XCache