12Sep
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]
|
Ü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 NamenMit 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-spamassassinxinetd 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/ xinetdPlesk-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.includeFügen Sie der Datei die folgenden Zeilen hinzu:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Beachten 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 beendenSie können die Ausführung beim Start deaktivieren, indem Sie den folgenden Befehl ausführen:
chmod 644 /etc/init.d/ ASABeachten 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 = 8MSie 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 3306Zum Deaktivieren fügen Sie die folgende Zeile zu Ihrer /etc/ my.cnf-Datei hinzu:
skip-networkingApache-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 120Und ändern Sie es in:
Timeout 20Finden 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 4000PHP 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.iniFü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 = AusTodo: 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
erstellenIch 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/-DateienErstellen Sie nun ein backup.sh-Skript innerhalb des Backup-Verzeichnisses:
vi /backups/ backup.shFü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.shAls 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 -eFügen Sie der crontab die folgende Zeile hinzu:
1 1 * * * /backups/ backup.shSie 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 -eFü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 NeinStellen 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 2Stellen 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 restartNach offenen Ports suchen
Mit dem folgenden Befehl können Sie feststellen, welche Ports der Server abhört:
netstat -an |grep LISTENDu 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