Переход с сервера Apache 1.3 на Apache 2.0


В моей предыдущей статье мы обсуждали, как установить и сконфигурировать сервер Apache 2.0. Это хорошее начало, но этого не достаточно для тех, кто уже использует сервер Apache 1.3. Необходимо не только установить и настроить новую версию Apache, но также максимально сократить время остановки веб-сервисов при переходе на новый сервер.
Все трудные ситуации, рассмотренные в этой статье, произошли при переносе сайта apache.org на сервер Apache 2.0. Это случилось довольно давно, задолго до выпуска первой бета версии, поэтому некоторые вещи могут не совпадать, но в основном все действия остаются актуальными. Также хочу выразить благодарность: не я перенес сайт apache.org на сервер Apache 2.0. Я начал работать над этим, но потом, по личным причинам, передал эту работу Грэгу Амесу (Greg Ames). Я наблюдал за тем, что он делает, и иногда помогал ему с возникающими проблемами, но только Грэк является тем единственным человеком, который перенес сайт apache.org на сервере Apache 2.0.

Когда мы планировали переход на новый сервер, то нашей основной задачей было обеспечение непрерывной работы сервисов сайта apache.org. Сайт apache.org не самый загруженный сайт в сети, но в середине дня сайт испытывает приличную нагрузку. А когда сайт не справляется с нагрузкой, тогда наши посетители начинают испытывать трудности с доступом к сайту. Чтобы избежать этого, мы запланировали произвести установку сервера Apache 2.0 на порт 8091 и известили об этом посетителей. После недельной проверки сервера на работоспособность, мы переключили его на основной порт 80.

Поддержка многопроцессности


Перед тем как начать установку сервера, мы приняли некоторые решения. Сервер Apache 2.0 является гораздо более гибким в настройке, чем Apache 1.3. Первую задачу, которую необходимо было выполнить - это выбрать какой МП-модуль нам использовать (для детального описания некоторых МП-модулей, смотрите первую статью).
Лично я советую начать с МП-модуля prefork. В Apache 2.0 было многое изменено, поэтому лучше начать с того модуля, принцип работы которого проще понять, чем у остальных. Итак, Ваш новый сервер установлен и работает, и теперь Вы можете начать экспериментировать с МП-модулями, чтобы определить, какой из них лучше подходит для Вашего сайта.
МП-модули работают только при создании процессов и нитей. Рассмотрим пример этого процесса - модуль mod_cgid. Большинство версий Unix плохо распараллеливают процессы на нити. Вместо создания нового однонитиевого процесса, они копируют исходный процесс со всеми нитями, а затем завершают все нити, кроме одной. Очевидно, что это не самый эффективный путь создания процессов. Решение, которые приняли разработчики Apache, это создать CGI-демона, которого использовал бы Apache для создания новых CGI-процессов. Этот демон-процесс создается до момента создания любых дочерних процессов и состоит только из одной нити. Когда приходит CGI-запрос, он отсылается CGI-демону, который в свою очередь создает параллельный CGI-процесс. После завершения обработки, CGI-процесс отсылает данные обратно дочернему процессу, который отсылает их клиенту. Рассмотренный модуль не настолько отлажен, как стандартный модуль mod_cgi, поэтому, если вы используете нитиевый МП-модуль и если CGI-запросы приводят к ошибкам, то для определения источника проблем можно использовать mod_cgi. Модуль mod_cgi тоже работает с МП-модулями, но его производительность оставляет желать лучшего.

Установка фильтров

Последнее главное отличие между Apache 1.3 и Apache 2.0 - это добавление механизма фильтров. Для программистов фильтры являются мощным средством изменения данных, полученных от другого модуля. А для администраторов фильтры требуются для фильтрации трафика. Только один стандартный модуль реализует функции фильтра - это модуль mod_include, поэтому мы его и рассмотрим. В Apache 1.3, например, когда вы хотели, чтобы все файлы .shtml были проанализированы на наличие SSI директив, необходимо было использовать строку, подобную этой:
AddHandler server-parsed .shtml
В Apache 2.0 нет обработчика server-parsed, поэтому данный подход не работает. Вместо этого, вам необходимо добавить фильтр INCLUDES, используя следующую строку:
SetOutputFilter INCLUDES
Эта директива определяется в секциях File, Directory или Location, для уверенности в том, что любые данные, отправленные клиенту, проанализированы на наличие SSI директив. Однако из-за этого ваш конфигурационный файл может стать более объемным и сложным для чтения. Также это означает, что обработчики (Handler) и mime-типы перестали быть настолько важными для Apache как раньше. Большинство модулей, которые генерируют данные, могут использовать стандартный обработчик для чтения файла с диска, а затем использовать фильтр для изменения считанных данных.

Трудности с IPv6

К сожалению, установка нашего сервера принесла больше трудностей, чем мы ожидали. Первая проблема была с настройкой виртуальных хостов: так как все сайты apache.org физически находятся на одной машине, поэтому логично, что для нас это было важной возможностью сервера. Проблема заключалась в том, что сайт apache.org работал на платформе, которая понимала и IPv4, и IPv6. Сервер Apache 2.0 поддерживает IPv6 автоматически, но проблема заключается в том, что на платформах, которые тоже поддерживают IPv6, серверная поддержка работает “слишком” хорошо.
Если ваша платформа поддерживает IPv6, то очень сложно заставить Apache 2.0 использовать IPv4. Разработчики сервера обсуждали возможность использования конфигурационного флага для определения типа адресации. Тем не менее, до сих пор эта директива не реализована. Сейчас, если у Вас возникли проблемы с доступом к серверу, то проблема, вероятно, будет в поддержке IPv6. Чтобы решить эту проблему, Вы можете использовать спецификатор * в Вашем конфигурационном файле для задания IP адресов. Это заставит Ваш сервер связать некоторый порт со всеми IP адресами.
Мы решили запустить сервер на порту 8091, тем самым протестировать его неделю перед тем, как начать использовать полноценно. Когда мы это сделали, то обнаружили, что сервер еще недостаточно стабилен для работы, так как Apache перестал отвечать на запросы через несколько часов работы.
Что же случилось? Просто существуют слишком много мелких отличий между браузерами, которые могут вызывать ошибки. И их очень сложно обнаружить.

