Spec-Zone.ru › Apache HTTP Server

Компиляция Apache для Microsoft Windows

Перед началом компиляции Apache HTTP Server (httpd) следует учесть ряд важных моментов. Прежде чем начать, ознакомьтесь с разделом Использование Apache HTTP Server в Microsoft Windows.

httpd можно собрать в Windows с помощью системы сборки на основе cmake или файлов проектов Visual Studio, которые сопровождаются разработчиками httpd. Система сборки на основе cmake напрямую поддерживает больше версий Visual Studio, но в настоящее время имеет существенные функциональные ограничения.

Сборка httpd с помощью входящих в комплект файлов проектов Visual Studio

Требования

Для компиляции Apache необходимо правильно установить следующее программное обеспечение и подготовить среду:

  • Место на диске

    Убедитесь, что у вас есть не менее 200 МБ свободного места на диске. После установки Apache требуется приблизительно 80 МБ дискового пространства, а также место для файлов журналов и кэша, которые могут быстро разрастаться. Фактический объём необходимого дискового пространства существенно зависит от выбранной конфигурации и любых сторонних модулей или библиотек, особенно если также собирается OpenSSL. Поскольку многие файлы являются текстовыми и легко сжимаются, сжатие файловой системы NTFS сокращает эти требования вдвое.

  • Соответствующие исправления

    Двоичный файл httpd собирается с использованием нескольких исправлений для сторонних пакетов, которые позволяют собирать и отлаживать выпущенный код. Эти исправления доступны и распространяются по адресу http://www.apache.org/dist/httpd/binaries/win32/patches_applied/. Рекомендуется применять их, чтобы получить результат, идентичный «официальным» двоичным файлам, распространяемым ASF.

  • Microsoft Visual C++ 6.0 (Visual Studio 97) или более поздняя версия.

    Apache можно собирать с помощью инструментов командной строки или в рабочей среде IDE Visual Studio. Для сборки из командной строки необходимо, чтобы среда отражала PATH, INCLUDE, LIB и другие переменные, которые можно настроить с помощью сценария vcvars32.bat.

    Для более старой версии Visual Studio может потребоваться Visual Studio Processor Pack, а для более новых выпусков Visual Studio — полная версия (не Express), чтобы получить ассемблер ml.exe. Это позволит при необходимости собрать OpenSSL с использованием более эффективной реализации на языке ассемблера.
    Активные участники проекта httpd обеспечивают поддержку только цепочки инструментов компилятора Microsoft. Хотя проект регулярно принимает исправления, позволяющие сборкам MinGW и другим альтернативным сборкам работать и улучшать их, они не сопровождаются активно и часто перестают работать в ходе обычной разработки.
  • Обновлённый Microsoft Windows Platform SDK, февраль 2003 года или более поздняя версия.

    Подходящий Windows Platform SDK по умолчанию включён в полные (не express/lite) версии Visual C++ 7.1 (Visual Studio 2002) и более поздние. Пользователи этих версий могут пропустить следующие шаги, если только они явно не выбирают более новую или другую версию Platform SDK.

    Для использования Visual C++ 6.0 или 7.0 (Studio 2000 .NET) перед началом сборки из командной строки или запуском графической среды msdev/devenv необходимо подготовить среду Platform SDK с помощью сценария setenv.bat (устанавливаемого вместе с Platform SDK). Установка Platform SDK для версий Visual Studio Express (2003 и более поздних) должна соответствующим образом настроить среду по умолчанию.

    "c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32"
    "c:\Program Files\Platform SDK\setenv.bat"
  • Perl и awk

    Для нескольких рекомендуемых здесь шагов в процессе подготовки к сборке требуется интерпретатор perl, но в остальном он не нужен.

    Для установки Apache в системе сборки несколько файлов изменяются с помощью утилиты awk.exe. Был выбран awk, поскольку он очень мало весит (по сравнению с Perl или WSH/VB) и позволяет изменять файлы конфигурации при установке. На сайте Брайана Кернигана http://www.cs.princeton.edu/~bwk/btl.mirror/ размещён скомпилированный двоичный файл для Win32: http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe. Его необходимо сохранить под именем awk.exe (а не awk95.exe).

    Если awk.exe не найден, цель install файла Makefile.win не выполнит подстановки в установленных файлах .conf. Чтобы сервер мог запуститься, необходимо вручную изменить установленные файлы .conf. Найдите все теги «@token@» и замените их соответствующим образом.
    IDE Visual Studio будет искать awk.exe только в PATH или по пути к исполняемому файлу, указанному в пункте меню Tools -> Options -> (Projects ->) Directories. Убедитесь, что awk.exe находится в системном пути.
    Также обратите внимание: если вы используете инструменты Cygwin (http://www.cygwin.com/), утилита awk называется gawk.exe, а файл awk.exe фактически является символьной ссылкой на файл gawk.exe. Командная оболочка Windows не распознаёт символьные ссылки, поэтому сборка InstallBin завершится с ошибкой. В качестве обходного решения удалите awk.exe из установки Cygwin и скопируйте gawk.exe в awk.exe. Учтите также, что порты gawk 3.0.x для cygwin/mingw содержали ошибки; перед использованием любого порта gawk обновите его до версии 3.1.x.
  • [Необязательно] Библиотека zlib (для mod_deflate)

    Zlib необходимо установить в подкаталог srclib с именем zlib. Сборку следует выполнять на месте. Zlib можно получить по адресу http://www.zlib.net/ — подтверждена корректная работа mod_deflate с версией 1.2.3.

    nmake -f win32\Makefile.msc
    nmake -f win32\Makefile.msc test
  • [Необязательно] Библиотеки OpenSSL (для mod_ssl и ab.exe с поддержкой ssl)

    Библиотека OpenSSL является криптографическим программным обеспечением. В стране вашего проживания могут действовать ограничения на импорт, владение, использование и/или реэкспорт в другую страну программного обеспечения для шифрования. ПРЕЖДЕ ЧЕМ использовать любое программное обеспечение для шифрования, ознакомьтесь с законами, правилами и политикой вашей страны в отношении импорта, владения, использования и реэкспорта такого программного обеспечения, чтобы узнать, разрешено ли это. Дополнительную информацию см. на сайте http://www.wassenaar.org/.

    Для настройки и сборки OpenSSL необходимо установить perl.

    Для компиляции mod_ssl или проекта abs.exe (ab.c с включённой поддержкой SSL) необходимо установить OpenSSL в подкаталог srclib с именем openssl, скачав его с сайта http://www.openssl.org/source/. Чтобы подготовить OpenSSL для компоновки с Apache mod_ssl или abs.exe и отключить в OpenSSL функции, ограниченные патентами, можно использовать следующие команды сборки:

    perl Configure no-rc5 no-idea enable-mdc2 enable-zlib VC-WIN32 -Ipath/to/srclib/zlib -Lpath/to/srclib/zlib
    ms\do_masm.bat
    nmake -f ms\ntdll.mak
    Не рекомендуется использовать zlib-dynamic, поскольку в этом случае расходы на сжатие потоков SSL переносятся на первый запрос, которому необходимо загрузить zlib dll. Обратите внимание: рекомендуемое исправление позволяет использовать флаг -L в сборках для Windows, исправляет имя zdll.lib и гарантирует создание файлов .pdb для устранения неполадок. Если ассемблер не установлен, добавьте приведённую выше команду no-asm и используйте ms\do_ms.bat вместо сценария ms\do_masm.bat.
  • [Необязательно] Библиотеки баз данных (для mod_dbd и mod_authn_dbm)

    Библиотека apr-util предоставляет серверу httpd и его модулям, например для аутентификации и авторизации, клиентские функции dbm (база данных с индексированием по ключу) и dbd (база данных с запросами). Поставщики sdbm dbm и odbc dbd компилируются безусловно.

    Поддержка dbd включает пакет Oracle instantclient, MySQL, PostgreSQL и sqlite. Чтобы собрать их все, например, настройте LIB так, чтобы он включал путь к библиотекам, INCLUDE — путь к заголовочным файлам, а PATH — путь к каталогам с dll всех четырёх SDK. Затем задайте переменную среды DBD_LIST, чтобы указать, какие SDK клиентских драйверов установлены корректно, например:

    set DBD_LIST=sqlite3 pgsql oracle mysql

    Аналогичным образом поддержку dbm можно расширить с помощью DBM_LIST, чтобы собрать поставщик Berkeley DB (db) и/или поставщик gdbm. Для этого сначала настройте LIB, INCLUDE и PATH, чтобы обеспечить доступность библиотек клиентских библиотек и заголовочных файлов.

    set DBM_LIST=db gdbm
    В зависимости от выбранного дистрибутива базы данных может понадобиться изменить фактическое имя целевого файла компоновки (например, gdbm.lib вместо libgdb.lib), указанное в соответствующих файлах .dsp/.mak в каталогах srclib\apr-util\dbd или ...\dbm.

    Дополнительные советы по получению различных SDK драйверов баз данных см. в файле README-win32.txt.

Сборка из исходного кода Unix

Политика проекта Apache HTTP Server предусматривает выпуск только исходного кода Unix. Исходные пакеты для Windows, доступные для скачивания, предоставлены добровольцами и могут быть недоступны для некоторых выпусков. Тем не менее сервер можно собрать в Windows из архива исходного кода Unix, выполнив несколько дополнительных шагов.

  1. Скачайте и распакуйте архив исходного кода Unix для последней версии.
  2. Скачайте и распакуйте архивы исходного кода Unix для последних версий APR, AR-Util и APR-Iconv, разместите эти исходные файлы в каталогах httpd-2.x.x\srclib\apr, httpd-2.x.x\srclib\apr-util и httpd-2.x.x\srclib\apr-iconv
  3. Откройте командную строку и перейдите в каталог httpd-2.x.x
  4. Выполните в командной строке утилиту преобразования окончаний строк;
perl srclib\apr\build\lineends.pl

Теперь сервер можно собрать с помощью среды разработки Visual Studio и IDE. Сборка сервера из командной строки из исходного кода Unix невозможна, если не экспортировать файлы .mak, как описано ниже.

Сборка из командной строки

Makefile.win — это make-файл Apache верхнего уровня. Чтобы скомпилировать Apache в Windows, используйте одну из следующих команд для сборки варианта release или debug:

nmake /f Makefile.win _apacher

nmake /f Makefile.win _apached

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

Вы можете указать предпочитаемые поставщики dbd и dbm для apr-util с помощью дополнительных переменных make (среды) DBD_LIST и DBM_LIST; см. приведённые выше комментарии о библиотеках баз данных [Необязательно]. Дополнительные параметры, которые можно передать при запуске сборки, описаны в начальных комментариях файла Makefile.win.

Сборка в IDE Developer Studio Workspace

Apache также можно скомпилировать в среде разработки Visual Studio для VC++. Чтобы упростить этот процесс, предоставляется рабочая среда Visual Studio Apache.dsw. В ней отображается полный список рабочих проектов .dsp, необходимых для создания полного выпуска двоичных файлов Apache. Между проектами указаны зависимости, обеспечивающие сборку в нужном порядке.

Откройте рабочую среду Apache.dsw и выберите InstallBin (при необходимости сборку Release или Debug) в качестве активного проекта. InstallBin собирает все связанные проекты, а затем запускает Makefile.win для перемещения скомпилированных исполняемых файлов и dll. Можно настроить выбор INSTDIR=, изменив запись командной строки Build на вкладке General в разделе Settings проекта InstallBin. По умолчанию INSTDIR указывает на каталог /Apache2. Если вам нужна только пробная компиляция (без установки), вместо этого можно собрать проект BuildBin.

Файлы проекта .dsp распространяются в формате Visual Studio 6.0 (98). Visual C++ 5.0 (97) распознаёт их. Пользователям Visual Studio 2002 (.NET) и более поздних версий необходимо преобразовать Apache.dsw вместе с файлами .dsp в файлы Apache.sln и .msproj. Не забудьте повторно преобразовать файл .msproj, если изменится его исходный файл .dsp! Это очень просто: снова откройте Apache.dsw в IDE VC++ 7.0 и выполните преобразование.

В преобразовании файлов .dsp в .vcproj есть ошибка. devenv.exe неправильно разбирает флаг /D для флагов RC, содержащих длинные заключённые в кавычки определения /D с пробелами. Следующая команда:
perl srclib\apr\build\cvtdsp.pl -2005
преобразует флаги /D для флагов RC в альтернативный синтаксис, который можно корректно разобрать; к сожалению, этот синтаксис не поддерживается Visual Studio 97 и экспортированными из неё файлами .mak. Эти флаги /D передают длинное описание файлов mod_apachemodule.so в общую сборку идентификатора версии ресурса .rc.
Сборка с OpenSSL 1.1.0 и выше Из-за изменения структуры сборки OpenSSL, начиная с версии 1.1.0, необходимо преобразовать затронутые файлы dsp с помощью cvtdsp.pl из APR версии 1.6 или выше. Команда:
perl srclib\apr\build\cvtdsp.pl -ossl11

Пользователям Visual Studio 2002 (.NET) и более поздних версий следует также открыть меню Build, диалоговое окно Configuration Manager и снять флажки у модулей решения Debug и Release, компонентов abs, mod_deflate и mod_ssl, а также у всех компонентов, начинающихся с apr_db*. Эти модули собираются запуском nmake или непосредственно из IDE с целью BinBuild. Они собираются при наличии каталогов srclib openssl и/или zlib и в зависимости от значений переменных среды DBD_LIST и DBM_LIST.

Экспорт файлов .mak для сборки из командной строки

Экспортированные файлы .mak требуют дополнительных усилий, но они необходимы пользователям Visual C++ 5.0 для сборки mod_ssl, abs (ab с поддержкой SSL) и/или mod_deflate. Файлы .mak также поддерживают более широкий спектр дистрибутивов цепочек инструментов C++, например Visual Studio Express.

Сначала необходимо собрать все проекты, чтобы создать все динамические автоматически сгенерированные цели и обеспечить корректный разбор зависимостей. Соберите весь проект в IDE Visual Studio 6.0 (98), используя цель BuildAll, затем в меню Project выберите Export для всех make-файлов (установив флажок «with dependencies»). Выполните следующую команду, чтобы преобразовать абсолютные пути в относительные, благодаря чему сборка будет работать в любом месте:

perl srclib\apr\build\fixwin32mak.pl

Эту команду необходимо вводить из каталога верхнего уровня дерева исходного кода httpd. Каждый файл проекта .mak и .dep в текущем каталоге и его подкаталогах будет исправлен, а временные метки обновлены в соответствии с .dsp.

Всегда проверяйте созданные файлы .mak и .dep на наличие путей к Platform SDK или других локальных путей, зависящих от конкретного компьютера. Каталог DevStudio\Common\MSDev98\bin\ (VC6) содержит файл sysincl.dat, в котором перечислены все исключения. Обновите этот файл, добавив пути с прямыми и обратными косыми чертами, например sys/time.h и sys\time.h, чтобы игнорировать такие новые зависимости. Включение путей локальной установки в распространяемый файл .mak приведёт к полному сбою сборки.

Если вы отправляете исправление, изменяющее файлы проектов, мы должны зафиксировать файлы проектов в формате Visual Studio 6.0. Изменения должны быть простыми и включать минимум флагов компиляции и компоновки, распознаваемых всеми средами Visual Studio.

Установка

После компиляции Apache необходимо установить в корневой каталог сервера. По умолчанию это каталог \Apache2 на том же диске.

Чтобы автоматически собрать и установить все файлы в нужный каталог dir, используйте одну из следующих команд nmake:

nmake /f Makefile.win installr INSTDIR=dir
nmake /f Makefile.win installd INSTDIR=dir

Аргумент dir команды INSTDIR задаёт каталог установки; его можно опустить, если Apache устанавливается в \Apache22 (на текущем диске).

Предупреждение о сборке Apache из дерева разработки

Обратите внимание: между сборками release сопровождаются только файлы .dsp. Файлы .mak НЕ создаются заново, чтобы не тратить огромное количество времени рецензентов. Поэтому для сборки изменённых файлов проектов .dsp нельзя полагаться на приведённые выше команды NMAKE, если вы затем не экспортируете из проекта все файлы .mak самостоятельно. При сборке в среде Microsoft Developer Studio это не требуется.

Сборка httpd с помощью cmake

Основная документация по этому механизму сборки находится в файле README.cmake дистрибутива исходного кода. Подробные инструкции см. в этом файле.

Для сборки httpd с помощью cmake необходимо отдельно собрать APR и APR-util. Инструкции см. в файлах README.cmake этих проектов.

Основные ограничения сборки на основе cmake унаследованы от проекта APR-util. Ниже они перечислены с учётом их влияния на httpd:

  • Сборка подпроекта APR-iconv с помощью cmake недоступна, а сборка APR-util с помощью cmake не может использовать уже собранный APR-iconv. Поэтому нельзя использовать mod_charset_lite и, возможно, некоторые сторонние модули.
  • Сборка подпроекта APR-util с помощью cmake не поддерживает большинство дополнительных библиотек DBM и DBD, которые поддерживаются входящими в комплект файлами проектов Visual Studio. Это ограничивает набор серверных частей баз данных, поддерживаемых рядом встроенных и сторонних модулей.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/platform/win_compiling.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API