Некоторые программисты настолько ленивы, что сразу пишут рабочий код.
(Шутка с Баша)
Хотелось бы начать с того, что на днях вышел 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 конфигурация:
Order deny,allow
Deny from all
2.4 конфигурация:
Require all denied
В этом примере все запросы разрешены
2.2 конфигурация:
Order allow,deny
Allow from all
2.4 конфигурация:
Require all granted
В этом примере, все хосты для домена example.org разрешены, ко всем другим хостам – доступ закрыт.
2.2 конфигурация:
Order Deny,Allow Deny from all Allow from example.org
2.4 конфигурация:
Require host example.org
Другие конфигурационные изменения
Некоторые маленькие корректировки могут быть необходимыми для особых случаев, описанных ниже.
- 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 и так далее — количество ящиков ничем не ограничено!
Посмотрите, я уверен, это предложение заинтересует любого администратора сайта (хоть начинающего, хоть продвинутого), поскольку это хостинг с настоящим качеством от профессионалов. Кстати, у меня есть промокод, дающий бесплатный месяц, если хотите, можете воспользоваться.