12Sep
Wanneer u een speciale virtuele server voor het uitvoeren van uw website krijgt, is de kans groot dat deze voor iedereen is geconfigureerd en niet is aangepast om de prestaties voor het uitvoeren van een website te maximaliseren.
Inhoud[verbergen]
|
Overzicht
Er zijn een aantal probleemgebieden waar we niet tevreden zijnt om prestaties te maximaliseren:
- Linux-configuratie
Er zijn gewoonlijk draaiende services die niet nodig zijn, geheugenverlies dat kan worden gebruikt voor meer verbindingen. - MySQL-configuratie
Vaak zijn de standaardinstellingen gebaseerd op een kleine server. We kunnen een paar belangrijke wijzigingen toevoegen om de prestaties aanzienlijk te verbeteren. - Apache-configuratie
Standaard installeren de meeste hostingproviders apache met bijna elke geïnstalleerde module. Er is geen reden om modules te laden als u ze nooit gaat gebruiken. - PHP-configuratie
De standaard PHP-configuratie is op dezelfde manier opgeblazen, er zijn meestal een ton onnodige extra modules geïnstalleerd. - PHP Opcode Cache
In plaats van PHP toe te staan de scripts elke keer opnieuw te compileren, zal een opcodecache de gecompileerde scripts in het geheugen cachen voor enorme prestatieverbetering. - Back-ups
Zou waarschijnlijk wat geautomatiseerde back-ups moeten instellen, aangezien uw hostingprovider het niet voor u zal doen. - Beveiliging
Natuurlijk is Linux standaard voldoende beveiligd, maar er zijn meestal een paar stralende beveiligingsproblemen die je kunt oplossen met een paar snelle instellingen.
Linux-configuratie
Er zijn nogal wat aanpassingen die u kunt doen, die enigszins kunnen variëren op basis van de server die u gebruikt. Deze aanpassingen zijn voor een server waarop CentOS wordt uitgevoerd, maar deze moeten voor de meeste DV-servers werken.
DNS uitschakelen
Als uw hostingprovider de DNS voor uw domein( waarschijnlijk) afhandelt, kunt u de DNS-service uitschakelen.
dns deactiveren /etc/init.d/ met de naam stop chmod 644 /etc/init.d/ met de naamDe opdracht chmod verwijdert de execute-machtiging van het script en voorkomt dat deze wordt uitgevoerd bij het opstarten.
Schakel SpamAssassain
uit Als u geen e-mailaccounts op uw server zelf gebruikt, moet u geen anti-spamprogramma's gebruiken.(Zie ook Google Apps, een veel betere e-mailoplossing)
/etc/init.d/ psa-spamassassin stop chmod 644 /etc/init.d/ psa-spamassassinSchakel xinetd
uit Het xinetd-proces herbergt een aantal andere processen, die geen van alle nuttig zijn voor een typische webserver.
/etc/init.d/ xinetd stop chmod 644 /etc/init.d/ xinetdLimiet Plesk Memory Gebruik
Als u het plesk-paneel gebruikt, kunt u het dwingen minder geheugen te gebruiken door een optiedossier toe te voegen.
vi /usr/local/psa/admin/conf/ httpsd.custom.includeVoeg de volgende regels toe aan het bestand:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Merk op dat deze optie bekend staat om te werken op MediaTemple DV-servers, maar niet is gecontroleerd op andere.(Zie referenties)
Plesk uitschakelen of uitschakelen( optioneel)
Als u Plesk eenmaal per jaar gebruikt, is er zeer weinig reden om het helemaal te laten staan. Merk op dat deze stap volledig optioneel is en iets geavanceerder.
Voer de volgende opdracht uit om plesk uit te schakelen:
/etc/init.d/ psa stopU kunt het uitschakelen bij opstarten door het uitvoeren van de volgende opdracht:
chmod 644 /etc/init.d/ psaMerk op dat als u het uitschakelt, u het niet handmatig kunt starten zonderverander de bestandsrechten terug( chmod u + x).
MySQL Configuratie
Query-cache inschakelen
Open uw /etc/ my.cnf-bestand en voeg de volgende regels toe in uw [mysqld] -sectie als volgt:
[mysqld] query-cache-type = 1 query-cache-size = 8MU kuntvoeg meer geheugen toe aan de query-cache als u dat wilt, maar gebruik niet te veel.
TCP / IP uitschakelen
Een verrassend aantal hosts staat standaard toegang tot MySQL op TCP / IP toe, wat geen zin heeft voor een website. U kunt uitzoeken of mysql luistert op TCP / IP door de volgende opdracht uit te voeren:
netstat -an |grep 3306Om uit te schakelen, voeg je de volgende regel toe aan je /etc/ my.cnf-bestand:
skip-networkingApache-configuratie
Open je httpd.conf-bestand, vaak te vinden in /etc/httpd/conf/ httpd.conf
Zoek de regel die er zo uitziet:
Time-out 120En verander dit in:
Time-out 20Zoek nu de sectie die deze regels bevat, en pas deze aan op iets soortgelijks:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000PHP Configuratie
Een van de dingen omHoud er rekening mee dat bij het aanpassen van een server op het PHP-platform elke apache-thread PHP op een andere locatie in het geheugen zal laden. Dit betekent dat als een ongebruikte module 256k geheugen aan PHP toevoegt, u in 40 apache-threads 10MB aan geheugen verspilt.
Onnodige PHP-modules verwijderen
U moet uw php.ini-bestand vinden. Dit bestand bevindt zich meestal op /etc/ php.ini( Merk op dat in sommige distributies er een /etc/php.d/-directory met een aantal. ini-bestanden zal zijn, één voorelke module.
Geef commentaar op eventuele laadmoduullijnen met deze modules:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: Hier kunt u meer informatie toevoegen.
PHP Opcode Cache
Daarzijn een aantal opcode caches die u kunt gebruiken, waaronder APC, eAccelerator en Xcache, de laatste is mijn persoonlijke voorkeur vanwege stabiliteit.
Download xcache en pak het uit in een map en voer de volgende opdrachten uit de xcache-bron uitmap:
phpize. /configure --enable-xcache make make install makenOpen uw php.ini bestand envoeg een nieuw gedeelte toe voor xcache. U moet de paden aanpassen als uw php-modules ergens anders worden geladen.
vi /etc/ php.iniVoeg het volgende gedeelte toe aan het bestand:
[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "mijngebruikersnaam" xcache.admin.pass = "putanmd5hashhere"[xcache];Verander xcache.size om de grootte van de opcode cache af te stellen. Xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Verander xcache.var_size om de grootte van de variabele cache aan te passen 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 = Off xcache.readonly_protection =Op xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Op xcache.stat = Op xcache.optimizer = UitTodo: Moet dit een beetje uitbreiden en een link naar xcache in de referenties.
Back-ups
Er is heel weinig meer belangrijk dan geautomatiseerde back-ups van uw website. Je kunt misschien momentopnameback-ups krijgen van je hostingprovider, die ook erg handig zijn, maar ik heb ook liever automatische back-ups.
Creëer geautomatiseerd back-up script
Ik begin meestal met het maken van een / backups directory, met daaronder een /backups/-bestanden-map. U kunt deze paden aanpassen als u dat wilt.
mkdir -p /backups/-bestandenMaak nu een backup.sh-script binnen de back-upmap:
vi /backups/ backup.shVoeg het volgende bij het bestand en pas zo nodig de paden en het mysqldump-wachtwoord aan:
#!/bin/ sh THEDATE = `datum +% 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/ mijn-website-pad / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar vind /backups/files/-site * -mtime +5 -exec rm{ } \;zoek /backups/files/ db * -mtime +5 -exec rm{ } \;Het script maakt eerst een datumvariabele zodat alle bestanden dezelfde naam krijgen voor een enkele back-up, vervolgens de database dumpt, de webbestanden deelt en deze gzips. De find-opdrachten worden gebruikt om bestanden die ouder zijn dan 5 dagen te verwijderen, omdat u niet wilt dat er op uw schijf onvoldoende ruimte is.
Maak het script uitvoerbaar door de volgende opdracht uit te voeren:
chmod u + x /backups/ backup.shVervolgens moet u deze toewijzen om automatisch door cron te worden uitgevoerd. Zorg ervoor dat u een account gebruikt dat toegang heeft tot de map met back-ups.
crontab -eVoeg de volgende regel toe aan de crontab:
1 1 * * * /backups/ backup.shU kunt het script van tevoren testen door het uit te voeren terwijl u bent ingelogd op het gebruikersaccount.(Ik voer de back-ups normaal gesproken uit als root)
Sync-back-ups off-site met Rsync
Nu u geautomatiseerde back-ups hebt van uw server die wordt uitgevoerd, kunt u deze ergens anders synchroniseren met behulp van het rsync-hulpprogramma. Lees dit artikel over het instellen van SSH-sleutels voor automatisch aanmelden: Openbare SSH-sleutel toevoegen aan server op afstand in één opdracht
U kunt dit testen door dit commando op een linux- of Mac-machine op een andere locatie uit te voeren( Iheb een linux-server thuis, waar ik dit gebruik)
rsync -a [email protected]: /backups/files/ * /offsitebackups/Dit zal een behoorlijke tijd duren om de eerste keer te starten, maar aan het einde zou uw lokale computer een kopie moeten hebbenvan de bestandsmap in de /offsitebackups/-map.(Zorg ervoor dat u die map aanmaakt voordat u het script uitvoert)
U kunt dit plannen door het aan een crontab-regel toe te voegen:
crontab -eVoeg de volgende regel toe, die rsync elk uur na 45 minuten zal uitvoeren. Je zult merken dat we hier het volledige pad naar rsync gebruiken.
45 * * * * /usr/bin/ rsync -a [email protected]: /backups/files/ * /offsitebackups/U zou kunnen plannen dat deze op een ander tijdstip of slechts eenmaal per dag wordt uitgevoerd. Dat is echt aan jou.
Merk op dat er veel hulpprogramma's zijn waarmee je kunt synchroniseren via ssh of ftp. U hoeft rsync niet te gebruiken.
Beveiliging
Het eerste dat u wilt doen is ervoor zorgen dat u een regulier gebruikersaccount hebt om via ssh te gebruiken, en zorg ervoor dat u su kunt gebruiken om naar root te schakelen. Het is een heel slecht idee om direct in te loggen voor root via ssh.
Schakel root-aanmelding over SSH
uit Bewerk het /etc/ssh/ sshd_config-bestand en zoek naar de volgende regel:
#PermitRootLogin yesVerander die regel om er zo uit te zien:
PermitRootLogin neeZorg ervoor dat u een regulier gebruikersaccount hebt en kunt su naarroot voordat u deze wijziging aanbrengt, anders kunt u zichzelf buitensluiten.
SSH Versie 1 uitschakelen
Er is echt geen reden om iets anders te gebruiken dan SSH versie 2, omdat het veiliger is dan eerdere versies. Bewerk het /etc/ssh/ sshd_config bestand en zoek naar de volgende sectie:
#Protocol 2,1 Protocol 2Zorg ervoor dat u Protocol 2 alleen gebruikt zoals getoond.
Herstart SSH-server
Nu moet u de SSH-server opnieuw opstarten om dit effect te laten hebben.
/etc/init.d/ sshd restartCheck for Open Ports
U kunt de volgende opdracht gebruiken om te zien op welke poorten de server luistert:
netstat -an |grep LISTENJe zou echt niets anders moeten hebben dan poorten 22, 80 en mogelijk 8443 voor plesk.
Een firewall instellen
Hoofdartikel: Iptables gebruiken op Linux
U kunt optioneel een iptables-firewall instellen om meer verbindingen te blokkeren. Ik blokkeer gewoonlijk bijvoorbeeld de toegang tot andere poorten dan die van mijn werknetwerk. Als je een dynamisch IP-adres hebt, wil je die optie vermijden.
Als je tot nu toe al de stappen in deze handleiding hebt gevolgd, is het waarschijnlijk niet nodig om ook een firewall aan de mix toe te voegen, maar het is goed om je opties te begrijpen.
Zie ook
- Iptables op Linux gebruiken
Referenties
- Uw DV-server optimaliseren( mediatemple.net)
- XCache