Довольно долгое время работаю с обоими ОС в основном в контексте
"хостинг-сервер". Раньше я склонялся к мнению, что лучше всего для
хостинг-серверов подходит CentOS 5 (т.к. все же это полноценный
"Enterprise" дистрибутив со всеми вытекающими), но сейчас уверенности
у меня поубавилось. Поэтому я постараюсь дать как можно более
объективное сравнение дистрибутивов как раз по качествам, которые в
первую очередь важны для хостинга.
Сравнение будет выполняться в следующем оснащении дистрибутивов:
Debian - только базовый репозиторий, CentOS - только базовый и Epel
репозитории (я бы его тоже отнес к "стандартным", т.к. работать в
CentOS без него почти невозможно).
Для начала давайте вспомним, что такое хостинг и из какого ПО он состоит.
Хостинговое ПО
Во-первых, это конечно же Apache, который выполняет львиную долю
работы на хостинге и является стандартом де-факто (по большей части
благодаря всеми любимому mod_rewite и .htaccess). Тут отличия найти
сложно, оба дистрибутива имеют 2.2 версию Apache и вполне стабильно
работают. Так что тут равноценно.
Кроме Апача для снижения нагрузки (и, к слову, в некоем роде защиты от
DoS при ограниченных ресурсах сервера) и раздачи статики часто
используется Nginx - актуальная версия в CentOS: 0.6.39, Debian:
0.6.32. К слову, обе эти версии имеют баг (он исправлен только в 0.7,
см. рассылку nginx-ru) при котором при усечении конфига nginx.conf
(проявляется такое, например, в довольно популярной панели ISPManager)
Nginx съедает всю памяти и система просто-напросто виснет. Так что тут
обоим минус и придется самому собирать пакет и ставить Nginx 0.7.
Для полноценного взаимодействия Nginx и Apache, т.е. для корректной
передачи IP бэкэнду необходим модуль Апача - rpaf, который
просматривает полученный от Nginx IP и передает его Апачу. Этот модуль
отсутствует даже в репозитории Epel CentOS`а (сейчас я его беру в
CentAlt), но в тоже время, в Debian он есть стандартно. Что также
добавляет преимуществ именно Debian`у.
Теперь о главном, о PHP, ведь это фактически причина использования
всего остального хостингового ПО, ибо подавляющее количество CMS
написано именно на нем (прощу прощения у любителей Python, Perl и
Ruby, а также других языков, но статистика потребительского шаред
хостинга говорит о тотальном количественном преимуществе PHP).
Тут-то и начинаются проблемы у CentOS, во-первых, на нем стоит PHP
5.1.6, а многое ПО (например, Magento - очень популярный веб-магазин)
требует именно 5.2 версию и если вы не хотите столкнуться с большим
числом жалоб от клиентов по причине неработоспособности скриптов, Вы
будете вынуждены либо подключать сторонние репозитории (которые мало
того, что не гарантируют стабильности ПО и корректности его сборки, а
в худшем случае - даже не отвечают требованиям безопасности и
надежности), либо собирать PHP 5.2 самостоятельно со всеми модулями
(что опять же сделать не так тривиально, учитывая число модулей в
репозиториях - в Debian это, например, около 50 штук). А если еще
вспомнить, что для PHP довольно часто выходят исправления
безопасности, то придется весь этот комплект оперативно патчить,
собирать в пакеты и разносить по серверами, то задача уже кажется
почти нерешаемой.
Также стоит упомянуть баг php-cgi в CentOS из-за которого он не читает
php.ini в текущей папке, когда он присутствует и все равно идет в
/etc/php.ini, что сильно мешает его работе в режиме php-fastcgi (в
Debian же с этим все ок). В Debian стоит 5.2.6 версия PHP с патчем
suhosin, который значительно увеличивает безопасность скриптов и
позволяет запускать почти все без исключения современные движки.
Далее пройдем по проприетарным модулям для PHP, которые используются
для защиты скриптов - это Zend Optimizer и IonCube. Что первый, что
второй поставляются в сборках и под PHP 5.1 и под 5.2. Так что и с
ними никаких проблем не будет.
MySQL, оба дистрибутива содержат 5.0 версию со всеми необходимыми
опциями. Стабильной же (по мнению Sun Microsystems) является 5.1, но
ни в одном дистрибутиве ее еще "не признали" по-настоящему стабильной
да и ПО, которое требует только 5.1 версию я не видел еще ни разу.
Postfix, Exim, Sendmail - все три почтовика представлены в обоих
дистрибутивах. Причем, к слову, postfix-mysql находится в стандартном
репо Debian, в то время как в CentOS он ставится весьма нетривиально,
но это лишь опция и в явные преимущества записывать не будем.
Теперь поговорим о версиях хостинговой экзотики - Perl, Python и Ruby.
В CentOS присутствует только 2.4 версия языка, а в Debian 2.5, так
что для любителей новых возможностей тут, пожалуй выбор однозначный. С
Ruby выбор чуть побольше - в Debian присутствует и 1.8 и 1.9 версии, а
в CentOS только 1.8.5. Perl же в Debian самой модной версии - 5.10, в
CentOS же проверенный временем (и лингвистами :) 5.8.8.
Управление ПО: установка и обновление
Тут у обоих дистрибутивов дела обстоят довольно хорошо, как я уже
говорил выше, для CentOS существует отличный сторонний репозиторий со
многими необходимыми пакетами - Epel (является частью проекта Fedora),
а у Debian даже без дополнительных репозиториев выбор пакетов очень
большой. Для установки и обновления программ в CentOS используется
YUM, отличающийся относительно неэкономным отношением к памяти, но при
этом он не заваливает пользователя вопросами о конфигурации пакетов,
как это делает пакетный менеджер Debian - apt-get.
Различные способы запуска ОС
По поводу работы на "чистом железе" (выделенный, dedicated сервер либо
colocation) стоит отдать предпочтение все же Debian, т.к. у него ядро
новее, чем у CentOS (да, Вы можете возразить, что RH оперативно
бэкпортит поддержку оборудования, но все же мой опыт говорит о том,
что с Debian при работе на железе проблем намного меньше, чем c
CentOS).
Отдельным пунктом, думаю, стоит отметить стабильность работы в
виртуальных окружениях OpenVZ и Xen. Оба дистрибутива работают отлично
и каких-либо нареканий и проблем не имеют, что очень важно, учитывая
популярность VPS хостингов и Cloud платформ (например, Amazon EC2).
Ну вот, пожалуй, и все, что я хотел рассказать в данной статье. Думаю,
она будет полезна многим пользователям, которые еще не определились с
тем, что же ставить на сервер.
P.S. статья была попыткой получить инвайт на Хабр, неудачной попыткой - отклонили :) Так что выкладываю здесь :)