Dies ist eine offene Frage, aber ich möchte eine konstruktive und hilfreiche Diskussion zu diesem Thema haben.
Um die Frage zu klären: Auf einem Server mit CentOS 7 (oder einer anderen Linux-Distribution / -Version) Ist es am besten, die Paketversion im Base / EPEL-Repo beizubehalten, oder ist es in Ordnung, die neueste stabile Version zu erhalten die Paketseite bilden? In diesem Fall beziehe ich mich genauer auf Pakete wie nginx, MariaDB und PHP 7. Welche Vor- und Nachteile hätte die Installation von nginx 1.8.0 gegenüber der EPEL-Version 1.6.3? Gibt es Leistungsunterschiede oder Sicherheitsrisiken?
Alle Diskussionen und Erfahrungen sind willkommen. Bitte versuchen Sie, Ressourcen und Fakten zu zitieren.
linux
centos
package-management
GiggleSquid
quelle
quelle
/usr/local
oder ähnlich.Antworten:
Im Allgemeinen bemühe ich mich sehr, Systemstandardpakete zu verwenden.
Dies ist jedoch manchmal nicht möglich. Um eine fundierte Entscheidung zu treffen, mussten Sie folgende Fragen beantworten:
quelle
Die Antworten von Matthew Ife und Shodanshok decken die Probleme im Allgemeinen ab, aber ich möchte auf Ihr spezifisches Anliegen eingehen, indem ich die Probleme in einen Kontext setze, da ich genau diese Art von Systemen verwalte.
Mein aktueller Build für die Bereitstellung von PHP / MySQL-Webanwendungen ist:
Lassen Sie uns zunächst überlegen, warum wir eine bestimmte Distribution oder ein bestimmtes Paket auswählen. Entweder legen wir Wert auf Stabilität gegenüber den neuesten Funktionen oder auf die neuesten Funktionen gegenüber Stabilität. Es ist im Allgemeinen nicht möglich, beide in derselben Distribution zu haben, da die Stabilisierung der Software Zeit benötigt, um Fehler zu beheben, und das Hinzufügen neuer Funktionen zu Fehlern und damit zu Instabilität führt.
Generell möchte ich, dass das Betriebssystem, auf dem die Anwendung ausgeführt wird, so stabil wie möglich ist, aber über einen angemessen modernen Funktionsumfang verfügt. Daher werde ich CentOS 7 anstelle von CentOS 6 wählen, das zu diesem Zeitpunkt ziemlich alt ist, und obwohl es funktioniert , hat es nicht mehr so viel Zeit im Support-Lebenszyklus, sodass ich es nicht für ein neues Projekt verwenden werde .
Dann stieß ich jedoch auf das Problem, dass die in CentOS enthaltene Version von Nginx zu alt war und nicht über die erforderlichen Funktionen und Fehlerbehebungen verfügte. Daher habe ich nach alternativen Paketen gesucht und festgestellt, dass nginx.org ihre eigenen vertreibt. Ich bin fast sofort zu ihnen gewechselt und habe festgestellt, dass sie auf lange Sicht vollkommen stabil sind.
Dann gibt es PHP. Ich weiß aus der Geschichte, dass die mit CentOS gelieferte Version von PHP die einzige Version sein wird, die es jemals gibt, und nur Sicherheitsupdates erhalten wird. Keine neuen Funktionen oder Fehlerbehebungen. Sobald der Support nicht mehr unterstützt wird, kann ich möglicherweise keine modernen PHP-Webanwendungen mehr ausführen, wenn ich diese Pakete verwende. Daher ist es auch notwendig, diese zu ersetzen.
Aus langjähriger Erfahrung habe ich gelernt, dass es am besten ist, Bugfix-Releases mit PHP zu verfolgen, nicht nur an einem Punkt einzufrieren und nur Sicherheitskorrekturen vorzunehmen, da die von mir ausgeführten Webanwendungen ebenfalls aktualisiert werden und diese Bugfixes benötigen. Nachdem ich viele verschiedene Sätze von PHP-Paketen evaluiert hatte, entschied ich mich für Remis Pakete. Remi ist zufällig ein Red Hat-Mitarbeiter und auch für die PHP-Pakete in RHEL / CentOS verantwortlich. Ich weiß also, dass seine Pakete von hoher Qualität sein werden, und das war es auch. Sie sind Ersatz für die Systempakete und funktionieren einwandfrei.
Endlich kommen wir zu MariaDB. Sie können die Systempakete hier aufbewahren und keine negativen Auswirkungen haben. Ich habe mich für den Wechsel zu MariaDBs 10.0-Paketen entschieden (und werde bald auf 10.1 umsteigen), um TokuDB und einige andere Leistungsverbesserungen zu nutzen, die in der mit CentOS gelieferten 5.5-Version nicht verfügbar sind und für die es niemals größere Upgrades erhalten wird.
Insgesamt benötigen Sie Stabilität in Ihrem Basissystem, aber Web-Apps ändern sich viel schneller als beispielsweise Branchen-Software, und Ihr Server muss Schritt halten. Daher habe ich gezielte Punkte ausgewählt, an denen das Aktualisieren von Paketen mit geringem zusätzlichen Verwaltungsaufwand (auch bekannt als Arbeit) deutliche Vorteile bringt.
quelle
Die kurze Antwort lautet: Verwenden Sie immer das, was von den System-Repositorys bereitgestellt wird. Seien Sie sehr vorsichtig, welche Repositorys Sie ebenfalls installieren. Einige sind einfach nur schlecht.
Sie sollten die Systempakete nicht mit neueren Versionen überschreiben. Redhat wurde sehr sorgfältig entworfen und orchestriert, und es kann zu seltsamen Fehlern oder Problemen kommen, wenn Sie dies tun.
Einige Dinge, die zu beachten und zu beachten sind, können Probleme verursachen.
php
Paket auf das System gestellt wurde, aber daspear
Paket, das Probleme verursachte, nicht aktualisiert hat .Erstellen Sie niemals Pakete aus dem Quellcode und installieren Sie sie über den vorhandenen Paketen. Dies beeinträchtigt die Integrität Ihres Systempakets, was zu seltsamen ABI-Problemen wie Empfang
unresolved symbol
oderundefined reference
Nachrichten führen kann. Es ist sehr wichtig, dass das System einen zuverlässigen und genauen Index darüber erstellt, welche Software auf einem bestimmten System bereitgestellt wurde, um sicherzustellen, dass alles ordnungsgemäß miteinander funktioniert. Aus diesem Grund verwenden wir in erster Linie RPMs.Der praktikable (und von Redhat gesegnete) Weg, dies zu lösen, ist die Verwendung von Software-Sammlungen.
www.softwarecollections.org
Es installiert ist Software und seine 'neuen' Abhängigkeiten in seinem eigenen Stammverzeichnis. Dies kann das Anwenden des Pakets in Ihrer Umgebung etwas erschweren, schützt Ihr System jedoch vor seltsamen Fehlern oder Problemen. Außerdem werden die Pakete in einem eigenen Namespace installiert, sodass Sie mehrere Versionen eines Pakets parallel installieren können.
Die Website enthält Anweisungen zum Installieren und Aktivieren dieser Pakete. Sie enthält die meisten Informationen, die bei älteren Versionen von CentOS und Redhat (insbesondere EL6) fehlen. Einige Dinge, die ich von dieser Website erfolgreich verwendet habe.
Beachten Sie, dass Ihre Standardposition in dieser Angelegenheit darin bestehen sollte, nicht von dem anzupassen, was die Redhat-Repositorys vorantreiben. Machen Sie stattdessen eine Beurteilung, ob Sie wirklich eine aktualisierte Version eines Pakets benötigen, insbesondere was Ihre spezifischen Anforderungen sind, welche Probleme es beheben soll und welche Risiken es mit sich bringt.
Wenn Sie ständig aktualisierte Software benötigen und / oder mehrere parallele Versionen derselben Pakete benötigen, damit die Dinge funktionieren, ist dies in der Regel ein Indikator dafür, dass Sie etwas falsch machen.
quelle
nginx
ist eines dieser "All-in-One" -Pakete. Dies gilt jedoch insbesondere fürhttpd
(libapr-Abhängigkeiten) undmysql
(libmysqlclient-Abhängigkeiten) nicht. Schlechte Updates dieser beiden Pakete haben inpython
undphp
für mich in der Vergangenheit Fehler verursacht . Das Problem hierbei ist, dass es nicht einfach ist zu wissen, wie ein Paket mit einem anderen interagiert, es sei denn, Sie wissen, wonach Sie suchen müssen (Übersetzung: wurde zuvor von ihm gebrannt).