12Sep

Optimieren eines dedizierten virtuellen Webservers

Wenn Sie einen dedizierten virtuellen Server für die Ausführung Ihrer Website erhalten, ist die Wahrscheinlichkeit groß, dass sie für alle Benutzer konfiguriert ist und nicht angepasst wurde, um die Leistung beim Ausführen einer Website zu maximieren.

Inhalt

[verstecken]

  • 1 Übersicht
  • 2 Linux-Konfiguration
    • 2.1 DNS deaktivieren
    • 2.2 SpamAssassain deaktivieren
    • 2.3 xinetd
    • deaktivieren 2.4 Plesk-Speicherauslastung beschränken
    • 2.5 Plesk deaktivieren oder deaktivieren( optional)
  • 3 MySQL-Konfiguration
    • 3.1 Abfragepuffer aktivieren
    • 3.2 Deaktivieren von TCP / IP
  • 4 Apache-Konfiguration
  • 5 PHP-Konfiguration
    • 5.1 Entfernen von nicht benötigten PHP-Modulen
    • 5.2 PHP-Opcode-Cache
  • 6 Backups
    • 6.1 Automatisches Backup-Skript erstellen
    • 6.2 Backups mit Rsync offline sichern
  • 7 Sicherheit
    • 7.1 Root deaktivierenAnmelden über SSH
    • 7.2 Deaktivieren von SSH Version 1
    • 7.3 Neustart von SSH Server
    • 7.4 Prüfen auf offene Ports
    • 7.5 Einrichten einer Firewall
  • 8 Siehe auch
  • 9 Referenzen

Übersicht

Es gibt eine Reihe von Problembereichen, in denen wir uns bewegent, um die Leistung zu maximieren:

  • Linux-Konfiguration
    Normalerweise werden Dienste ausgeführt, die nicht ausgeführt werden müssen, wodurch Speicher verschwendet wird, der für weitere Verbindungen verwendet werden kann.
  • MySQL Konfiguration
    Oft basieren die Standardeinstellungen auf einem kleinen Server, wir können ein paar wichtige Änderungen hinzufügen, um die Leistung zu erhöhen.
  • Apache-Konfiguration
    Standardmäßig installieren die meisten Hosting-Provider Apache mit fast jedem installierten Modul. Es gibt keinen Grund, Module zu laden, wenn Sie sie nie benutzen werden.
  • PHP-Konfiguration
    Die Standard-PHP-Konfiguration ist in ähnlicher Weise aufgebläht, es sind normalerweise eine Tonne unnötiger zusätzlicher Module installiert.
  • PHP-Opcode-Cache
    Statt PHP zu erlauben, die Skripte jedes Mal neu zu kompilieren, speichert ein Opcode-Cache die kompilierten Skripte im Speicher für enorme Leistungssteigerungen.
  • Backups
    Sollte wahrscheinlich einige automatische Backups einrichten, da Ihr Hosting-Provider es nicht für Sie tun wird.
  • Sicherheit
    Sicher, Linux ist standardmäßig sicher genug, aber es gibt normalerweise einige grelle Sicherheitsprobleme, die Sie mit ein paar schnellen Einstellungen beheben können.

Linux-Konfiguration

Es gibt eine ganze Reihe von Optimierungen, die Sie je nach verwendetem Server leicht vornehmen können. Diese Optimierungen gelten für einen Server, auf dem CentOS läuft, aber sie sollten für die meisten DV-Server funktionieren.

DNS deaktivieren

Wenn Ihr Hosting-Provider den DNS für Ihre Domain( wahrscheinlich) verarbeitet, können Sie die Ausführung des DNS-Service deaktivieren.

disable dns /etc/init.d/ mit dem Namen stop chmod 644 /etc/init.d/ mit dem Namen

Mit dem Befehl chmod wird die Ausführungsberechtigung aus dem Skript entfernt, so dass es beim Start nicht mehr ausgeführt werden kann.