Заключение

Вот и все проблемы, которые нам затруднили переход с Apache 1.3 на Apache 2.0. Данная статья не рассматривает всех проблем, которые могут у Вас случиться при переходе на Apache 2.0, но я надеюсь, что она предоставляет ответы на большинство возникающих вопросов и дает Вам стартовую точку для Вашего “переезда”. Также я хочу Вам напомнить, что Apache станет лучше только тогда, когда его пользователи будут помогать разработчикам. Поэтому, если Вы обнаружили проблему, которую Вы не можете решить, пожалуйста, оставьте отчет о ней в базе ошибок на http://bugs.apache.org.
В следующей статье, я объясню, как создавать фильтры, и опишу новый механизм, позволяющий одному модулю модифицировать данные другого.

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • News2.ru
  • NewsLand.ru
  • del.icio.us
  • BobrDobr.ru
  • Ma.gnolia
  • Digg
  • Reddit
  • Technorati
  • Slashdot
  • Netscape
  • DZone
  • ThisNext
  • Furl
  • YahooMyWeb
Опубликовано в: Установка Apache Январь 29, 2006

32 Комментариев »

  1. Доброго времени.
    У меня интересная процедура переноса apache 1.3.37 на версию apache 2.2.4
    Не могли бы вы посоветовать по долгу вашей практики с серверами apache.
    Моя задача включает в себя перенос сервера на более новую версию apache с модулем mod_csp
    есть замтки по этому пвоводу?
    (с) Сергей

    Комментарий от srg — Сентябрь 12, 2007 @ 12:17 pm

  2. ЗАмечательная статья!!!Все понятно написано! Уважаю!!! спасибки !РЕСПЕКТ))
    _________________
    exhaustsys.ru

    Комментарий от андрюха — Август 28, 2008 @ 11:39 pm

  3. Купил вот VDS сервер пробую установить и настроить все. Что бы мы “чайники” без Вас делали. Спасибо.

    Комментарий от Евгений — Октябрь 8, 2008 @ 9:55 am

  4. А ЧО ТАКОЕ АПАТЧ?

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 8:51 am

  5. НИЧО НЕЙАСНО

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 8:57 am

  6. ОЯЕБУ

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 8:57 am

  7. ПАФФФ

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:08 am

  8. DODODOOO

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:09 am

  9. сру

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:11 am

  10. это СВОБОДА РАВЕНСТВО УПЯЧКА!!!!!

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:11 am

  11. ololol

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:13 am

  12. or not?

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:13 am

  13. or yes?

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:14 am

  14. ahaha

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:16 am

  15. ohoho

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:17 am

  16. http://tvoezdorovje.ru/

    Комментарий от УПЯЧКА — Октябрь 16, 2008 @ 9:18 am

  17. http://danetnavern0.narod.ru

    Комментарий от ДаНет — Октябрь 18, 2008 @ 12:22 pm

  18. ololo

    Комментарий от Богдан — Октябрь 18, 2008 @ 12:33 pm

  19. ahah

    Комментарий от Антон — Октябрь 18, 2008 @ 12:37 pm

  20. 1!1!11!1

    Комментарий от Настасия — Октябрь 18, 2008 @ 12:39 pm

  21. Спасибо,теперь начну саму операцию перехода!

    Комментарий от Валерия — Ноябрь 4, 2008 @ 7:17 pm

  22. А изменения какие с 1,3 до 2,0 ? Или хотфиксы хотяб?

    Комментарий от Seller — Декабрь 11, 2008 @ 6:02 pm

  23. А какой толк будет от отправки отчета туда им ?

    Комментарий от Рыболов — Декабрь 12, 2008 @ 11:38 pm

  24. Всё легло ровно, без глюков, спасиб автору, остальным-отрастите руки!

    Комментарий от Шестопалов — Декабрь 13, 2008 @ 7:10 pm

  25. Хорошо что блог нашел и инструкцию, а то натворил бы делов.

    Комментарий от Русский — Декабрь 14, 2008 @ 6:00 pm

  26. Блин пробовал 3 раза точно по инструкции не встала ни разу.

    Комментарий от grang — Январь 10, 2009 @ 11:11 pm

  27. Аналогичная ситуация… и что делать не знаю.

    Комментарий от legim — Январь 10, 2009 @ 11:13 pm

  28. Может вы путаете ? Это для сервера а не сайта

    Комментарий от Мачо мэн — Январь 12, 2009 @ 1:53 am

  29. ага, тупите вы что-то страшно

    Комментарий от Абрамович — Январь 13, 2009 @ 2:49 am

  30. Сделали всё по вашей инструкции, всё легло ровно..спасибо вам большое

    Комментарий от Раджа — Январь 14, 2009 @ 1:32 am

  31. Докладываю - переезд прошел успешно..благодарчик

    Комментарий от Тол100пуз — Январь 15, 2009 @ 2:19 am

  32. Насчет гибкости в настройках я б не говорил

    Комментарий от Сергей — Январь 17, 2009 @ 5:39 pm

Оставить комментарий

You must be logged in to post a comment.

Работает на WordPress