Hjemmeside » hvordan » Tweaking en dedikeret virtuel webserver

    Tweaking en dedikeret virtuel webserver

    Når du får en dedikeret virtuel server til at køre din hjemmeside, er chancerne gode, at den er konfigureret til alle, og ikke tilpasset for at maksimere ydeevnen til at køre en hjemmeside.

    Indhold

    [skjule]

    • 1 Oversigt
    • 2 Linux-konfiguration
      • 2.1 Deaktiver DNS
      • 2.2 Deaktiver SpamAssassain
      • 2.3 Deaktiver xinetd
      • 2.4 Begræns brug af Plesk-hukommelse
      • 2.5 Deaktiver eller sluk Plesk (valgfrit)
    • 3 MySQL-konfiguration
      • 3.1 Aktiver forespørgselscache
      • 3.2 Deaktiver TCP / IP
    • 4 Apache-konfiguration
    • 5 PHP konfiguration
      • 5.1 Fjern unødvendige PHP-moduler
      • 5.2 PHP Opcode Cache
    • 6 Backups
      • 6.1 Opret automatisk backup script
      • 6.2 Synkroniser Backups Off-Site med Rsync
    • 7 Sikkerhed
      • 7.1 Deaktiver root login over SSH
      • 7.2 Deaktiver SSH Version 1
      • 7.3 Genstart SSH Server
      • 7.4 Check for åbne porte
      • 7.5 Opsætning af en firewall
    • 8 Se også
    • 9 Referencer

    Oversigt

    Der er en række problemområder, hvor vi vil maksimere ydeevnen:

    • Linux konfiguration
      Der kører normalt tjenester, der ikke behøver at være, spildende hukommelse, som kan bruges til flere forbindelser.
    • MySQL konfiguration
      Standardindstillingerne er ofte baseret på en lille server, vi kan tilføje nogle få vigtige ændringer for at øge ydeevnen meget.
    • Apache konfiguration
      Som standard installerer de fleste hostingudbydere apache med næsten alle moduler installeret. Der er ingen grund til at indlæse moduler, hvis du aldrig bruger dem.
    • PHP konfiguration
      Standard PHP konfiguration er ligeledes opustet, der er normalt et ton unødvendige ekstra moduler installeret.
    • PHP Opcode Cache
      I stedet for at tillade PHP at genopbygge scripts hver eneste gang, vil en opcode cache cache de kompilerede scripts i hukommelsen for store præstationsforøgelser.
    • Backups
      Skal sandsynligvis opsætte nogle automatiske sikkerhedskopier, da din hostingudbyder ikke vil gøre det for dig.
    • Sikkerhed
      Sikker på, Linux er sikkert nok som standard, men der er normalt nogle skarpe sikkerhedsproblemer, som du kan rette med nogle få hurtige indstillinger.

    Linux konfiguration

    Der er ganske mange tweaks du kan gøre, som vil variere lidt baseret på den server, du bruger. Disse tweaks er for en server, der kører CentOS, men de skal arbejde for de fleste DV-servere.

    Deaktiver DNS

    Hvis din hostingudbyder håndterer DNS'en for dit domæne (sandsynligvis), kan du deaktivere DNS-tjenesten fra at køre.

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

    Kommandoen chmod fjerner eksekutiv tilladelse fra scriptet, og stopper det fra at køre ved opstart.

    Deaktiver SpamAssassain

    Hvis du ikke bruger e-mail-konti på din server selv, bør du ikke gider kørsel af anti-spam-værktøjer. (Du bør også tjekke ud Google Apps, meget bedre email-løsning)

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

    Deaktiver xinetd

    Xinetd-processen indeholder en række andre processer, hvoraf ingen er nyttige til en typisk webserver.

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

    Begræns brug af Plesk-hukommelse

    Hvis du bruger plesk panelet, kan du tvinge det til at bruge mindre hukommelse ved at tilføje en optionsfil.

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

    Tilføj følgende linjer til filen:

    MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

    Bemærk, at denne mulighed er kendt for at fungere på MediaTemple DV-servere, men er ikke blevet kontrolleret på andre. (Se referencer)

    Deaktiver eller sluk Plesk (valgfrit)

    Hvis du kun bruger Plesk en gang om året, er der meget lidt grund til at lade det køre i det hele taget. Bemærk, at dette trin er helt valgfrit, og lidt mere avanceret.

    Kør følgende kommando for at slukke for plesk:

    /etc/init.d/psa stop

    Du kan deaktivere den fra at køre ved opstart ved at køre følgende kommando:

    chmod 644 /etc/init.d/psa

    Bemærk, at hvis du deaktiverer det, kan du ikke starte det manuelt uden at ændre filtilladelserne tilbage (chmod u + x).

    MySQL-konfiguration

    Aktivér forespørgselscache

    Åbn din /etc/my.cnf fil og tilføj følgende linjer i din [mysqld] sektion som denne:

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

    Du kan tilføje mere hukommelse til forespørgselscache, hvis du vil have det, men brug ikke for meget.

    Deaktiver TCP / IP

    Et overraskende antal værter giver som standard adgang til MySQL på TCP / IP, hvilket ikke giver mening for et websted. Du kan finde ud af om mysql lytter på TCP / IP ved at køre følgende kommando:

    netstat -an | grep 3306

    For at deaktivere, tilføj følgende linje til din /etc/my.cnf fil:

    skip-networking

    Apache Konfiguration

    Åbn din httpd.conf-fil, som ofte findes i /etc/httpd/conf/httpd.conf

    Find den linje, der ser sådan ud:

    Timeout 120

    Og ændre det til dette:

    Timeout 20

    Find nu den sektion, der indeholder disse linjer, og juster til noget lignende:

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

    PHP konfiguration

    En af de ting, du skal huske på, når du tilpasser en server på PHP-platformen, er, at hver enkelt apache-tråd skal indlæse PHP i en separat placering i hukommelsen. Dette betyder, at hvis et ubrugt modul tilføjer 256k hukommelse til PHP, på tværs af 40 apache tråde spilder du 10MB hukommelse.

    Fjern unødvendige PHP-moduler

    Du skal finde din php.ini-fil, som normalt findes på /etc/php.ini (Bemærk, at der i nogle distributioner vil være et /etc/php.d/-bibliotek med en række .ini-filer, en for hvert modul.

    Kommentere eventuelle loadmodule linjer med disse moduler:

    • ODBC
    • snmp
    • BOB
    • odbc pdo
    • MySQLi
    • ioncube-loader
    • jSON
    • imap
    • ldap
    • ncurses

    Todo: Tilføj flere oplysninger her.

    PHP Opcode Cache

    Der er en række opcode caches, som du kan bruge, herunder APC, eAccelerator og Xcache, den sidste er min personlige præference på grund af stabilitet.

    Download xcache og udpak det i en mappe, og kør derefter følgende kommandoer fra xcache-kildemappen:

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

    Åbn din php.ini-fil og tilføj et nyt afsnit til xcache. Du skal justere stierne, hvis dine php-moduler er indlæst fra et andet sted.

    vi /etc/php.ini

    Tilføj følgende afsnit til filen:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusnavn" xcache.admin.pass = "putanmd5hashhere" [xcache]; Skift xcache.size for at indstille 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; Skift xcache.var_size for at 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 = Fra xcache.readonly_protection = På xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = På xcache.stat = På xcache.optimizer = Fra

    Todo: Behov for at udvide dette lidt og link til xcache i referencerne.

    Backups

    Der er meget lidt mere vigtigt end at have automatiserede sikkerhedskopier af dit websted. Du kan muligvis få stillbilleder fra din hostingudbyder, som også er meget nyttige, men jeg foretrækker også at have automatiserede sikkerhedskopier også.

    Opret automatisk backup script

    Jeg starter som regel ved at oprette en / backup-mappe med en / / backups / files-mappe under den. Du kan justere disse stier, hvis du vil.

    mkdir -p / backups / filer

    Opret nu et backup.sh script inde i sikkerhedskopieringsmappen:

    vi /backups/backup.sh

    Tilføj følgende til filen, juster stier og mysqldump adgangskode efter 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-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm  \; find / backups / files / db * -mtime +5 -exec rm  \;

    Scriptet vil først oprette en datavariabel, så alle filerne bliver navngivet de samme for en enkelt backup, så dumper databasen, tars op webfilerne og gzips dem. Finde kommandoer bruges til at fjerne filer, der er ældre end 5 dage, da du ikke vil have dit drev ud af rummet.

    Gør scriptet eksekverbart ved at køre følgende kommando:

    chmod u + x /backups/backup.sh

    Næste skal du tildele det til at køre automatisk af cron. Sørg for at bruge en konto, der har adgang til sikkerhedskopieringsmappen.

    crontab -e

    Tilføj følgende linje til crontab:

    1 1 * * * /backups/backup.sh

    Du kan teste scriptet på forhånd ved at køre det, mens du er logget på brugerkontoen. (Jeg kører normalt backuperne som root)

    Synkroniser Backups Off-Site med Rsync

    Nu hvor du har automatiske sikkerhedskopier af din server, der kører, kan du synkronisere dem et andet sted ved at bruge rsync-værktøjet. Du vil gerne læse denne artikel om, hvordan du opsætter ssh-nøgler til automatisk login: Tilføj offentlig SSH-nøgle til fjernserver i en enkelt kommando

    Du kan teste dette ved at køre denne kommando på en Linux eller Mac-maskine på et andet sted (jeg har en linux-server derhjemme, hvilket er hvor jeg kører dette)

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

    Det tager et stykke tid at køre første gang, men i sidste ende skal din lokale computer have en kopi af filkataloget i / offsitebackups / directory. (Sørg for at oprette mappen, før du kører scriptet)

    Du kan planlægge dette ved at tilføje det til en crontab linje:

    crontab -e

    Tilføj følgende linje, som vil køre rsync hver time ved 45 minutters mark. Du vil bemærke, at vi bruger den fulde sti til rsync her.

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

    Du kan planlægge det til at køre på et andet tidspunkt, eller kun én gang om dagen. Det er virkelig op til dig.

    Bemærk, at der er mange værktøjer, der giver dig mulighed for at synkronisere via ssh eller ftp. Du behøver ikke bruge rsync.

    Sikkerhed

    Den første ting du vil gøre er at sørge for, at du har en almindelig brugerkonto til brug via ssh, og sørg for at du kan bruge su til at skifte til root. Det er en meget dårlig idé at tillade direkte login til root over ssh.

    Deaktiver root login over SSH

    Rediger filen / etc / ssh / sshd_config, og søg efter følgende linje:

    #PermitRootLogin ja

    Skift den linje for at se sådan ud:

    PermitRootLogin nr

    Sørg for, at du har en almindelig brugerkonto, og at du kan rotere, før du foretager denne ændring, ellers kan du låse dig selv.

    Deaktiver SSH Version 1

    Der er virkelig ingen grund til at bruge andet end SSH version 2, da det er mere sikkert end tidligere versioner. Rediger filen / etc / ssh / sshd_config, og søg efter følgende afsnit:

    # Protokol 2.1 Protokol 2

    Sørg for, at du kun bruger protokol 2 som vist.

    Genstart SSH Server

    Nu skal du genstarte SSH-serveren for at få dette til at virke.

    /etc/init.d/sshd genstart

    Tjek for åbne porte

    Du kan bruge følgende kommando til at se, hvilke porte serveren lytter til:

    netstat -an | grep LISTEN

    Du burde virkelig ikke have noget andet at høre end havne 22, 80 og muligvis 8443 for plesk.

    Opsæt en firewall

    Hovedartikel: Brug af Iptables på Linux

    Du kan eventuelt opsætte en iptables firewall for at blokere flere forbindelser. For eksempel blokkerer jeg normalt adgang til andre havne end fra mit arbejdsnetværk. Hvis du har en dynamisk IP-adresse, vil du gerne undgå denne mulighed.

    Hvis du allerede har fulgt alle trin i denne vejledning hidtil, er det sandsynligvis ikke nødvendigt at også tilføje en firewall til blandingen, men det er godt at forstå dine muligheder.

    Se også

    • Brug af Iptables på Linux

    Referencer

    • Optimering af din DV-server (mediatemple.net)
    • xcache