Это открытый вопрос, но я хочу, чтобы эта тема была конструктивной и полезной.
Итак, чтобы прояснить вопрос: на сервере под управлением CentOS 7 (или любого другого дистрибутива / версии Linux, если на то пошло) Лучше всего придерживаться версии пакета в репозитории Base / EPEL или можно получить последнюю стабильную версию сформировать сайт пакета? В данном случае я более конкретно имею в виду такие пакеты, как nginx, MariaDB и PHP 7. Например, каковы будут плюсы и минусы установки nginx 1.8.0 поверх EPEL версии 1.6.3? Есть ли различия в производительности или риски безопасности в любом случае?
Любые обсуждения и опыт приветствуются, попробуйте цитировать ресурсы и факты.
Как правило, я очень стараюсь использовать системные пакеты по умолчанию.
Однако иногда это невозможно. Чтобы сделать осознанный выбор, вам нужно было ответить на следующие вопросы:
Ответы Мэтью Ифе и Shodanshok охватывают проблемы в целом, но я хочу решить вашу конкретную проблему, поместив проблемы в контекст, поскольку я управляю именно такими системами.
Моя текущая сборка для развертывания веб-приложений PHP / MySQL:
Во-первых, давайте рассмотрим, почему мы выбрали конкретный дистрибутив или набор пакетов. Либо мы ценим стабильность над новейшими функциями, либо мы ценим новейшие функции над стабильностью. Как правило, невозможно иметь оба в одном дистрибутиве, поскольку для стабилизации программного обеспечения требуется время на исправление ошибок, а добавление новых функций приводит к появлению ошибок, а значит, нестабильности.
Как правило, я хочу, чтобы операционная система, в которой работает приложение, была как можно более стабильной, но с достаточно современным набором функций. Таким образом, я выберу CentOS 7 вместо CentOS 6, которая на данный момент довольно устарела, и хотя она будет работай, у него осталось не так много времени в жизненном цикле поддержки, поэтому я не буду использовать его для нового проекта.
Однако затем я столкнулся с проблемой, что версия nginx, включенная в CentOS, была слишком старый и не имел некоторых необходимых функций и исправлений ошибок. Поэтому я начал искать альтернативные пакеты и обнаружил, что nginx.org распространяет свои собственные. Я переключился на них почти сразу и обнаружил, что они идеально стабильны в течение длительного времени.
Затем есть PHP. Из истории я знаю, что версия PHP, поставляемая с CentOS, будет единственной версией, которую он когда-либо получит, и будет получать только обновления безопасности; никаких новых функций или исправлений ошибок. Таким образом, как только он перестанет поддерживать апстрим, я в конечном итоге не смогу запускать современные веб-приложения PHP, если буду использовать эти пакеты. Поэтому их тоже необходимо заменить.
Из многолетнего опыта я понял, что лучше всего отслеживать выпуски исправлений ошибок с помощью PHP, а не просто останавливать выпуск в какой-то момент и принимать только исправления безопасности, поскольку веб-приложения, которые я запускаю, также будут обновлены и потребуют этих исправлений. Итак, оценив множество различных наборов пакетов PHP, я остановился на паках remi. Реми является сотрудником Red Hat и также отвечает за пакеты PHP в RHEL / CentOS. Поэтому я знаю, что его посылки будут высокого качества, и они были такими. Они заменяют системные пакеты и отлично работают.
Наконец мы переходим к MariaDB. Вы жестяная банка решите оставить системные пакеты здесь и не пострадают. Я решил переключиться на пакеты MariaDB 10.0 (и скоро перейду на 10.1), чтобы воспользоваться преимуществами TokuDB и некоторыми другими улучшениями производительности, недоступными в версии 5.5, поставляемой с CentOS, и для которых она никогда не получит серьезных обновлений.
В целом вам нужна стабильность в вашей базовой системе, но веб-приложения меняются гораздо быстрее, чем, скажем, бизнес-программное обеспечение, и ваш сервер должен будет не отставать. Таким образом, я выбрал целевые точки, в которых обновление пакетов даст очевидные преимущества с небольшими дополнительными административными расходами (также известными как работа).
Короткий ответ: всегда используйте то, что предоставлено системными репозиториями. Быть очень осторожно какие репозитории вы тоже устанавливаете. Некоторые просто плохи.
Вы не должны переписывать системные пакеты более новыми версиями, Redhat разработан и организован очень тщательно, и в этом случае вы можете столкнуться с странными ошибками или проблемами.
Некоторые вещи, на которые следует обратить внимание и которые могут вызвать проблемы, включают.
php
пакет был помещен в систему, но не обновил pear
пакет, в котором возникли проблемы.Никогда создавать пакеты из исходного кода и устанавливать их поверх имеющихся пакетов. Это нарушает целостность пакетов вашей системы, что может привести к странным проблемам ABI, таким как получение unresolved symbol
или undefined reference
Сообщения. Очень важно, чтобы система поддерживала надежный и точный индекс того, какое программное обеспечение было развернуто в данной системе, чтобы гарантировать, что все это работает правильно друг с другом, это причина, по которой мы используем RPM в первую очередь.
Жизнеспособный (и благословенный Redhat) способ решить эту проблему - использовать коллекции программного обеспечения.
Он устанавливает программное обеспечение и его «новые» зависимости в свой собственный корень. Это может немного усложнить применение пакета в вашей среде, но действительно защищает вашу систему от странных ошибок или проблем. Он также устанавливает пакеты в их собственном пространстве имен, что позволяет устанавливать несколько версий пакета параллельно.
На веб-сайте даются инструкции по установке и активации этих пакетов, он содержит большую часть того, что люди упускают из старых версий CentOS и Redhat (в частности, EL6). Некоторые вещи я успешно использовал с этого сайта.
Обратите внимание, что ваша позиция по умолчанию в этом вопросе должна заключаться в том, чтобы не отклоняться от того, что продвигают репозитории Redhat. Вместо этого оцените, действительно ли вам нужна обновленная версия пакета, в частности, каковы ваши конкретные требования, какие проблемы он должен исправить и какие риски это несет.
Как правило, если вам постоянно требуется обновленное программное обеспечение и / или требуется несколько параллельных версий одних и тех же пакетов, чтобы все работало, это обычно показатель того, что вы делаете что-то не так.