SpamAssassain deaktivieren

Wenn Sie keine E-Mail-Konten auf Ihrem Server selbst verwenden, sollten Sie keine Anti-Spam-Tools ausführen.(Auch sollten Sie sich Google Apps, viel bessere E-Mail-Lösung, ansehen)

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

xinetd deaktivieren

Der xinetd-Prozess beherbergt eine Reihe anderer Prozesse, von denen keiner für einen typischen Webserver nützlich ist.

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

Plesk-Speicherverwendung beschränken

Wenn Sie das plesk-Panel verwenden, können Sie durch Verwendung einer Optionsdatei erzwingen, dass weniger Speicher belegt wird.

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

Fügen Sie der Datei die folgenden Zeilen hinzu:

MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

Beachten Sie, dass diese Option für MediaTemple DV-Server bekannt ist, jedoch nicht für andere.(Siehe Referenzen)

Deaktivieren oder Ausschalten von Plesk( optional)

Wenn Sie Plesk nur einmal pro Jahr verwenden, gibt es kaum einen Grund, es überhaupt laufen zu lassen. Beachten Sie, dass dieser Schritt vollständig optional und etwas weiter fortgeschritten ist.

Führen Sie den folgenden Befehl aus, um plesk zu deaktivieren:

/etc/init.d/ PSA beenden

Sie können die Ausführung beim Start deaktivieren, indem Sie den folgenden Befehl ausführen:

chmod 644 /etc/init.d/ ASA

Beachten Sie, dass Sie sie nicht manuell ohne Starten deaktivieren könnenÄndern der Dateiberechtigungen zurück( chmod u + x).

MySQL-Konfiguration

Abfrage-Cache aktivieren

Öffnen Sie Ihre /etc/ my.cnf-Datei und fügen Sie die folgenden Zeilen in Ihrem [mysqld] -Abschnitt wie folgt ein:

[mysqld] Abfrage-Cache-Typ = 1 Abfrage-Cache-Größe = 8M

Sie könnenFügen Sie dem Abfrage-Cache mehr Speicher hinzu, wenn Sie möchten, aber verwenden Sie nicht zu viel.

Deaktivieren von TCP / IP

Eine überraschende Anzahl von Hosts ermöglicht standardmäßig den Zugriff auf MySQL auf TCP / IP, was für eine Website nicht sinnvoll ist. Sie können herausfinden, ob mysql TCP / IP überwacht, indem Sie den folgenden Befehl ausführen:

netstat -an |grep 3306

Zum Deaktivieren fügen Sie die folgende Zeile zu Ihrer /etc/ my.cnf-Datei hinzu:

skip-networking

Apache-Konfiguration

Öffnen Sie Ihre httpd.conf-Datei, die häufig in /etc/httpd/conf/ gefunden wird httpd.conf

Suchen Sie die Zeile, die wie folgt aussieht:

Timeout 120

Und ändern Sie es in:

Timeout 20

Finden Sie nun den Abschnitt, der diese Zeilen enthält, und passen Sie auf etwas ähnliches:

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

PHP Konfiguration

Eines der Dinge zuDenken Sie daran, wenn Sie einen Server auf der PHP-Plattform optimieren, dass jeder einzelne Apache-Thread PHP an einem anderen Ort im Speicher laden wird. Das bedeutet, wenn ein unbenutztes Modul 256k Speicher zu PHP hinzufügt, über 40 Apache-Threads verschwenden Sie 10MB Speicher.

Entfernen von nicht benötigten PHP-Modulen

