Так и быть, рискну сказать: вот у Microsoft никогда не случится такой казус. Это преамбула моей речи для тех, кто готовит свои пафосные тирады о ПО, созданном без профессиональной системы управления разработкой.
На сей раз объектом моего гнева стала даже не Linux, а Apache. Мне нравится Apache. Ну, я люблю её в той степени, в которой можно любить очень симпатичную подружку, которая в подавляющем большинстве случаев ведет себя абсолютно адекватно. Однако наступают моменты, когда она полностью съезжает с катушек, превращаясь в чокнутую дуру, которую обычно только в кино и можно увидеть.
Нас с Apache связывают долгие отношения. Я работал с этим ПО на бесчисленном множестве систем примерно с 1996 г. Я знаю, что у него есть специфические свойства, знаю, что иногда он слишком сложный, но знаю и то, что в конечном итоге у меня всё получится. Ну, во всяком случае в основном.
Windows ему явно нравится меньше, чем Linux, то есть если вам нужно поставить Apache на рабочий сервер, лучше сделать его под Linux. Бывали случаи в разные годы, когда даже в официальной сопроводительной документации было указано, что по определенным причинам Apache менее стабилен и надежен при работе под Windows.
Поэтому даже достигнув невероятных уровней недовольства Linux в течение последних лет, я до сих пор устанавливаю эту ОС на рабочие серверы. Чтобы система обладала адекватным уровнем экономичности, я организовал архитектуру таким образом, чтобы Linux исполнялась на виртуальной машине, а сама виртуальная машина работала на Windows Server 2008 R2. Конечно, любители Linux думают, что это ужасно, но возможность внедрить протокол удаленного рабочего стола в реальную серверную среду, включая полноценный графический интерфейс, и при этом не бороться с ужасного качества документацией и непостоянством конфигураций для каждой функции, — да это просто дар свыше.
Но как бы то ни было, вернемся к моей сегодняшней проблеме с Apache.
Я занимаюсь разработкой на ноутбуке с Windows 7 и затем выгружаю свой код на сервер. Чтобы протестировать свой код в локальной среде, запускаю стек XAMPP WAMP. Эта система работает уже несколько лет.
Мне приходится портировать крупные системы управления контентом, а это требует мгновенной обработки почти сотни тысяч ссылок. Для этого раньше я использовал модуль mod_rewrite в Apache при помощи команды RewriteMap, что позволяет мне запустить скрипт Perl, который читает входящий URL, ищет в базе данных и перенаправляет на конечный URL. Код, разработанный для этой операции, был создан и протестирован на моем стеке XAMPP, прежде чем он был загружен на основной сервер.
Недавно я купил более быстрый ноутбук. Отличный ноутбук. Но на него пришлось перенести все программы, которые у меня были, включая XAMPP. И тогда, не ставя меня в известность, XAMPP обновился с версии 1.7x до версии 1.8. Основное отличие этих версий в том, что 1.8 использует Apache 2.4, а не 2.2, — знаю, знаю, слишком много цифр, но потерпите еще немного.
Мне следовало, конечно, проверить обе версии, но ведь Apache — это все равно Apache? Так? А вот и нет!
Проблема в том, что когда Apache обновился с версии 2.2 до 2.4, изменился принцип работы Rewrite. Раньше в Apache использовали команду под названием RewriteLock, или prn: rewrite code. А теперь используется что-то абсолютно другое, команда Mutex, или взаимного исключения.
Знаю, все кажется очень заумным, поэтому суммирую сказанное: новая версия совершенно аннулирует старую.
Да-да, меня заблокировало обновление Apache.
Сама команда Mod_rewrite практически не задокументирована, информацию о ней можно найти на некоторых хороших сайтах, а остальное овеяно фольклором. У программируемой дополнительной функции RewriteMap документации еще меньше. Но вся имеющаяся документация указывает на необходимость использовать RewriteLock. Ни в одном документе не сказано о Mutex.
Однако сегодня, как только я установил XAMPP на ноутбук и попытался запустить Apache при старых файлах конфигурации, он не запустился. Я покопался, и результатом стало сообщение об ошибке, в котором было написано, что я ничего не знал об этой ситуации с RewriteLock.
Час поисков в Интернете — и вот ответ: функция RewriteLock устарела и была заменена на эту самую ерунду, Mutex. Хоть что-то было по этому поводу сказано в сообщении об ошибке? Нет, конечно. У вас же есть Google.
Но потом стало еще хуже. Вот что говорится об использовании RewriteMap на официальном сайте Apache: “Эта функция использует взаимное исключение rewrite-map, что необходимо для стабильной работы с программой. Механизмы взаимного исключения и блокировка файла могут быть сконфигурированы при помощи команды Mutex”.
Отлично. А вот что написано в документации к обновлению Apache с 2.2 до 2.4: “Команды AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMute и WatchdogMutexPath были заменены на единую команду Mutex. Оцените необходимость использования любой из этих устаревших команд в конфигурации 2.2, чтобы определить, можно ли их удалить или они должны быть заменены на Mutex”.
Вот и всё. “Оцените необходимость использования любой из этих устаревших команд”. Спасибо большое!
Думаете, есть какая-то документация, где было бы сказано: “Ну а если вы используете старые команды, кодируйте их так-то”? Нет. Конечно же нет. Потому что это открытое ПО. Просто сами выясняйте.
А может, есть какая-либо переходная функция, чтобы апгрейд не обрушил вам весь сервер? Ну разумеется, нет. Опять же потому что это открытое ПО. Не можете заставить функцию работать — не используйте ее.
Вот что я имею против открытого ПО. В случае с коммерческим продуктом каждой устаревшей функции уделили бы внимание, и для каждой бы был разработан определенный план обновления. В большинстве случаев устаревшие функции даже были бы эмулированы в более новой технологии, чтобы система работала как раньше.
Но в случае с открытым ПО понятие “управление продуктом” не существует. Если есть более совершенная технология или более красивая функция, они просто внедряют их. Даже если при этом нарушится множество хороших конфигураций — не важно. Если это доставит пользователям неудобства или оставит их без малейшего понятия, что делать дальше, ну и что? И вообще, если вы действительно хотите знать, как что работает, код открыт для всех -- идите и читайте.
Да это просто безумие. Но в такой обстановке вынуждены работать многие ИТ-менеджеры. Не удивительно, что многие сайты функционируют на устаревших технологиях. Обновления могут все испортить.
Что же касается меня, то я скачаю и установлю старую версию XAMPP. Для ноутбука, на котором я программирую, это неважно. Но мне только что пришло уведомление, что я не могу обновить рабочие серверы до Apache 2.4, не выяснив каким-либо образом, как заставить свою сложную систему исполнения rewrite работать в абсолютно новой — и никак не задокументированной — манере.
А люди еще удивляются, почему я такой злой. Часы потрачены на то, чтобы хотя бы сохранить то, что было.
P.S. Причина того, почему я не использую сервер IIS (а я пытался), состоит в нестабильной работе на нем WordPress и PHP. Серьезно, если вам нужно, чтобы WordPress работал устойчиво и с полной поддержкой, вам нужен LAMP. Но это не значит, что он мне во всем нравится. Хи-хи.
Автор: Дэвид Гевирц
Вот ведь лживый пид@#$%дорас! Лишь бы оклеветать! И ладно бы какое-нибудь Юнити охаял, а то покусился на святое — Apache. Люди из-за одной только этой софтины Linux изучают.
Брешет же не стесняясь. Например, я как-то сам разбирался с mod_rewrite. Хорошо помню, что была целая толстенная книга на эту тему, тогда как пейсатель утверждает:
А это что?
![Целая книга о mod_rewrite](http://ecx.images-amazon.com/images/I/518BZevfxRL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg)
И вообще, пишет под Apache, сидит в Маздае, документацию читать не хочет, а во всем виновато свободное ПО. Раздражает, видите ли, IT-специалиста. Вон из профессии! ;) Освободи место тем, кто в Апаче разбирается и тащится от него. ;)
Как бы считается, что документация достаточного уровня качества должна находиться не в сторонних книгах (это что получается, при выходе новой версии Apache нужно будет покупать новую книгу?), а в официальной документации самого Apache.
Не как бы считается, а как бы лично Вы так считаете. У меня, например, другое мнение. Платить кучу бабла за подписку на MSDN — это пожалуйста, а купить одну книгу о свободной программе — удавятся. ;) Open Source — это же халява, все должны бегать вокруг пейсателя, снабжать его документацией, бесплатно обучать, бесплатно дарить книги. ;)
К тому же, "в официальной документации самого Apache" все официально и прекрасно расписано. Даже про переход с RewriteLock на Mutex. Не говорю уже о таких "глупостях", как списки рассылки, где все эти вопросы поднимаются и освещаются. Но пейсателю же некогда разбираться. Это разработчики Апача должны были прекратить развивать продукт, чтобы избавить Его Сиятельство от внесения пары новых строчек в конфиг.
Пейсатель даже не понимает роль сообщества вокруг свободного софта. Видите ли, документация от сообщества "овеяна фольклором". А я подозреваю, что это не сообщество виновато, а просто пейсатель не может, или, что более вероятно, не хочет принимать участие в жизни сообщества. Уж на вопрос о смене RewriteLock ему бы ответили.
>> Платить кучу бабла за подписку на MSDN
Вроде же ресурсы MSDN бесплатны и доступны даже без наличия Visual Studio (у которой и так есть бесплатная версия), не так ли?
>> купить одну книгу о свободной программе
Проблема с книгами -- как о свободных, так и о проприетарных программах -- в том, что за год-два половина из них успевает устареть, так как выходят всё новые версии софта.
вот-вот. а потом костылится, костылиться, пока одни костыли и не остануться
http://tsya.ru
А если серьёзно, то, например, для бизнеса поддержание обратной совместимости -- это очень важное дело, и остановка работы предприятия из-за того, что в конфигах новой версии какой-то программы некоторые параметры были заменены другими, недопустима.
К тому же, не всякая попытка обеспечения этой самой обратной совместимости обязательно является костылём.
А если еще серьезней, то Вы теряете способность незаметно насаждать двойные стандарты. ;) Вы же не сильно возмущались, когда было объявлено, что одна из новых версий Windows не будет поддерживать плавное обновление, а потребуется полная переустановка? Тут все нормально, бизнес из-за простоев не страдает. Но когда свободная программа при обновлении новых фич требует внесения соответствующих изменений в конфиг, то здесь уже начинаются басни о недопустимости остановки предприятия. :)
Это какая версия?
XP обновляется до висты, виста до семёрки, а Windows 8 будет доступна в том числе как обновление для Windows 7.
Даже не с каждой Висты перейдешь на Семерку:
А что делать тем представителям многомиллионной армии любителей XP, которые, вдруг решат перейти на Windows 8? Покупать заодно Висту и Семерку? ;)
Картинка специально усложняет условия.
Смотрите: Для обновления с Windows Vista всё просто. С Home Basic или Home Premium можно обновляться на Home Premium; с Business -- на Professional, а на Ultimate -- с любой (кроме Starter, которая фактически является демо-версией винды). Обновляться можно только на версию такой же разрядности, какой была оригинальная винда. После установки Windows 7 при желании можно будет, купив другую версию Windows 7, обновиться на более высокую версию Windows 7 через Windows Anytime Upgrade (кроме Ultimate, т.к. с Ultimate обновляться дальше некуда). Думаю, что такая же сиуация будет и с обновлением Windows 7 до Windows 8 -- можно будет апгрейдить только эквивалентные версии такой же разрядности.
C обновлением XP до Vista всё проще -- обновляться можно на любые версии выше уже установленной -- для Home это HB, HP, Business и Ultimate, а для Pro -- Business и Ultimate.
То есть желающие обновиться с XP Pro до Windows 8 должны будут пройти через цепочку:
XP Pro -> Vista Business -> 7 Pro -> 8, а с Home -- XP Home -> Vista HB -> 7 HP -> 8.
Всё совсем не так сложно.
MrBison, требуется Ваш комментарий по поводу этого поста. ;)
Гнать в шею таких специалистов.
Отправить комментарий