Startpagina » hoe » Een toegewijde virtuele webserver aanpassen

    Een toegewijde virtuele webserver aanpassen

    Wanneer u een speciale virtuele server krijgt om uw website te laten draaien, 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]

    • 1. Overzicht
    • 2 Linux-configuratie
      • 2.1 Schakel DNS uit
      • 2.2 SpamAssassain uitschakelen
      • 2.3 Schakel xinetd uit
      • 2.4 Beperk het gebruik van het Plesk-geheugen
      • 2.5 Plesk uitschakelen of uitschakelen (optioneel)
    • 3 MySQL-configuratie
      • 3.1 Query-cache inschakelen
      • 3.2 Schakel TCP / IP uit
    • 4 Apache-configuratie
    • 5 PHP-configuratie
      • 5.1 Verwijder niet-benodigde PHP-modules
      • 5.2 PHP Opcode Cache
    • 6 Back-ups
      • 6.1 Creëer automatisch back-up script
      • 6.2 Back-ups synchroniseren Off-site met Rsync
    • 7 Beveiliging
      • 7.1 Schakel root-aanmelding over SSH uit
      • 7.2 Schakel SSH-versie 1 uit
      • 7.3 Start de SSH-server opnieuw op
      • 7.4 Controleer op Open poorten
      • 7.5 Stel een firewall in
    • 8 Zie ook
    • 9 Verwijzingen

    Overzicht

    Er zijn een aantal probleemgebieden waar we de prestaties willen maximaliseren:

    • Linux-configuratie
      Er zijn meestal services actief 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 cache op de cache de gecompileerde scripts in het geheugen opslaan voor enorme prestatieverbeteringen.
    • backups
      Zou waarschijnlijk wat geautomatiseerde back-ups moeten instellen, aangezien uw hostingprovider het niet voor u gaat doen.
    • Veiligheid
      Natuurlijk is Linux standaard voldoende beveiligd, maar er zijn meestal een paar opvallende 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.

    Schakel DNS uit

    Als uw hostingprovider de DNS voor uw domein (waarschijnlijk) afhandelt, kunt u de DNS-service uitschakelen.

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

    De 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 niet de moeite nemen om antispamhulpmiddelen te gebruiken. (Kijk ook eens naar Google Apps, een veel betere e-mailoplossing)

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

    Schakel xinetd uit

    Het xinetd-proces herbergt een aantal andere processen, waarvan geen enkele nuttig is voor een typische webserver.

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

    Beperk Plesk-geheugengebruik

    Als u het plesk-paneel gebruikt, kunt u het dwingen minder geheugen te gebruiken door een optiebestand toe te voegen.

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

    Voeg de volgende regels toe aan het bestand:

    MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

    Merk 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 heel 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 stop

    U kunt het uitschakelen tijdens het opstarten door de volgende opdracht uit te voeren:

    chmod 644 /etc/init.d/psa

    Merk op dat als je het uitschakelt, je het niet handmatig kunt starten zonder de bestandsrechten te wijzigen (chmod u + x).

    MySQL-configuratie

    Schakel query-cache in

    Open je /etc/my.cnf-bestand en voeg de volgende regels toe in je [mysqld] -sectie als volgt:

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

    U kunt desgewenst meer geheugen aan de query-cache toevoegen, maar gebruik niet te veel.

    Schakel TCP / IP uit

    Een verrassend aantal hosts maakt standaard toegang tot MySQL op TCP / IP mogelijk, 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 3306

    Om uit te schakelen, voeg je de volgende regel toe aan je /etc/my.cnf-bestand:

    skip-netwerken

    Apache-configuratie

    Open je httpd.conf bestand, vaak te vinden in /etc/httpd/conf/httpd.conf

    Zoek de regel die er zo uitziet:

    Time-out 120

    En verander het naar dit:

    Time-out 20

    Zoek nu het gedeelte met deze regels en pas het aan op iets soortgelijks:

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

    PHP-configuratie

    Een van de dingen om in gedachten te houden bij het aanpassen van een server op het PHP-platform is dat elke afzonderlijke apache-thread PHP gaat laden op een andere locatie in het geheugen. Dit betekent dat als een ongebruikte module 256k geheugen aan PHP toevoegt, je in 40 apache-threads 10MB geheugen verspilt.

    Verwijder niet-benodigde PHP-modules

    Je moet je php.ini-bestand vinden, dat meestal te vinden is op /etc/php.ini (Merk op dat er in sommige distributies een /etc/php.d/ -directory is met een aantal .ini-bestanden, één voor elke module.

    Geef commentaar op eventuele laadmodule lijnen met deze modules:

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

    Todo: voeg hier meer informatie toe.

    PHP Opcode Cache

    Er zijn 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 vanuit de xcache-brondirectory:

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

    Open uw php.ini-bestand en voeg een nieuwe sectie voor xcache toe. U moet de paden aanpassen als uw php-modules ergens anders worden geladen.

    vi /etc/php.ini

    Voeg 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 = Uit

    Todo: Noodzaak om dit een beetje uit te breiden en te linken naar xcache in de referenties.

    backups

    Er is heel weinig meer belangrijk dan geautomatiseerde back-ups van uw website. U kunt misschien momentopnameback-ups krijgen van uw hostingprovider, die ook erg handig zijn, maar ik geef er de voorkeur aan ook automatische back-ups te hebben.

    Maak een geautomatiseerd back-up script

    Ik begin meestal met het maken van een / backups directory, met een / backups / files directory eronder. U kunt deze paden aanpassen als u dat wilt.

    mkdir -p / backups / bestanden

    Maak nu een backup.sh-script in de map backups:

    vi /backups/backup.sh

    Voeg het volgende toe aan het bestand door de paden en het mysqldump-wachtwoord aan te passen zoals nodig:

    #! / bin / sh THEDATE = "datum +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /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 find / backups / files / site * -mtime +5 -exec rm  \; find / 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.sh

    Vervolgens moet je het 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 -e

    Voeg de volgende regel toe aan de crontab:

    1 1 * * * /backups/backup.sh

    U kunt het script van tevoren testen door het uit te voeren terwijl u bent ingelogd op het gebruikersaccount. (Ik voer de back-ups gewoonlijk uit als root)

    Back-ups synchroniseren Off-site met Rsync

    Nu u automatische 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 externe server in één opdracht

    Je kunt dit uitproberen door dit commando op een Linux- of Mac-machine op een andere locatie uit te voeren (ik heb thuis een Linux-server, waarop ik dit uitvoer)

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

    Dit zal een tijdje duren voordat de eerste keer wordt uitgevoerd, maar aan het eind zou uw lokale computer een kopie van de bestandenmap in de / offsitebackups / map moeten hebben. (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 -e

    Voeg de volgende regel toe, die elk uur rsync uitvoert na 45 minuten. Je zult merken dat we hier het volledige pad naar rsync gebruiken.

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

    U zou het kunnen plannen om op een ander tijdstip of slechts eenmaal per dag te worden 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.

    Veiligheid

    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 Login over SSH uit

    Bewerk het bestand / etc / ssh / sshd_config en zoek naar de volgende regel:

    #PermitRootLogin Ja

    Verander die regel om er zo uit te zien:

    PermitRootLogin nr

    Zorg ervoor dat je een standaard gebruikersaccount hebt en su kunt rootten voordat je deze wijziging aanbrengt, anders sluit je jezelf misschien af.

    Schakel SSH-versie 1 uit

    Er is echt geen reden om iets anders te gebruiken dan SSH versie 2, omdat het veiliger is dan eerdere versies. Bewerk het bestand / etc / ssh / sshd_config en zoek het volgende gedeelte:

    #Protocol 2,1 Protocol 2

    Zorg ervoor dat u Protocol 2 alleen gebruikt zoals weergegeven.

    Start SSH-server opnieuw

    Nu moet u de SSH-server opnieuw opstarten om dit effect te laten hebben.

    /etc/init.d/sshd opnieuw opstarten

    Controleer op Open poorten

    U kunt de volgende opdracht gebruiken om te zien op welke poorten de server luistert:

    netstat -an | grep LISTEN

    Je zou echt niets anders moeten hebben dan poorten 22, 80 en mogelijk 8443 voor plesk.

    Stel een firewall in

    Hoofd artikel: Iptables gebruiken op Linux

    U kunt optioneel een iptables-firewall instellen om meer verbindingen te blokkeren. Ik blokkeer bijvoorbeeld gewoonlijk de toegang tot andere poorten dan die van mijn werknetwerk. Als je een dynamisch IP-adres hebt, wil je die optie vermijden.

    Als je al de stappen in deze handleiding tot nu toe 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 gebruiken op Linux

    Referenties

    • Uw DV-server optimaliseren (mediatemple.net)
    • xcache