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

    Для вашей старой версии Visual Studio вам может потребоваться пакет Visual Studio Processor Pack или полная (не Express) версия более новых изданий Visual Studio для ассемблера ml.exe. Это позволит вам скомпилировать OpenSSL, если это необходимо, используя более эффективный ассемблерный код.
    Только инструментарий Microsoft компилятора активно поддерживается активными участниками разработки httpd. Несмотря на то, что проект регулярно принимает исправления, чтобы обеспечить работу MinGW и других альтернативных сборок, и улучшает их, они не поддерживаются активно и часто ломаются в ходе обычной разработки.
  • Обновлённый пакет платформы Microsoft Windows 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) среда Platform SDK должна быть подготовлена с помощью скрипта setenv.bat (установленного с пакетом Platform SDK) перед началом компиляции с командной строки или запуском графической среды msdev/devenv. Установка 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@" соответствующим образом.
    Visual Studio IDE найдёт awk.exe только из PATH или пути к исполняемому файлу, указанному в пункте меню Tools -> Options -> (Projects ->) Directories. Убедитесь, что awk.exe находится в вашей системной переменной PATH.
    Также обратите внимание, что если вы используете инструменты 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 были неработоспособными, пожалуйста, обновите до 3.1.x перед использованием любого порта gawk.
  • [Необязательно] библиотека 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.

    OpenSSL должна быть установлена в подкаталог srclib с именем openssl, загруженная с http://www.openssl.org/source/, для компиляции mod_ssl или проекта abs.exe, который представляет собой ab.c с поддержкой SSL.

    Для подготовки 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 на первый запрос, который должен загрузить dll zlib. Обратите внимание, что предложенное исправление позволяет флагу -L работать с Windows-сборками, исправляет имя zdll.lib и гарантирует, что для отладки генерируются файлы .pdb. Если ассемблер не установлен, добавьте no-asm и используйте скрипт ms\do_ms.bat вместо ms\do_masm.bat.
  • [Необязательно] Библиотеки баз данных (для mod_dbd и mod_authn_dbm)

    Библиотека apr-util предоставляет функциональность клиента dbm (базы данных с ключами) и dbd (базы данных с запросами) для сервера httpd и его модулей, таких как аутентификация и авторизация. Провайдеры 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, чтобы убедиться в доступности клиентских библиотек libs и заголовков.

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

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

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

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

  1. Загрузите и распакуйте исходный tar-архив Unix для последней версии.
  2. Загрузите и распакуйте исходный tar-архив 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 — это основной Makefile Apache. Чтобы скомпилировать Apache в Windows, просто используйте одну из следующих команд для сборки варианта release или debug.

nmake /f Makefile.win _apacher

nmake /f Makefile.win _apached

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

Вы можете добавить свои выборы провайдеров apr-util dbd и dbm с дополнительными переменными среды make DBD_LIST и DBM_LIST, см. комментарии к разделу [Необязательно] Библиотеки баз данных выше. Просмотрите начальные комментарии в Makefile.win для дополнительных опций, которые можно предоставить при вызове сборки.

Сборка с помощью IDE Workspace Developer Studio

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

END_OF_DOCUMENT_MARKER

Откройте рабочее пространство Apache.dsw, и выберите InstallBin (сборка Release или Debug, по желанию) в качестве активного проекта. InstallBin вызывает сборку всех связанных проектов, а затем вызывает Makefile.win для перемещения скомпилированных исполняемых файлов и DLL. Вы можете настроить выбор INSTDIR=, изменив в настройках 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 в среде разработки VC++ 7.0 ещё раз и преобразуйте.

Существует ошибка в преобразовании файлов .vcproj из .dsp файлов. devenv.exe неправильно интерпретирует флаг /D для флагов RC, содержащих длинные цитируемые /D'efines, содержащие пробелы. Команда:
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) и более поздних версий также должны использовать меню "Сборка", диалог "Менеджер конфигураций", чтобы снять флажки с модулей решений 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.

Сначала необходимо собрать все проекты, чтобы создать все динамически сгенерированные целевые значения, чтобы зависимости могли быть обработаны правильно. Соберите весь проект в среде разработки Visual Studio 6.0 (98), используя целевое значение BuildAll, затем используйте меню "Проект" - "Экспорт" для всех файлов make (выбрав "с зависимостями"). Выполните следующую команду для исправления абсолютных путей в относительные пути, чтобы они работали в любом месте:

perl srclib\apr\build\fixwin32mak.pl

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

Всегда проверяйте сгенерированные файлы .mak и .dep на предмет путей к 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 из дерева разработки

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

Сборка httpd с cmake

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

Для сборки httpd с cmake необходимо отдельно собрать APR и APR-util. Обратитесь к их файлам README.cmake за инструкциями.

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

  • Нет сборки cmake для подпроекта APR-iconv, и сборка APR-util cmake не может использовать существующую сборку APR-iconv. Таким образом, mod_charset_lite и, возможно, некоторые сторонние модули не могут быть использованы.
  • Сборка cmake для подпроекта APR-util не поддерживает большинство дополнительных библиотек 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