Wenn Sie einen dedizierten virtuellen Server zum Ausführen Ihrer Website erhalten, stehen die Chancen gut, dass er für alle Benutzer konfiguriert und nicht angepasst ist, um die Leistung beim Ausführen einer Website zu maximieren.
Inhalt[ ausblenden ]
|
Überblick
Es gibt eine Reihe von Problembereichen, in denen wir die Leistung maximieren möchten:
-
Linux configuration
In der Regel werden Dienste ausgeführt, die nicht ausgeführt werden müssen. Dabei wird Speicherplatz verschwendet, der für weitere Verbindungen verwendet werden kann. -
MySQL-Konfiguration
Oft basieren die Standardeinstellungen auf einem kleinen Server. Wir können einige wichtige Änderungen hinzufügen, um die Leistung erheblich zu steigern. -
Apache-Konfiguration
Standardmäßig installieren die meisten Hosting-Anbieter Apache mit fast jedem installierten Modul. Es gibt keinen Grund, Module zu laden, wenn Sie sie nie verwenden werden. -
PHP-Konfiguration
Die Standard-PHP-Konfiguration ist ähnlich aufgebläht. In der Regel sind eine Menge unnötiger zusätzlicher Module installiert. -
PHP Opcode Cache
Anstatt PHP zu erlauben, die Skripte jedes Mal neu zu kompilieren, werden die kompilierten Skripte durch einen Opcode-Cache im Speicher zwischengespeichert, um die Leistung erheblich zu steigern. -
Backups
Sollte wahrscheinlich einige automatisierte Backups einrichten, da Ihr Hosting-Anbieter dies nicht für Sie tun wird. -
Sicherheit
Sicher, Linux ist standardmäßig sicher genug, aber normalerweise gibt es einige offensichtliche Sicherheitsprobleme, die Sie mit ein paar schnellen Einstellungen beheben können.
Linux Configuration
Sie können eine Reihe von Optimierungen vornehmen, die je nach verwendetem Server geringfügig variieren. Diese Optimierungen gelten für einen Server mit CentOS, sollten jedoch für die meisten DV-Server funktionieren.
Deaktivieren Sie DNS
Wenn Ihr Hosting-Anbieter das DNS für Ihre Domain verwaltet (wahrscheinlich), können Sie die Ausführung des DNS-Dienstes deaktivieren.
DNS deaktivieren /etc/init.d/named stop chmod 644 /etc/init.d/named
Der Befehl chmod entfernt die Ausführungsberechtigung aus dem Skript und verhindert, dass es beim Start ausgeführt wird.
Deaktivieren Sie SpamAssassin
Wenn Sie auf Ihrem Server selbst keine E-Mail-Konten verwenden, sollten Sie sich nicht die Mühe machen, Anti-Spam-Tools auszuführen. (Außerdem sollten Sie sich Google Apps ansehen, eine viel bessere E-Mail-Lösung.)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Deaktivieren Sie xinetd
Der xinetd-Prozess enthält 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
Begrenzen Sie die Plesk-Speichernutzung
Wenn Sie das plesk-Bedienfeld verwenden, können Sie durch Hinzufügen einer Optionsdatei erzwingen, dass weniger Speicher benötigt 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 auf MediaTemple DV-Servern funktioniert, auf anderen jedoch nicht aktiviert wurde. (Sehen Verweise )
Plesk deaktivieren oder deaktivieren (optional)
Wenn Sie Plesk nur einmal im Jahr verwenden, gibt es kaum einen Grund, es überhaupt laufen zu lassen. Beachten Sie, dass dieser Schritt völlig optional und etwas fortgeschrittener ist.
Führen Sie den folgenden Befehl aus, um plesk zu deaktivieren:
/etc/init.d/psa stop
Sie können die Ausführung beim Start deaktivieren, indem Sie den folgenden Befehl ausführen:
chmod 644 /etc/init.d/psa
Wenn Sie es deaktivieren, können Sie es nicht manuell starten, ohne die Dateiberechtigungen zurück zu ändern (chmod u + x).
MySQL-Konfiguration
Aktivieren Sie den Abfrage-Cache
Öffnen Sie Ihre Datei /etc/my.cnf und fügen Sie die folgenden Zeilen wie folgt in Ihren [mysqld]-Abschnitt ein:
[mysqld] Abfrage-Cache-Typ = 1 Abfrage-Cache-Größe = 8M
Sie können dem Abfragecache mehr Speicher hinzufügen, wenn Sie möchten, aber nicht zu viel verwenden.
Deaktivieren Sie TCP / IP
Eine überraschende Anzahl von Hosts ermöglicht standardmäßig den Zugriff auf MySQL über TCP / IP, was für eine Website keinen Sinn macht. Sie können herausfinden, ob MySQL TCP / IP überwacht, indem Sie den folgenden Befehl ausführen:
netstat -an | grep 3306
Fügen Sie zum Deaktivieren der Datei /etc/my.cnf die folgende Zeile hinzu:
Skip-Networking
Apache-Konfiguration
Öffnen Sie Ihre httpd.conf-Datei, die häufig unter /etc/httpd/conf/httpd.conf zu finden ist
Finden Sie die Linie, die so aussieht:
Zeitüberschreitung 120
Und ändern Sie es in dieses:
Zeitüberschreitung 20
Suchen Sie nun den Abschnitt, der diese Zeilen enthält, und passen Sie ihn an etwas Ähnliches an:
StartServer 2 MinSpareServer 2 MaxSpareServer 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHP-Konfiguration
Eines der Dinge, die Sie beim Optimieren eines Servers auf der PHP-Plattform beachten sollten, ist, dass jeder einzelne Apache-Thread PHP an einem separaten Speicherort im Speicher lädt. Dies bedeutet, wenn ein nicht verwendetes Modul PHP 256 KB Speicher hinzufügt, verschwenden Sie über 40 Apache-Threads 10 MB Speicher.
Entfernen Sie nicht benötigte PHP-Module
Sie müssen Ihre php.ini-Datei suchen, die sich normalerweise unter /etc/php.ini befindet. (Beachten Sie, dass es bei einigen Distributionen ein Verzeichnis /etc/php.d/ mit einer Reihe von INI-Dateien gibt. eine für jedes Modul.
Kommentieren Sie alle Lademodulzeilen mit diesen Modulen aus:
- odbc
- snmp
- pdo
- odbc pdo
- Mysqli
- Ioncube-Lader
- json
- imap
- ldap
- Flüche
Todo: Fügen Sie hier weitere Informationen hinzu.
PHP Opcode Cache
Es gibt eine Reihe von Opcode-Caches, die Sie verwenden können, einschließlich APC, eAccelerator und Xcache, wobei der letzte aufgrund der Stabilität meine persönliche Präferenz ist.
Laden Sie xcache herunter, extrahieren Sie es in ein Verzeichnis und führen Sie die folgenden Befehle aus dem xcache-Quellverzeichnis aus:
phpize ./configure --enable-xcache machen make install
Öffnen Sie Ihre Datei php.ini und fügen Sie einen neuen Abschnitt für xcache hinzu. Sie müssen die Pfade anpassen, wenn Ihre PHP-Module von einem anderen Ort 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 = "meinBenutzername" xcache.admin.pass = "putanmd5hashhere" [xcache] ;; Ändern Sie xcache.size, um die Größe des Opcode-Cache anzupassen xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ;; Ändern Sie xcache.var_size, um die Größe des variablen Caches 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 = Ein xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Ein xcache.stat = Ein xcache.optimizer = Aus
Todo: Muss dies ein wenig erweitern und in den Referenzen auf xcache verlinken.
Backups
Es gibt kaum etwas Wichtigeres als automatisierte Sicherungen Ihrer Website. Möglicherweise können Sie Snapshot-Backups von Ihrem Hosting-Anbieter erhalten, die ebenfalls sehr nützlich sind, aber ich bevorzuge auch automatisierte Backups.
Erstellen Sie ein automatisiertes Sicherungsskript
Normalerweise beginne ich mit dem Erstellen eines / backups-Verzeichnisses mit einem / backups / files-Verzeichnis darunter. Sie können diese Pfade anpassen, wenn Sie möchten.
mkdir -p / backups / files
Erstellen Sie nun ein backup.sh-Skript im Sicherungsverzeichnis:
vi /backups/backup.sh
Fügen Sie der Datei Folgendes hinzu und passen Sie die Pfade und das mysqldump-Kennwort nach Bedarf an:
#! / 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 / my-website-path / httpdocs
gzip /backups/files/sitebackup$THEDATE.tar
find / backups / files / site * -mtime +5 -exec rm {} \;
find / backups / files / db * -mtime +5 -exec rm {} \;
Das Skript erstellt zuerst eine Datumsvariable, sodass alle Dateien für eine einzelne Sicherung gleich benannt werden, speichert dann die Datenbank, tariert die Webdateien und komprimiert sie. Mit den Suchbefehlen werden alle Dateien entfernt, die älter als 5 Tage sind, da Ihr Laufwerk nicht über genügend Speicherplatz verfügen soll.
Machen Sie das Skript ausführbar, indem Sie den folgenden Befehl ausführen:
chmod u + x /backups/backup.sh
Als Nächstes müssen Sie es so zuweisen, dass es automatisch von cron ausgeführt wird. Stellen Sie sicher, dass Sie ein Konto verwenden, das Zugriff auf das Sicherungsverzeichnis hat.
crontab -e
Fügen Sie der Crontab die folgende Zeile hinzu:
1 1 * * * /backups/backup.sh
Sie können das Skript vorab testen, indem Sie es ausführen, während Sie am Benutzerkonto angemeldet sind. (Ich führe die Backups normalerweise als root aus)
Synchronisieren Sie Backups außerhalb des Standorts mit Rsync
Nachdem Sie automatische Sicherungen Ihres Servers ausgeführt haben, können Sie diese mithilfe des Dienstprogramms rsync an einer anderen Stelle synchronisieren. In diesem Artikel erfahren Sie, wie Sie SSH-Schlüssel für die automatische Anmeldung einrichten: Hinzufügen eines öffentlichen SSH-Schlüssels zum Remote-Server in einem einzigen Befehl
Sie können dies testen, indem Sie diesen Befehl auf einem Linux- oder Mac-Computer an einem anderen Ort ausführen (ich habe einen Linux-Server zu Hause, auf dem ich diesen ausführe).
rsync -a [email protected]: / backups / files / * / offsitebackups /
Die erstmalige Ausführung dauert einige Zeit, aber am Ende sollte Ihr lokaler Computer eine Kopie des Dateiverzeichnisses im Verzeichnis / offsitebackups / haben. (Stellen Sie sicher, dass Sie dieses Verzeichnis erstellen, bevor Sie das Skript ausführen.)
Sie können dies planen, indem Sie es einer Crontab-Zeile hinzufügen:
crontab -e
Fügen Sie die folgende Zeile hinzu, die jede Stunde nach 45 Minuten rsync ausführt. Sie werden feststellen, dass wir hier den vollständigen Pfad zum Rsync verwenden.
45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /
Sie können festlegen, dass es zu einer anderen Zeit oder nur einmal pro Tag ausgeführt wird. Das liegt ganz bei Ihnen.
Beachten Sie, dass es viele Dienstprogramme gibt, mit denen Sie über ssh oder ftp synchronisieren können. Sie müssen rsync nicht verwenden.
Sicherheit
Das erste, was Sie tun möchten, ist sicherzustellen, dass Sie ein reguläres Benutzerkonto haben, das Sie über ssh verwenden können, und dass Sie su verwenden können, um zu root zu wechseln. Es ist eine sehr schlechte Idee, die direkte Anmeldung für root over ssh zuzulassen.
Deaktivieren Sie die Root-Anmeldung über SSH
Bearbeiten Sie die Datei / etc / ssh / sshd_config und suchen Sie nach der folgenden Zeile:
#PermitRootLogin ja
Ändern Sie diese Zeile so, dass sie folgendermaßen aussieht:
PermitRootLogin-Nr
Stellen Sie sicher, dass Sie über ein reguläres Benutzerkonto verfügen und sich vor dieser Änderung als Root anmelden können. Andernfalls können Sie sich selbst sperren.
Deaktivieren Sie SSH 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 Datei / etc / ssh / sshd_config und suchen Sie den folgenden Abschnitt:
#Protokoll 2,1 Protokoll 2
Stellen Sie sicher, dass Sie nur Protokoll 2 wie gezeigt verwenden.
Starten Sie den SSH-Server neu
Jetzt müssen Sie den SSH-Server neu starten, damit dies wirksam wird.
/etc/init.d/sshd Neustart
Suchen Sie nach offenen Ports
Mit dem folgenden Befehl können Sie sehen, welche Ports der Server überwacht:
netstat -an | Griff HÖREN
Sie sollten wirklich nichts anderes als die Ports 22, 80 und möglicherweise 8443 für plesk abhören lassen.
Richten Sie eine Firewall ein
Sie können optional eine iptables-Firewall einrichten, um weitere Verbindungen zu blockieren. Beispielsweise blockiere ich normalerweise den Zugriff auf andere Ports als mein Arbeitsnetzwerk. Wenn Sie eine dynamische IP-Adresse haben, sollten Sie diese Option vermeiden.
Wenn Sie bereits alle Schritte in diesem Handbuch ausgeführt haben, ist es wahrscheinlich nicht erforderlich, dem Mix auch eine Firewall hinzuzufügen, aber es ist gut, Ihre Optionen zu verstehen.
Siehe auch
- Verwenden von Iptables unter Linux