Il s'agit d'une question ouverte, mais je souhaite avoir une discussion constructive et utile sur ce sujet.
Donc, pour clarifier la question: sur un serveur exécutant CentOS 7 (ou toute autre distribution / version Linux d'ailleurs) Est-il préférable de s'en tenir à la version du package dans le repo Base / EPEL ou est-il correct d'obtenir la dernière version stable former le site du package? Dans ce cas, je fais plus spécifiquement référence à des packages tels que nginx, MariaDB et PHP 7. Par exemple, quels seraient les avantages et les inconvénients de l'installation de nginx 1.8.0 par rapport à la version EPEL 1.6.3? Y a-t-il des différences de performances ou des risques de sécurité dans les deux cas?
Toutes les discussions et expériences sont les bienvenues, veuillez essayer de citer les ressources et les faits.
la source
/usr/local
ou similaire.Réponses:
En général, j'essaie très fort d'utiliser les packages par défaut du système.
Cependant, ce n'est parfois pas possible. Pour faire un choix éclairé, vous avez dû répondre à ces questions:
la source
Les réponses de Matthew Ife et de shodanshok couvrent les problèmes en général, mais je veux répondre à votre préoccupation spécifique en mettant les problèmes en contexte, car c'est exactement ce genre de systèmes que je gère.
Ma version actuelle pour déployer des applications Web PHP / MySQL est la suivante:
Voyons d'abord pourquoi nous choisissons une distribution ou un ensemble de packages particulier. Soit nous privilégions la stabilité par rapport aux dernières fonctionnalités, soit nous privilégions les dernières fonctionnalités à la stabilité. Il n'est généralement pas possible d'avoir les deux dans la même distribution, car le logiciel de stabilisation nécessite du temps pour corriger les bogues, et l'ajout de nouvelles fonctionnalités introduit des bogues, donc de l'instabilité.
En règle générale, je veux que le système d'exploitation sur lequel l'application s'exécute soit aussi stable que possible, mais avec un ensemble de fonctionnalités raisonnablement moderne. Je vais donc choisir CentOS 7 plutôt que CentOS 6, ce qui est assez ancien à ce stade, et bien que cela fonctionne , il ne reste pas autant de temps dans son cycle de vie de support, donc je ne l'utiliserai pas pour un nouveau projet .
Cependant, j'ai ensuite rencontré le problème que la version de nginx incluse avec CentOS était trop ancienne et n'avait pas certaines fonctionnalités requises et corrections de bugs. Je suis donc allé à la recherche de packages alternatifs et j'ai découvert que nginx.org distribuait le leur. Je suis passé à eux presque immédiatement et les ai trouvés parfaitement stables sur le long terme.
Ensuite, il y a PHP. Je sais par histoire que la version de PHP livrée avec CentOS sera la seule version jamais obtenue, et ne recevra que des mises à jour de sécurité; aucune nouvelle fonctionnalité ni correction de bogue. Ainsi, une fois qu'il ne sera plus pris en charge en amont, je serai finalement incapable d'exécuter des applications Web PHP modernes si j'utilise ces packages. Il est donc nécessaire de les remplacer également.
De longue expérience, j'ai appris qu'il est préférable de suivre les versions de correctifs de bogues avec PHP, pas simplement de geler à un moment donné et de ne prendre que des correctifs de sécurité, car les applications Web que j'exécute seront également mises à jour et auront besoin de ces corrections de bogues. Donc, après avoir évalué de nombreux ensembles de packages PHP, je me suis installé sur les pacakges de remi. Remi se trouve être un employé de Red Hat et est également responsable des packages PHP dans RHEL / CentOS. Je sais donc que ses colis seront de haute qualité, et ils l'ont été. Ils remplacent directement les packages système et fonctionnent parfaitement.
Enfin, nous arrivons à MariaDB. Vous pouvez choisir de conserver les packages système ici et de ne subir aucun effet indésirable. J'ai choisi de passer aux packages 10.0 de MariaDB (et je passerai bientôt à 10.1) pour profiter de TokuDB et de certaines autres améliorations de performances non disponibles dans la version 5.5 livrée avec CentOS, et pour lesquelles il ne recevra jamais de mises à niveau majeures.
Dans l'ensemble, vous avez besoin de stabilité dans votre système de base, mais les applications Web changent beaucoup plus rapidement que, disons, les logiciels métier, et votre serveur devra suivre. J'ai donc choisi des points ciblés où la mise à niveau des packages gagnera clairement en avantages avec peu de frais administratifs supplémentaires (aka travail).
la source
La réponse courte est, utilisez toujours ce qui est fourni par les référentiels système. Faites très attention aux référentiels que vous installez également. Certains sont tout simplement mauvais.
Vous ne devriez pas écraser les packages systèmes avec des versions plus récentes, Redhat est conçu et orchestré très soigneusement et vous pourriez vous retrouver avec des bugs ou des problèmes étranges si vous le faites.
Certaines choses à considérer et à rechercher qui peuvent causer des problèmes comprennent.
php
paquet a été mis sur le système mais n'a pas mis à jour lepear
paquet qui a introduit des problèmes.Ne créez jamais de packages à partir des sources et ne les installez pas par-dessus les packages qui s'y trouvent. Cela rompt l'intégrité de votre package système, ce qui peut entraîner d'étranges problèmes ABI tels que la réception
unresolved symbol
ou lesundefined reference
messages. Il est assez critique que le système conserve un index fiable et précis sur les logiciels qui ont été déployés sur un système donné pour s'assurer que tout fonctionne correctement les uns avec les autres, c'est la raison pour laquelle nous utilisons les RPM en premier lieu.La façon viable (et bénie par Redhat) de résoudre ce problème consiste à utiliser des collections de logiciels.
www.softwarecollections.org
Il installe son logiciel et ses «nouvelles» dépendances dans sa propre racine. Cela peut rendre légèrement plus difficile l'application du package dans votre environnement, mais protège votre système contre des erreurs ou des problèmes étranges. Il installe également les packages dans leur propre espace de noms, vous permettant d'installer plusieurs versions d'un package en parallèle.
Le site Web donne des instructions sur l'installation et l'activation de ces packages, il contient la plupart des éléments manquants sur les anciennes versions de CentOS et Redhat (EL6 en particulier). Certaines choses que j'ai utilisées avec succès sur ce site Web.
Notez que votre position par défaut sur cette question ne devrait pas être de s'ajuster à ce que les référentiels Redhat poussent. Au lieu de cela, évaluez si vous avez vraiment besoin d'une version mise à jour d'un package, en particulier quelles sont vos exigences spécifiques, quels problèmes il est censé résoudre et quels risques il présente.
En règle générale, si vous avez constamment besoin d'un logiciel mis à jour et / ou si vous avez besoin de plusieurs versions parallèles des mêmes packages pour que les choses fonctionnent, c'est généralement un indicateur que vous faites quelque chose de mal.
la source
nginx
est l'un de ces packages «tout en un» comme ça. Mais,httpd
(dépendances libapr) etmysql
(dépendances libmysqlclient) en particulier ne le sont pas. De mauvaises mises à jour de ces deux packages ont causé des erreurs danspython
etphp
pour moi dans le passé. Le problème ici n'est pas simple de savoir comment un paquet interagit avec un autre à moins que vous ne sachiez quoi chercher (traduction: il a déjà été gravé par lui).