Hemsida » hur » Tweaking en dedikerad virtuell webbserver

    Tweaking en dedikerad virtuell webbserver

    När du får en dedikerad virtuell server för att köra din webbplats är chansen bra att den är konfigurerad för alla och inte anpassad för att maximera prestanda för att köra en webbplats.

    Innehåll

    [Dölj]

    • 1 Översikt
    • 2 Linux-konfiguration
      • 2.1 Inaktivera DNS
      • 2.2 Inaktivera SpamAssassain
      • 2.3 Inaktivera xinetd
      • 2.4 Begränsa Plesk Memory Usage
      • 2.5 Inaktivera eller stäng av Plesk (tillval)
    • 3 MySQL-konfiguration
      • 3.1 Aktivera sökrobot
      • 3.2 Inaktivera TCP / IP
    • 4 Apache-konfiguration
    • 5 PHP konfiguration
      • 5.1 Ta bort onödiga PHP-moduler
      • 5.2 PHP Opcode Cache
    • 6 Säkerhetskopior
      • 6.1 Skapa automatiskt säkerhetskopieringsskript
      • 6.2 Synkronisera Backups Off-Site med Rsync
    • 7 Säkerhet
      • 7.1 Inaktivera root-inloggning via SSH
      • 7.2 Inaktivera SSH Version 1
      • 7.3 Starta om SSH-servern
      • 7.4 Kontrollera efter öppna portar
      • 7.5 Installera en brandvägg
    • 8 Se också
    • 9 Referenser

    Översikt

    Det finns ett antal problemområden där vi vill maximera prestanda:

    • Linux konfiguration
      Det går oftast tjänster som inte behöver slösa minne som kan användas för fler anslutningar.
    • MySQL-konfiguration
      Standardinställningarna baseras ofta på en liten server, vi kan lägga till några viktiga ändringar för att öka prestanda mycket.
    • Apache konfiguration
      Som standard installerar de flesta webbhotell leverantörer apache med nästan alla moduler installerade. Det finns ingen anledning att ladda moduler om du aldrig kommer att använda dem.
    • PHP-konfiguration
      Standard PHP-konfiguration är uppblåst på samma sätt, det finns vanligtvis ett antal onödiga extra moduler installerade.
    • PHP Opcode Cache
      I stället för att låta PHP återställa kompileringarna varje gång, kommer en opcode-cache att cache de sammanställda skripten i minnet för stora prestandaökningar.
    • Säkerhetskopior
      Ska förmodligen installera några automatiska säkerhetskopior, eftersom din värdleverantör inte kommer att göra det för dig.
    • säkerhet
      Visst, Linux är säkert tillräckligt som standard, men det finns vanligtvis vissa skarpa säkerhetsproblem som du kan fixa med några snabba inställningar.

    Linux konfiguration

    Det finns ganska många tweaks du kan göra, vilket kommer att variera något baserat på servern du använder. Dessa tweaks är för en server som kör CentOS, men de borde fungera för de flesta DV-servrar.

    Inaktivera DNS

    Om din webbleverantör hanterar DNS för din domän (sannolikt), kan du inaktivera DNS-tjänsten från att köra.

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

    Chmod-kommandot tar bort exekutivt behörighet från skriptet, vilket hindrar det från att köras vid start.

    Inaktivera SpamAssassain

    Om du inte använder e-postkonton på din server själv, borde du inte bry dig om att köra anti-spam-verktyg. (Du bör också kolla in Google Apps, mycket bättre e-postlösning)

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

    Inaktivera xinetd

    Xinetd-processen innehåller ett antal andra processer, varav ingen är användbara för en vanlig webbserver.

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

    Begränsa Plesk Memory Usage

    Om du använder pleskpanelen kan du tvinga den att använda mindre minne genom att lägga till en alternativfil.

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

    Lägg till följande rader i filen:

    MinSpareServers 1 MaxSpareServers 1 Startservers 1 MaxClients 5

    Observera att det här alternativet är känt att fungera på MediaTemple DV-servrar, men har inte kontrollerats på någon annan. (Se referenser)

    Inaktivera eller stäng av Plesk (tillval)

    Om du bara använder Plesk en gång om året, är det väldigt lite skäl att låta det gå igång. Observera att detta steg är helt frivilligt och lite mer avancerat.

    Kör följande kommando för att stänga av plesk:

    /etc/init.d/psa stop

    Du kan inaktivera det från att köra vid start genom att köra följande kommando:

    chmod 644 /etc/init.d/psa

    Observera att om du inaktiverar det kan du inte starta det manuellt utan att ändra filbehörigheterna tillbaka (chmod u + x).

    MySQL-konfiguration

    Aktivera sökrobot

    Öppna din /etc/my.cnf-fil och lägg till följande rader i din [mysqld] -sektion så här:

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

    Du kan lägga till mer minne till frågan om cache om du vill, men använd inte för mycket.

    Inaktivera TCP / IP

    Ett överraskande antal värdar tillåter som standard tillgång till MySQL på TCP / IP, vilket inte ger någon mening för en webbplats. Du kan ta reda på om mysql lyssnar på TCP / IP genom att köra följande kommando:

    netstat -an | grep 3306

    För att inaktivera lägger du till följande rad i din /etc/my.cnf-fil:

    skip-nätverk

    Apache-konfiguration

    Öppna din httpd.conf-fil, som ofta finns i /etc/httpd/conf/httpd.conf

    Hitta raden som ser ut så här:

    Timeout 120

    Och ändra det till det här:

    Timeout 20

    Hitta nu den sektion som innehåller dessa rader och anpassa till något liknande:

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

    PHP-konfiguration

    En av de saker att tänka på när tweaking en server på PHP-plattformen är att varje enskild apache tråd ska ladda upp PHP på en separat plats i minnet. Det betyder att om en oanvänd modul lägger till 256k minne till PHP, över 40 apache trådar slösar du 10MB minne.

    Ta bort onödiga PHP-moduler

    Du måste hitta din php.ini-fil, som vanligtvis finns på /etc/php.ini (Observera att det i vissa utdelningar kommer att finnas en /etc/php.d/ katalog med ett antal .ini-filer, en för varje modul.

    Kommentera eventuella lastmodullinjer med dessa moduler:

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

    Todo: Lägg till mer information här.

    PHP Opcode Cache

    Det finns ett antal opcode-cacher som du kan använda, inklusive APC, eAccelerator och Xcache, den sista är min personliga preferens på grund av stabilitet.

    Hämta xcache och extrahera den i en katalog och kör sedan följande kommandon från xcache-källkatalogen:

    phpize ./configure --enable-xcache gör gör installationen

    Öppna din php.ini-fil och lägg till en ny sektion för xcache. Du måste justera banorna om dina php-moduler laddas från någon annanstans.

    vi /etc/php.ini

    Lägg till följande avsnitt i filen:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Ändra xcache.size för att ställa in storleken på opcode cache xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Ändra xcache.var_size för att justera storleken 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: Behöver utöka detta lite och länka till xcache i referenserna.

    Säkerhetskopior

    Det är väldigt lite viktigare än att ha automatiserade säkerhetskopior av din webbplats. Du kanske kan få stillbilder från din värdleverantör, som också är mycket användbara, men jag föredrar att ha automatiska säkerhetskopior också.

    Skapa automatiserad säkerhetskopieringskript

    Jag börjar vanligtvis genom att skapa en / backup-katalog, med en / backup / filer katalog under den. Du kan justera dessa vägar om du vill.

    mkdir -p / säkerhetskopior / filer

    Skapa nu ett backup.sh-skript i säkerhetskatalogen:

    vi /backups/backup.sh

    Lägg till följande i filen, justera sökvägarna och mysqldump-lösenordet efter behov:

    #! / 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 hitta / säkerhetskopior / filer / webbplats * -mtime +5 -exec rm  \; hitta / säkerhetskopior / filer / db * -mtime +5 -exec rm  \;

    Skriptet skapar först en datumvariabel så att alla filer heter samma för en enda säkerhetskopia, dumpar sedan databasen, tårar upp webfilerna och gzips dem. Sökkommandon används för att ta bort filer som är äldre än 5 dagar, eftersom du inte vill att din enhet ska gå tom för utrymme.

    Gör manuset körbart genom att köra följande kommando:

    chmod u + x /backups/backup.sh

    Därefter måste du tilldela det att köra automatiskt av cron. Se till att du använder ett konto som har tillgång till säkerhetskatalogen.

    crontab-e

    Lägg till följande rad i crontab:

    1 1 * * * /backups/backup.sh

    Du kan testa skriptet före tid genom att köra det medan du är inloggad på användarkontot. (Jag brukar köra säkerhetskopiorna som root)

    Synkronisera Backups Off-Site med Rsync

    Nu när du har automatiska säkerhetskopior av din server som körs kan du synkronisera dem någon annanstans genom att använda rsync-verktyget. Du vill läsa den här artikeln om hur du konfigurerar ssh-nycklar för automatisk inloggning: Lägg till offentlig SSH-nyckel till fjärrserver i ett enda kommando

    Du kan testa detta genom att köra det här kommandot på en Linux- eller Mac-maskin på en annan plats (jag har en linux-server hemma, vilket är där jag kör detta)

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

    Det tar ganska lång tid att köra första gången, men i slutet ska din lokala dator ha en kopia av filkatalogen i / offsitebackups / directory. (Se till att skapa den katalogen innan du kör scriptet)

    Du kan schemalägga detta genom att lägga till det på en crontab-linje:

    crontab-e

    Lägg till följande rad, som kommer att köra rsync varje timme vid 45 minuters markeringen. Du märker att vi använder hela vägen till rsync här.

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

    Du kan schemalägga det att springa vid en annan tid, eller bara en gång per dag. Det är verkligen upp till dig.

    Observera att det finns många verktyg som låter dig synkronisera via ssh eller ftp. Du behöver inte använda rsync.

    säkerhet

    Det första du vill göra är att se till att du har ett vanligt användarkonto att använda via ssh och se till att du kan använda su för att växla till root. Det är en mycket dålig idé att tillåta direkt inloggning för root över ssh.

    Inaktivera root-inloggning över SSH

    Redigera filen / etc / ssh / sshd_config och leta efter följande rad:

    #PermitRootLogin ja

    Ändra den här raden så att den ser ut så här:

    PermitRootLogin nr

    Se till att du har ett vanligt användarkonto och kan röra sig innan du gör den här ändringen, annars kan du låsa dig själv.

    Inaktivera SSH Version 1

    Det finns verkligen ingen anledning att använda något annat än SSH version 2, eftersom det är säkrare än tidigare versioner. Redigera filen / etc / ssh / sshd_config och leta efter följande avsnitt:

    # Protokoll 2.1 protokoll 2

    Se till att du bara använder protokoll 2 som visas.

    Starta om SSH Server

    Nu måste du starta om SSH-servern för att detta ska träda i kraft.

    /etc/init.d/sshd omstart

    Kontrollera efter öppna portar

    Du kan använda följande kommando för att se vilka portar servern lyssnar på:

    netstat -an | grep lyssna

    Du borde verkligen inte ha något annat som lyssnar än portar 22, 80 och eventuellt 8443 för plesk.

    Installera en brandvägg

    Huvudartikel: Använda Iptables på Linux

    Du kan eventuellt konfigurera en iptables-brandvägg för att blockera fler anslutningar. Till exempel blockerar jag vanligtvis tillgång till andra hamnar än från mitt arbetsnätverk. Om du har en dynamisk IP-adress vill du undvika det alternativet.

    Om du redan har följt alla steg i den här guiden hittills är det nog inte nödvändigt att även lägga till en brandvägg i mixen, men det är bra att förstå dina alternativ.

    Se även

    • Använda Iptables på Linux

    referenser

    • Optimera din DV-server (mediatemple.net)
    • xcache