12Sep
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]
|
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/ navngivetKommandoen 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-spamassassinDeaktiver 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/ xinetdBegræ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.includeTilføj følgende linjer til filen:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Bemæ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 stopDu kan deaktivere den fra at køre ved opstart ved at køre følgende kommando:
chmod 644 /etc/init.d/ psaBemæ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 = 8MDu 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 3306For at deaktivere, tilføj følgende linje til din /etc/ my.cnf-fil:
hoppe-netværkApache-konfiguration
Åbn din httpd.conf-fil, som ofte findes i /etc/httpd/conf/ httpd.conf
Find den linje, der ser sådan ud:
Timeout 120Og skift til dette:
Timeout 20Find nu det afsnit, der indeholder disse linjer, og juster til noget lignende:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000PHP-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.iniTilfø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 = FraTodo: 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/-filerOpret nu et backup.sh-script i sikkerhedskopieringsmappen:
vi /backups/ backup.shTilfø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.shNæ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 -eTilføj følgende linje til crontab:
1 1 * * * /backups/ backup.shDu 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 -eTilfø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 jaSkift denne linje for at se sådan ud:
PermitRootLogin noSø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 2Sø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 genstartCheck for åbne porte
Du kan bruge følgende kommando til at se, hvilke porte serveren lytter til:
netstat -an |grep LISTEDu 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