Sie müssen Ihre php.ini-Datei finden, die normalerweise unter /etc/ php.ini zu finden ist( Beachten Sie, dass es auf manchen Distributionen ein /etc/php.d/-Verzeichnis mit einer Anzahl von. ini-Dateien gibt, eine für

Kommentieren Sie alle Lademodulleitungen mit diesen Modulen:

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

Todo: Weitere Informationen hier

PHP Opcode Cache

ThereEs gibt eine Reihe von Opcode-Caches, die Sie verwenden können, einschließlich APC, eAccelerator und Xcache, wobei der letzte aufgrund meiner Stabilität meine persönliche Vorliebe ist

Laden Sie xcache herunter und extrahieren Sie ihn in ein Verzeichnis und führen Sie dann die folgenden Befehle aus der xcache-Quelle ausVerzeichnis:

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

Öffnen Sie Ihre php.ini Datei undfüge einen neuen Abschnitt für xcache hinzu. Sie müssen die Pfade anpassen, wenn Ihre PHP-Module von woanders geladen werden.

vi /etc/ php.ini

Fügen Sie der Datei den folgenden Abschnitt hinzu:

[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere"[xcache];Ändern Sie xcache.size, um die Größe des Opcode-Caches abzustimmen. Xcache.size = 16M xcache.shm_schema = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Ändern Sie xcache.var_size, um die Größe des Variablencache anzupassen. 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 = Aus xcache.readonly_protection =Auf xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Auf xcache.stat = Auf xcache.optimizer = Aus

Todo: Müssen Sie dies ein wenig erweitern und verlinken zu xcache in den Referenzen.

Backups

Es ist sehr wenig wichtiger als automatische Backups Ihrer Website. Sie können Snapshot-Backups von Ihrem Hosting-Provider erhalten, die ebenfalls sehr nützlich sind, aber ich bevorzuge auch automatisierte Backups.

Automatisches Backup-Skript

erstellen

Ich beginne normalerweise mit der Erstellung eines / backups-Verzeichnisses mit einem /backups/-Dateiverzeichnis darunter. Sie können diese Pfade anpassen, wenn Sie möchten.

mkdir -p /backups/-Dateien

Erstellen Sie nun ein backup.sh-Skript innerhalb des Backup-Verzeichnisses:

vi /backups/ backup.sh

Fügen Sie Folgendes zur Datei hinzu und passen Sie die Pfade und das mysqldump-Passwort wie erforderlich an:

#!/bin/ sh THEDATE = "Datum +% d% m% y% H% M" mysqldump -uadmin -pKENNWORT DATENBANKNAME & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ site-Sicherung $ THEDATE.tar /var/www/vhosts/ my-site-pfad / httpdocs gzip /backups/files/ site-Sicherung $ THEDATE.tar /backups/files/-Schnittstelle * -mtime +5 -exec rm{ } \;/backups/files/ finden db * -mtime +5 -exec rm{ } \;

Das Skript erstellt zuerst eine Datumsvariable, so dass alle Dateien für eine einzelne Sicherung gleich benannt werden. Anschließend wird die Datenbank ausgegeben, die Webdateien werden geparkt und die Dateien werden gezippt. Die Suchbefehle werden zum Entfernen von Dateien verwendet, die älter als 5 Tage sind, da das Laufwerk nicht über genügend Speicherplatz verfügen soll.

Führen Sie den folgenden Befehl aus, um das Skript ausführbar zu machen:

chmod u + x /backups/ backup.sh

Als Nächstes müssen Sie es zuweisen, damit es automatisch von cron ausgeführt wird. Stellen Sie sicher, dass Sie ein Konto verwenden, das Zugriff auf das Backup-Verzeichnis hat.

crontab -e

Fügen Sie der crontab die folgende Zeile hinzu:

1 1 * * * /backups/ backup.sh

Sie können das Skript im Voraus testen, indem Sie es ausführen, während Sie am Benutzerkonto angemeldet sind.(Ich führe die Backups normalerweise als root aus.)

Backups offline mit Rsync

synchronisieren Nachdem Sie nun automatisierte Backups Ihres Servers laufen haben, können Sie diese irgendwo anders synchronisieren, indem Sie das rsync-Dienstprogramm verwenden. In diesem Artikel erfahren Sie, wie Sie SSH-Schlüssel für die automatische Anmeldung einrichten können: Hinzufügen des öffentlichen SSH-Schlüssels zum Remoteserver in einem einzigen Befehl

Sie können dies testen, indem Sie diesen Befehl auf einem Linux- oder Mac-Computer an einem anderen Speicherort ausführenhabe einen Linux-Server zu Hause, wo ich das ausführe)

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

Dies wird eine Weile dauern, um das erste Mal zu starten, aber am Ende sollte dein lokaler Computer eine Kopie habendes Dateiverzeichnisses im Verzeichnis /offsitebackups/.(Stellen Sie sicher, dass Sie dieses Verzeichnis erstellen, bevor Sie das Skript ausführen)

Sie können dies planen, indem Sie es zu einer Crontab-Zeile hinzufügen:

crontab -e

Fügen Sie die folgende Zeile hinzu, die rsync jede Stunde an der 45-Minuten-Marke startet. Sie werden feststellen, dass wir hier den vollständigen Pfad zu rsync verwenden.

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

Sie könnten die Ausführung zu einem anderen Zeitpunkt oder nur einmal pro Tag planen. Das liegt wirklich an dir.

Beachten Sie, dass es viele Dienstprogramme gibt, mit denen Sie über ssh oder ftp synchronisieren können. Sie müssen rsync nicht verwenden.

Sicherheit

Als erstes sollten Sie sicherstellen, dass Sie ein reguläres Benutzerkonto haben, das Sie über ssh verwenden können, und stellen Sie sicher, dass Sie su verwenden können, um zu root zu wechseln. Es ist eine sehr schlechte Idee, eine direkte Anmeldung für root über ssh zu erlauben.

Deaktivieren der Root-Anmeldung über SSH

Bearbeiten Sie die /etc/ssh/-Datei sshd_config, und suchen Sie nach der folgenden Zeile:

#PermitRootLogin Ja

Ändern Sie diese Zeile folgendermaßen:

PermitRootLogin Nein

Stellen Sie sicher, dass Sie über ein reguläres Benutzerkonto verfügenroot, bevor Sie diese Änderung vornehmen, sonst könnten Sie sich selbst aussperren.

SSH deaktivieren Version 1

Es gibt wirklich keinen Grund, etwas anderes als SSH Version 2 zu verwenden, da es sicherer ist als frühere Versionen. Bearbeiten Sie die /etc/ssh/-Datei sshd_config, und suchen Sie nach dem folgenden Abschnitt:

#Protocol 2,1 Protocol 2

Stellen Sie sicher, dass Sie nur Protokoll 2 wie gezeigt verwenden.

Neustart des SSH-Servers

Nun müssen Sie den SSH-Server neu starten, damit dieser wirksam wird.

/etc/init.d/ sshd restart

Nach offenen Ports suchen

Mit dem folgenden Befehl können Sie feststellen, welche Ports der Server abhört:

netstat -an |grep LISTEN

Du solltest wirklich nichts anderes hören als die Ports 22, 80 und möglicherweise 8443 für Plesk.

Einrichten einer Firewall

Hauptartikel: Verwenden von Iptables unter Linux

Sie können optional eine iptables-Firewall einrichten, um mehr Verbindungen zu blockieren. Zum Beispiel blockiere ich normalerweise den Zugang zu irgendwelchen anderen Ports außer von meinem Arbeitsnetzwerk. Wenn Sie eine dynamische IP-Adresse haben, sollten Sie diese Option vermeiden.

Wenn Sie bereits alle Schritte in diesem Handbuch befolgt haben, ist es wahrscheinlich nicht notwendig, dem Mix auch eine Firewall hinzuzufügen, aber es ist gut, Ihre Optionen zu verstehen.

Siehe auch

  • Verwenden von Iptables unter Linux

Referenzen

  • Optimieren Ihres DV-Servers( mediatemple.net)
  • XCache