Наш партнер GENESIS HACKSPACE

Хакспейс: Клуб — физическое место, где собираются увлеченные техникой, IT, электроникой, роботами и физикой люди. Первая сеть бесплатных хакспейсов в г.Тверь и области.

Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

(Шутка с Баша)

 

Хотелось бы начать с того, что на днях вышел Apache 2.4.3, в котором наконец-то убран баг с AcceptFilter https none и ресурс Apache Haus теперь официально рекомендует обновиться с 2.2 до 2.4. Важно отметить, что на Apache 2.4 (правда, только на 32-битную версию) портрирован модуль поддержки PHP.

Пара полезных ссылок:

Обновление Apache с 2.2 до 2.4 не вызывает каких либо особых трудностей. Тем не менее,

на некоторые моменты следует обратить внимание.

Изменения компиляционных настроек

Процесс компиляции очень схож с таковым для версии 2.2. Ваша старая строка параметров конфигурации (которая расположена в папке build/config.nice установленного сервера) может быть использована в большинстве случаев. Присутствует всего несколько изменений в настройках по умолчанию. Рассмотрим их:

  • Три модуля были удалены: mod_authn_default, mod_authz_default, mod_mem_cache. Если вы пользовались mod_mem_cache в 2.2, обратите внимание на mod_cache_disk в 2.4.
  • Все балансировочные реализации были перемещены в индивидуальные, автономные mod_proxy submodules, например mod_lbmethod_bybusyness. Вы можете встраивать и загружать их по отдельности.
  • Из поддерживаемых платформ были удалены: BeOS, TPF, и ещё более старые платформы, такие как A/UX, Next и Tandem. В любом случае, кажется Apache там всё равно не работал.
  • конфигурация: динамические модули (DSO) встроены по умолчанию
  • конфигурация: по умолчанию загружаются только базовые настройки модулей. Другие дерективы LoadModule закомментированы.
  • конфигурация: настройки модуля «most» встроены по умолчанию
  • конфигурация: настройки модуля «reallyall» добавлены к модулям разработчика в настройки «all»

Изменение рабочих настроек

Были сделаны значительные изменения в настройках конфигурации авторизации и другие небольшие конфигурационные изменения, которые требуют внесения правок в ваш конфигурационный файл 2.2 перед использованием его в 2.4.

Авторизация

Все конфигурационные файлы, использующие механизм авторизации, вероятно, придётся править.

Вам следует просмотреть Справочную информацию по Идентификации, Авторизации и Контролю доступа, особенно секцию Сразу после авторизации, которая объясняет новый механизм для контроля порядка в котором применяются директивы авторизации.

Директивы, контролирующие как модуль авторизации отвечает, когда авторизация не удалась, были удалены: а именно управляющие команды AuthzLDAPAuthoritative, AuthzDBDAuthoritative, AuthzDBMAuthoritative, AuthzGroupFileAuthoritative, AuthzUserAuthoritative и AuthzOwnerAuthoritative. Они были заменены более выразительными RequireAny, RequireNone и RequireAall.

Контроль доступа

В 2.2 контроль доступа базировался на клиентском имени компьютера, IP адресе и других характеристиках клиента, которые сравнивались с правилами установленными директивами Order, Allow, Deny и Satisfy.

В 2.4 такой контроль доступа выполнен в том же духе, что и проверки авторизации, т.е. с использованием модуля mod_authz_host. Старые идиомы следует заменить новым идентификационным механизмом, хотя сохранена совместимость старых настроек с новым модулем mod_access_compat .

Здесь несколько примеров нового и старого способов установления одинаковых правил доступа.

В этом примере все запросы отклоняются

2.2 конфигурация:

2.4 конфигурация:

В этом примере все запросы разрешены

2.2 конфигурация:

2.4 конфигурация:

В этом примере, все хосты для домена example.org разрешены, ко всем другим хостам – доступ закрыт.

2.2 конфигурация:

2.4 конфигурация:

Другие конфигурационные изменения

