Når du får en dedikeret virtuel server til at køre dit websted, er chancerne gode, at den er konfigureret til alle og ikke tilpasset til at maksimere ydeevnen til at køre et websted.
Indhold[ skjule ]
|
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, der spilder hukommelse, der kan bruges til flere forbindelser. -
MySQL-konfiguration
Ofte er standardindstillingerne baseret på en lille server, vi kan tilføje et par 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 ikke nogensinde vil bruge dem. -
PHP-konfiguration
Standard-PHP-konfigurationen er ligeledes oppustet, der er normalt masser af unødvendige ekstra moduler installeret. -
PHP Opcode-cache
I stedet for at tillade PHP at kompilere scriptsne hver eneste gang, vil en opcode-cache cache de kompilerede scripts i hukommelsen for enorme ydeevneforøgelser. -
Sikkerhedskopier
Skal sandsynligvis konfigurere nogle automatiske sikkerhedskopier, da din hostingudbyder ikke vil gøre det for dig. -
Sikkerhed
Sikker på, Linux er sikker nok som standard, men der er normalt nogle skarpe sikkerhedsproblemer, som du kan løse med et par hurtige indstillinger.
Linux-konfiguration
Der er et stort antal tweaks, du kan udføre, som vil variere lidt afhængigt af den server, du bruger. Disse tweaks er til en server, der kører CentOS, men de skal fungere for de fleste DV-servere.
Deaktiver DNS
Hvis din hostingudbyder håndterer DNS for dit domæne (sandsynligt), kan du deaktivere, at DNS-tjenesten kører.
deaktiver dns /etc/init.d/navngivet stop chmod 644 /etc/init.d/navn
Kommandoen chmod fjerner eksekveringstilladelse fra scriptet og forhindrer den i at køre ved opstart.
Deaktiver SpamAssassin
Hvis du ikke bruger e-mail-konti på selve serveren, skal du ikke gider at køre anti-spam-værktøjer. (Du skal også tjekke Google Apps, meget bedre e-mail-løsning)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Deaktiver xinetd
Xinetd-processen huser 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 Plesk-hukommelsesbrug
Hvis du bruger plesk-panelet, kan du tvinge det til at bruge mindre hukommelse ved at tilføje en indstillingsfil.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Føj følgende linjer til filen:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Bemærk, at denne indstilling er kendt for at arbejde på MediaTemple DV-servere, men er ikke blevet kontrolleret på andre. (Se Referencer )
Deaktiver eller sluk for Plesk (valgfrit)
Hvis du kun bruger Plesk en gang om året, er der meget lidt grund til at lade det køre overhovedet. 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] forespørgsel-cache-type = 1 forespørgsel-cache-størrelse = 8M
Du kan tilføje mere hukommelse til forespørgselscachen, hvis du vil, men ikke bruge for meget.
Deaktiver TCP / IP
Et overraskende antal værter muliggør 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 skal du tilføje følgende linje til din /etc/my.cnf-fil:
spring over netværk
Apache-konfiguration
Åbn din httpd.conf-fil, der ofte findes i /etc/httpd/conf/httpd.conf
Find den linje, der ser sådan ud:
Timeout 120
Og skift det til dette:
Timeout 20
Find nu sektionen, 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, man skal huske på, når man tilpasser en server på PHP-platformen, er at hver eneste apache-tråd vil indlæse PHP et separat sted i hukommelsen. Dette betyder, at hvis et ubrugt modul tilføjer 256k hukommelse til PHP, spilder du på tværs af 40 apache-tråde 10 MB hukommelse.
Fjern unødvendige PHP-moduler
Du bliver nødt til at finde din php.ini-fil, som normalt findes på /etc/php.ini (Bemærk at der i nogle distributioner vil være en /etc/php.d/ mappe med et antal .ini filer, en til hvert modul.
Kommenter eventuelle belastningsmodullinjer med disse moduler:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: Tilføj flere oplysninger her.
PHP Opcode-cache
Der er et antal opcode-cache, som du kan bruge, herunder APC, eAccelerator og Xcache, hvor 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-kildekataloget:
phpize ./configure --enable-xcache lave foretage installation
Åbn din php.ini-fil, og tilføj en ny sektion til xcache. Du bliver nødt til at justere stierne, hvis dine php-moduler indlæses fra et andet sted.
vi /etc/php.ini
Føj følgende afsnit til filen:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "mit brugernavn" xcache.admin.pass = "putanmd5hashhere" [xcache] ; Skift xcache.size for at indstille størrelsen på opcode-cachen 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å den variable 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 = Til xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Til xcache.stat = Til xcache.optimizer = Fra
Todo: Brug for at udvide dette lidt og linke til xcache i referencerne.
Sikkerhedskopier
Der er meget lidt vigtigere end at have automatiske sikkerhedskopier af dit websted. Du kan muligvis få snapshot-sikkerhedskopier fra din hostingudbyder, hvilket også er meget nyttigt, men jeg foretrækker også at have automatiserede sikkerhedskopier.
Opret automatisk sikkerhedskopieringsscript
Jeg starter normalt med at oprette en / backups-mappe med en / backups / files-katalog under den. Du kan justere disse stier, hvis du vil.
mkdir -p / sikkerhedskopier / filer
Opret nu et backup.sh-script inde i sikkerhedskopimappen:
vi /backups/backup.sh
Føj følgende til filen ved at justere stierne og mysqldump-adgangskoden 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 / my-website-path / httpdocs
gzip /backups/files/sitebackup$THEDATE.tar
find / sikkerhedskopier / filer / site * -mtime +5 -exec rm {} \;
find / sikkerhedskopier / filer / db * -mtime +5 -exec rm {} \;
Scriptet opretter først en datovariabel, så alle filerne bliver navngivet ens for en enkelt sikkerhedskopi, derefter dumpes databasen, opjusterer webfilerne og gzips dem. Findkommandoer bruges til at fjerne filer, der er ældre end 5 dage, da du ikke vil have, at dit drev løber tør for plads.
Gør scriptet eksekverbart ved at køre følgende kommando:
chmod u + x / backup / backup.sh
Derefter skal du tildele det til at køre automatisk af cron. Sørg for at bruge en konto, der har adgang til sikkerhedskopimappen.
crontab -e
Fø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 uden for webstedet med Rsync
Nu hvor du har automatiserede sikkerhedskopier af din server, der kører, kan du synkronisere dem et andet sted ved hjælp af rsync-værktøjet. Du vil gerne læse denne artikel om, hvordan du konfigurerer ssh-nøgler til automatisk login: Føj offentlig SSH-nøgle til ekstern server i en enkelt kommando
Du kan teste dette ved at køre denne kommando på en Linux- eller Mac-maskine et andet sted (jeg har en linux-server derhjemme, det er her jeg kører dette)
rsync -a [email protected]: / sikkerhedskopier / filer / * / offsitebackups /
Dette vil tage et stykke tid at køre første gang, men i slutningen skal din lokale computer have en kopi af filmappen i / offsitebackups / biblioteket. (Sørg for at oprette den 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 kører rsync hver time ved 45-minutters markeringen. Du vil bemærke, at vi bruger den fulde sti til rsync her.
45 * * * * / usr / bin / rsync -a [email protected]: / sikkerhedskopier / filer / * / offsitebackups /
Du kan planlægge, at den kører 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
Den første ting du vil gøre er at sikre dig, at du har en almindelig brugerkonto, der skal bruges gennem 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 rodindlogning over SSH
Rediger / etc / ssh / sshd_config filen, og se efter følgende linje:
#PermitRootLogin ja
Skift linjen for at se sådan ud:
PermitRootLogin-nr
Sørg for, at du har en almindelig brugerkonto og kan su til root, før du foretager denne ændring, ellers kan du låse dig selv ude.
Deaktiver SSH version 1
Der er virkelig ingen grund til at bruge andet end SSH version 2, da den er mere sikker end tidligere versioner. Rediger filen / etc / ssh / sshd_config, og se 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å denne til at træde i kraft.
/etc/init.d/sshd genstart
Kontroller 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 andet at lytte end port 22, 80 og muligvis 8443 til plesk.
Konfigurer en firewall
Du kan eventuelt konfigurere en iptables-firewall for at blokere for flere forbindelser. For eksempel blokerer jeg normalt adgang til andre porte end fra mit arbejdsnetværk. Hvis du har en dynamisk IP-adresse, vil du undgå denne mulighed.
Hvis du allerede har fulgt alle trin i denne vejledning hidtil, er det sandsynligvis ikke nødvendigt at tilføje en firewall til blandingen, men det er godt at forstå dine muligheder.
Se også
- Brug af Iptables på Linux