12Sep

Tweaking en dedikeret virtuel webserver

click fraud protection

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

[skjul]

  • 1 Oversigt
  • 2 Linux-konfiguration
    • 2.1 Deaktiver DNS
    • 2.2 Deaktiver SpamAssassain
    • 2.3 Deaktiver xinetd
    • 2.4 Begrænsning af Plesk-hukommelsesbrug
    • 2.5 Deaktiver eller sluk for 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 Sikkerhedskopier
    • 6.1 Opret Automatisk Backup Script
    • 6.2 Synkroniser Sikkerhedskopier Off-Site Med Rsync
  • 7 Sikkerhed
    • 7.1 Deaktiver RootLog ind Over SSH
    • 7.2 Deaktiver SSH Version 1
    • 7.3 Genstart SSH Server
    • 7.4 Kontroller for åbne porte
    • 7.5 Opsæt en firewall
  • 8 Se også
  • 9 Referencer
instagram viewer

Oversigt

Der er en række problemområder hvor vi want for at maksimere ydeevnen:

  • Linux-konfiguration
    Der kører normalt tjenester, der ikke behøver at være, spilder hukommelse, der kan bruges til flere forbindelser.
  • MySQL-konfiguration
    Ofte er standardindstillingerne 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 udarbejdede 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
    Visst, Linux er sikkert nok som standard, men der er normalt nogle klare 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 for dit domæne( sandsynligvis), kan du deaktivere DNS-tjenesten fra at køre.

deaktiver dns /etc/init.d/ navngiv stop chmod 644 /etc/init.d/ navngivet

Kommandoen chmod fjerner execute-tilladelse fra scriptet, hvilket 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 genere at køre 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ænsning af Plesk-hukommelse Anvendelse

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ændre filtilladelser tilbage( chmod u + x).

MySQL Configuration

Aktiver 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 kanTilføj mere hukommelse til forespørgselscachen, hvis du vil, 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:

hoppe-netværk

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 skift til dette:

Timeout 20

Find nu det afsnit, 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 atHusk, når tweaking en server på PHP-platformen er, at hver enkelt apache tråd skal laste op PHP på et separat sted 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 på nogle distributioner vil være en /etc/php.d/-mappe med en række. ini-filer, en tilhvert modul.

Kommentér eventuelle moduler med disse moduler:

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

Todo: Føj flere oplysninger her.

PHP Opcode Cache

Derer 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 kildenmappe:

phpize. /configure --enable-xcache make make install

Åbn din php.ini-fil ogTilfø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 af ​​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: Trænger til 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.

Opret automatisk backup script

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

mkdir-/backups/-filer

Opret nu et backup.sh-script i sikkerhedskopieringsmappen:

vi /backups/ backup.sh

Tilføj følgende til filen, juster stierne og mysqldump-adgangskoden efter behov:

#!/bin/ sh THEDATE = `dato +% d% m% y% H% M` mysqldump -uadmin -pPASSWORD DATABASENAME & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ sitebackup $ THEDATE.tar /var/www/vhosts/ min hjemmeside-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. Findkommandoerne bruges til at fjerne filer, der er ældre end 5 dage, da du ikke ønsker, at dit drev skal løbe tør for plads.

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 sikkerhedskopierne som root)

Synkroniser sikkerhedskopier fra websted med Rsync

Nu hvor du har automatiske sikkerhedskopier af din server, der kører, kan du synkronisere dem et andet sted ved hjælp af rsync-hjælpeprogrammet. 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( jeghar en linux-server derhjemme, hvilket er hvor jeg kører dette)

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

Det tager lidt tid at køre første gang, men i sidste ende skal din lokale computer have en kopiaf filmappen i /offsitebackups/-mappen.(Sørg for at oprette den pågældende mappe, 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 den til at køre på et andet tidspunkt eller kun en 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

Det første 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 ide at tillade direkte login til root over ssh.

Deaktiver root login over SSH

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

#PermitRootLogin ja

Skift denne linje for at se sådan ud:

PermitRootLogin no

Sørg for at du har en almindelig brugerkonto og kan su tilroot 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 /etc/ssh/ sshd_config-filen, og søg efter følgende afsnit:

#Protocol 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

Check for åbne porte

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

netstat -an |grep LISTE

Du skal virkelig ikke have noget andet at lytte end porte 22, 80 og muligvis 8443 for plesk.

Opsætning af 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