Некоторые маленькие корректировки могут быть необходимыми для особых случаев, описанных ниже.


Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

  • MaxRequestsPerChild был переименован MaxConnectionsPerChild, это более точно отражает суть. Старое имя всё ещё поддерживается.
  • MaxClients был переименован в MaxRequestWorkers, это более точно отражает суть. Для асинхронных MPMs, как например событие, максимальное количество клиентов не является эквивалентом количества рабочих процессов. Старое имя всё ещё поддерживается.
  • Деректива DefaultType больше не имеет какого либо эффекта, разве что показывает предупреждение, если она используется с любой величиной, кроме none. Вам следует использовать другие конфигурационные настройки для замены в 2.4.
  • EnableSendfile сейчас по умолчанию установлена на Off.
  • FileETag по умолчанию сейчас «MTime Size» (без INode).
  • mod_log_config: ${cookie}C соответствует полному имени cookie. Ранее, любая подстрока соответствовала.
  • mod_dav_fs: Формат файла DavLockDB изменён для систем с дескрипторами.  Старый файл DavLockDB должен быть удалён или обновлён.
  • KeepAlive принимает только значения On или Off. Раньше любые значения, отличные от «Off» или «0» были интерпретированы как «On».
  • Директивы AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex и WatchdogMutexPath были заменены единственной дерективой Mutex. В каждом отдельном случае следует определять, следует ли эти директивы просто удалить из файла настроек 2.2 или вместо них должна использоваться Mutex.
  • mod_cache: CacheIgnoreURLSessionIdentifiers сейчас сравнивает на точное совпадение, вместо частичного совпадения. Если ваша конфигурация использовала конкретную строку, например sessionid  для определения совпадения в /someapplication/image.gif;jsessionid=123456789, то вы будете должны заменить sessionid на полную строку, т.е. jsessionid.
  • mod_ldap: LDAPTrustedClientCert сейчас является только последовательной покаталоговой настройкой. Если вы используете эту директорию, пересмотрите вашу конфигурацию, чтобы убедиться, что она представлена во всех необходимых папках.
  • mod_filter: FilterProvider синтакс изменился и сейчас используется логическое (булевое) выражение для определения применим ли фильтр.
  • mod_include: 
    • выражение #if expr сейчас использует новый парсер. Старый синтакс может быть восстановлен директивой SSILegacyExprParser.
    • конфигурация директивы SSI* больше не приводит к тому, что все SSI* директивы в подкаталогах сбрасываются к их дефолтным значениям.
  • mod_charset_lite: Опция DebugLevel была удалена в пользу настройки в модуле LogLevel.
  • mod_ext_filter: Опция DebugLevel была удалена в пользу настройки в модуле LogLevel.
  • mod_ssl: основанные на CRL отмены проверок сейчас должны быть явно настроены в SSLCARevocationCheck.
  • mod_substitute: Максимальная длина строки теперь ограничена 1MB.
  • mod_reqtimeout: Если модуль загружен, теперь он будет устанавливать несколько таймаутов по умолчанию.

Разные изменения

  • mod_autoindex: теперь точно называет и отображает описание для файлов .xhtml, которые раньше игнорировались.
  • mod_ssl: дефолтный формат величин *_DN изменён. Старый формат может всё ещё использоваться с новым аргументом LegacyDNStringFormat в to SSLOptions. Протокол SSLv2 больше не поддерживается. SSLProxyCheckPeerCN и SSLProxyCheckPeerExpire сейчас по умолчанию установлены в On, что при прокси запросах к HTTPS хосту с плохими или устаревшими сертификатами будет приводить к ошибке 502 (Bad gateway).
  • htpasswd теперь использует MD5 хэш по умолчанию для всех платформ.
  • Деректива NameVirtualHost больше не имеет какого-либо эффекта, кроме отображения предупреждения. Любые комбинации адрес/пор появляющиеся во множественных виртуальных хостах безоговорочно трактуются как имя виртуального хоста.
  • mod_deflate сейчас пропускает сжатие, если известно, что размер добавляемых метаданных (заголовков) больше, чем размер сжимаемых данных.
  • Многоязычные документы ошибок из 2.2.x могут не работать, если они не приведены к новому синтаксу элементов mod_include’s #if expr= или если директива SSILegacyExprParser не включена для каталогов, содержащих документы ошибок.
  • Функциональность, обеспечиваемая mod_authn_alias в предыдущих версиях (например директивой AuthnProviderAlias) перемещена mod_authn_core.

Сторонние модули

Все модули должны быть перекомпилированы для 2.4 перед загрузкой.

Много сторонних модулей созданных для версии 2.2 будут работать без внесения дополнительных изменений с сервером Apache HTTP версии 2.4. Некоторые могут потребовать изменений, обратитесь к обзору обновлений в API .

Общие проблемы при обновлении

  • Ошибки запуска: 
    • Invalid command ‘User’, perhaps misspelled or defined by a module not included in the server configuration – загрузите модуль mod_unixd
    • Invalid command ‘Require’, perhaps misspelled or defined by a module not included in the server configuration, or Invalid command ‘Order’, perhaps misspelled or defined by a module not included in the server configuration – загрузите модуль mod_access_compat, или обновите конфигурации в соответствии с синтаксисом директив авторизации версии 2.4.
    • Ignoring deprecated use of DefaultType in line NN of /path/to/httpd.conf — удалите DefaultType и заменить другими конфигурационными настройками.
  • Ошибки обработки запросов: 
    • configuration error: couldn’t check user: /path – загрузите модуль mod_authn_core.

Для описания всех изменений обратитесь к странице Новые функции.

Данная статья является переводом Upgrading to 2.4 from 2.2.


Следующим шагом, после настройки и тестирования сайта на локалхосте, является выбор качественного и дешёвого интернет хостинга. Я перебрал довольно много решений и нашёл очень хороший вариант — 100 рублей в месяц! За эти деньги даётся профессиональный хостинг, с отличным аптаймом, с бесплатным доменом второго уровня в подарок (!), с 2 гигабайтами места на SSD диске, с неограниченным количеством баз данных, с возможностью подключать неограниченное количество новых доменов (платить придётся только за каждый новый домен — 139 рублей). Вообще, всего хорошего так много, что проще всего посмотреть это здесь.

Кстати, а ведь как здорово иметь собственное доменное имя! Хотя бы для того, чтобы сделать для себя красивый почтовый ящик, вместо чего-нибудь вроде vovan_pupkin_murom1995@mail.ru. Вот здесь можно найти свой собственный домен. Например, я получил бесплатно домен codeby.net, я могу делать почтовые ящики: admin@codeby.net, alex@codeby.net, al@codeby.net и так далее — количество ящиков ничем не ограничено!

Посмотрите, я уверен, это предложение заинтересует любого администратора сайта (хоть начинающего, хоть продвинутого), поскольку это хостинг с настоящим качеством от профессионалов. Кстати, у меня есть промокод, дающий бесплатный месяц, если хотите, можете воспользоваться.

Похожие темы

Делаем локальный сайт (на localhost) доступным для... До открытия доступа на локалхост, рекомендуется установить ModSecurity (mod_security) на Apache. Эта статья для тех, у кого есть сайт на локальном ...
Установка и настройка Apache, PHP, MySQL, phpMyAdm... Если вас интересует, как установить сервер на Windows, то вам сюда "Установка Apache, PHP, MySQL, phpMyAdmin на Windows". Сразу скажу, это будет очен...
Краткий справочник начинающего веб-мастера... Эта статья рассчитана на самых начинающих веб-мастеров, на будущих владельцев веб-сайтов. На codeby.net достаточно инструкций для тонкой, продвинутой ...
Новости софта от 20 октября 2014 года (Apache, jQu... Apache 2.4.10 GA Обновился любимейший сервер Apache. Полный список изменений огромен, вы можете ознакомиться с ним здесь. Октябрь 2014: ...
Распространённые сниппеты .htaccess... Источник: https://n0where.net/common-htaccess-snippets/ Файл .htaccess (hypertext access) это конфигурационный файл на уровне директорий, он под...