Kompilieren von Apache für Microsoft Windows

Erstellen von httpd mit den enthaltenen Visual Studio-Projektdateien

Anforderungen

Zum Kompilieren von Apache muss die folgende Umgebung ordnungsgemäß installiert sein:

  • Speicherplatz

    Stellen Sie sicher, dass mindestens 200 MB freier Speicherplatz zur Verfügung stehen. Nach der Installation benötigt Apache ungefähr 80 MB Speicherplatz sowie Speicherplatz für Protokoll- und Cache-Dateien, die schnell wachsen können. Der tatsächliche Speicherplatzbedarf hängt stark von der gewählten Konfiguration und den Modulen oder Bibliotheken von Drittanbietern ab, insbesondere wenn OpenSSL ebenfalls erstellt wird. Da viele Dateien aus Text bestehen und sehr leicht komprimiert werden können, halbiert die NTFS-Dateisystemkomprimierung diese Anforderungen.

  • Entsprechende Patches

    Die httpd-Binärdatei wird mit Hilfe mehrerer Patches für Pakete von Drittanbietern erstellt, die sicherstellen, dass der freigegebene Code erstellt und debuggt werden kann. Diese Patches sind verfügbar und werden ab http://www.apache.org/dist/httpd/binaries/win32/patches_applied/ verteilt und sollten angewendet werden, um identische Ergebnisse wie die „offiziellen“ ASF-verteilten Binärdateien zu erhalten.

  • Microsoft Visual C++ 6.0 (Visual Studio 97) oder höher.

    Apache kann mit den Befehlszeilentools oder in der Visual Studio IDE Workbench erstellt werden. Der Befehlszeilenaufbau erfordert, dass die Umgebung die PATH, INCLUDE, LIB und andere Variablen, die mit dem Skript vcvars32.bat konfiguriert werden können.

    Möglicherweise möchten Sie das Visual Studio Processor Pack für Ihre ältere Version von Visual Studio oder eine Vollversion (nicht Express) neuerer Visual Studio-Editionen für das ml.exe-Assembler. Auf diese Weise können Sie OpenSSL auf Wunsch mithilfe der effizienteren Assemblercode-Implementierung erstellen.
    Nur die Microsoft Compiler-Toolkette wird von den aktiven httpd-Mitwirkenden aktiv unterstützt. Obwohl das Projekt regelmäßig Patches akzeptiert, um sicherzustellen, dass MinGW und andere alternative Builds funktionieren und verbessert werden, werden sie nicht aktiv gepflegt und im Laufe der normalen Entwicklung häufig beschädigt.
  • Aktualisiert Microsoft Windows Platform SDK, Februar 2003 oder höher.

    Ein geeignetes Windows-Plattform-SDK ist standardmäßig in den Vollversionen (nicht Express/Lite) von Visual C ++ 7.1 (Visual Studio 2002) und höher enthalten.

    Um Visual C ++ 6.0 oder 7.0 (Studio 2000 .NET) verwenden zu können, muss die Platform SDK-Umgebung mit dem Skript setenv.bat (vom Platform SDK installiert) vorbereitet werden, bevor der Befehlszeilenbuild oder die msdev / devenv-GUI-Umgebung gestartet werden. Bei der Installation des Platform SDK für Visual Studio Express-Versionen (2003 und höher) sollte die Standardumgebung entsprechend angepasst werden.

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

  • Perl und awk

    Mehrere hier empfohlene Schritte erfordern einen Perl-Interpreter während des Build-Vorbereitungsprozesses, der jedoch ansonsten nicht erforderlich ist.

    Um Apache innerhalb des Build-Systems zu installieren, werden mehrere Dateien mit dem Dienstprogramm awk.exe geändert. awk wurde gewählt, da es ein sehr kleiner Download ist (im Vergleich zu Perl oder WSH / VB) und die Aufgabe erfüllt, Konfigurationsdateien bei der Installation zu ändern. Brian Kernighans http://www.cs.princeton.edu/~bwk/btl.mirror/ -Site enthält eine kompilierte native Win32-Binärdatei, http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe, die Sie mit dem Namen awk.exe (statt awk95.exe) speichern müssen.

    Wenn awk.exe wird nicht gefunden, Makefile.das Installationsziel von win führt keine Ersetzungen in der installierten aus.conf-Dateien. Sie müssen die installierte manuell ändern.conf-Dateien, damit der Server gestartet werden kann. Suchen und ersetzen Sie alle „@token@“ -Tags nach Bedarf.
    Die Visual Studio-IDE findet awk.exe nur über den PFAD oder ausführbaren Pfad, der in den Verzeichnissen des Menüpunkts Extras -> Optionen -> (Projekte ->) angegeben ist. Stellen Sie sicher, awk.exe befindet sich in Ihrem Systempfad.
    Beachten Sie auch, dass das awk-Dienstprogramm gawk.exe heißt, wenn Sie Cygwin Tools (http://www.cygwin.com/) verwenden, und dass die Datei awk.exe wirklich ein Symlink zur Datei gawk.exe ist. Die Windows-Befehlsshell erkennt Symlinks nicht, und aus diesem Grund schlägt InstallBin fehl. Eine Problemumgehung besteht darin, awk.exe aus der Cygwin-Installation zu löschen und gawk.exe nach awk.exe zu kopieren. Beachten Sie auch die Cygwin / Mingw-Ports von Gawk 3.0.x waren Buggy, bitte aktualisieren Sie auf 3.1.x, bevor Sie versuchen, einen Gawk-Port zu verwenden.
  • zlib-Bibliothek (für mod_deflate)

    Zlib muss in einem srclib Unterverzeichnis mit dem Namen zlib installiert werden. Dies muss an Ort und Stelle gebaut werden. Zlib kann von http://www.zlib.net/ erhalten werden – die mod_deflate wird bestätigt, dass sie mit Version 1.2.3 korrekt funktioniert.

    nmake -f win32\Makefile.msc
    nmake -f win32\Makefile.msc test

  • OpenSSL-Bibliotheken (für mod_ssl und ab.exe mit SSL-Unterstützung)

    Die OpenSSL-Bibliothek ist kryptografische Software. Das Land, in dem Sie derzeit wohnen, kann Beschränkungen für die Einfuhr, den Besitz, die Verwendung und/oder die Wiederausfuhr von Verschlüsselungssoftware in ein anderes Land haben. BEVOR Sie Verschlüsselungssoftware verwenden, überprüfen Sie bitte die Gesetze, Vorschriften und Richtlinien Ihres Landes in Bezug auf den Import, Besitz oder die Verwendung und den Reexport von Verschlüsselungssoftware, um festzustellen, ob dies zulässig ist. Weitere Informationen finden Sie unter http://www.wassenaar.org/.

    Zum Konfigurieren und Erstellen von OpenSSL muss Perl installiert sein.

    OpenSSL muss in einem srclib -Unterverzeichnis mit dem Namen openssl installiert werden, das von http://www.openssl.org/source/ abgerufen wurde, um mod_ssl oder das abs.exe -Projekt zu kompilieren, das ab ist.c mit aktivierter SSL-Unterstützung. Um OpenSSL für die Verknüpfung mit Apache mod_ssl oder abs vorzubereiten.exe, und deaktivieren Sie die belasteten Funktionen in OpenSSL, können Sie die folgenden Build-Befehle verwenden:

    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

    Es ist nicht ratsam, zlib-dynamic zu verwenden, da dadurch die Kosten für die Deflation von SSL-Streams auf die erste Anforderung übertragen werden, die die ZLIB-DLL laden muss. Hinweis Der vorgeschlagene Patch aktiviert das Flag -L für die Arbeit mit Windows-Builds und korrigiert den Namen von zdll.lib und sicherstellt .pdb-Dateien werden zur Fehlerbehebung generiert. Wenn der Assembler nicht installiert ist, fügen Sie oben no-asm hinzu und verwenden ms\do_ms.bat anstelle von ms\do_masm .bat-Skript.
  • Datenbankbibliotheken (für mod_dbd und mod_authn_dbm)

    Die apr-util-Bibliothek stellt dem httpd-Server und seinen Modulen die Clientfunktionalität dbm (Keyed Database) und dbd (Query Oriented Database) zur Verfügung, z. B. Authentifizierung und Autorisierung. Die sdbm dbm- und odbc dbd-Anbieter werden bedingungslos kompiliert.

    Die dbd-Unterstützung umfasst das Oracle Instantclient-Paket, MySQL, PostgreSQL und sqlite. Um diese alle zu erstellen, richten Sie beispielsweise die Bibliothek so ein, dass sie den Bibliothekspfad, INCLUDE den Header-Pfad und PATH den DLL-Bin-Pfad aller vier SDKs enthält, und legen Sie die Umgebungsvariable DBD_LIST fest, um den Build darüber zu informieren, welche Client-Treiber-SDKs korrekt installiert sind, z.;

    set DBD_LIST=sqlite3 pgsql oracle mysql

    In ähnlicher Weise kann die DBM-Unterstützung mit DBM_LIST erweitert werden, um einen Berkeley DB Provider (db) und / oder gdbm Provider zu erstellen, indem zuerst LIB, INCLUDE und PATH konfiguriert werden, um sicherzustellen, dass die Bibliotheken und Header der Client-Bibliothek verfügbar sind.

    set DBM_LIST=db gdbm

    Abhängig von der Auswahl der Datenbankdistributionen kann es erforderlich sein, den tatsächlichen Linkzielnamen (z. B. gdbm.in: lib vs. libgdb.lib), die in der entsprechenden aufgeführt sind.dsp/.mak-Dateien in den Verzeichnissen srclib\apr-util\dbd oder …\dbm.

    Siehe README-win32.txt-Datei für weitere Hinweise zum Abrufen der verschiedenen Datenbanktreiber-SDKs.

Erstellen aus Unix-Quellen

Die Richtlinie des Apache HTTP Server-Projekts besteht darin, nur Unix-Quellen freizugeben. Windows-Quellpakete, die zum Download bereitgestellt werden, wurden von Freiwilligen bereitgestellt und sind möglicherweise nicht für jede Version verfügbar. Sie können den Server weiterhin unter Windows aus dem Unix-Quell-Tarball mit nur wenigen zusätzlichen Schritten erstellen.

  1. Laden Sie den Unix-Quell-Tarball für die neueste Version herunter und entpacken Sie ihn.
  2. Laden und entpacken Sie den Unix-Quell-Tarball für die neueste Version von APR, AR-Util und APR-Iconv und legen Sie diese Quellen in die Verzeichnisse httpd-2.x.x\srclib\apr, httpd-2.x.x\srclib\apr-util und httpd-2.x.x\srclib\apr-iconv
  3. Öffnen Sie eine Eingabeaufforderung und stellen Sie eine Verbindung zum httpd-2 her.x.x-Ordner
  4. Führen Sie das Dienstprogramm zur Konvertierung von Zeilenenden an der Eingabeaufforderung aus;

perl srclib\apr\build\lineends.pl

Sie können den Server jetzt mit der Visual Studio-Entwicklungsumgebung mithilfe der IDE erstellen. Befehlszeilen-Builds des Servers sind aus Unix-Quellen nur möglich, wenn Sie sie exportieren .mak-Dateien wie unten erläutert.

Befehlszeilen-Build

Makefile.win ist das Apache-Makefile der obersten Ebene. Um Apache unter Windows zu kompilieren, verwenden Sie einfach einen der folgenden Befehle, um den release – oder debug -Flavor zu erstellen:

nmake /f Makefile.win _apacher
nmake /f Makefile.win _apached

Jeder Befehl kompiliert Apache. Letzteres deaktiviert die Optimierung der resultierenden Dateien, wodurch es einfacher wird, den Code in einem Schritt zu bearbeiten, um Fehler zu finden und Probleme aufzuspüren.

Sie können Ihre apr-util dbd- und dbm-Providerauswahl mit den zusätzlichen make (environment) -Variablen DBD_LIST und DBM_LIST hinzufügen, siehe die Kommentare zu Datenbankbibliotheken oben. Überprüfen Sie die ersten Kommentare in Makefile.win für zusätzliche Optionen, die beim Aufrufen des Builds bereitgestellt werden können.

Developer Studio Workspace IDE Build

Apache kann auch mit der Visual Studio-Entwicklungsumgebung von VC ++ kompiliert werden. Um diesen Prozess zu vereinfachen, wird ein Visual Studio-Arbeitsbereich Apache.dsw bereitgestellt. In diesem Arbeitsbereich wird die gesamte Liste der .dsp -Projekte angezeigt, die für die vollständige Apache-Binärversion erforderlich sind. Es enthält Abhängigkeiten zwischen den Projekten, um sicherzustellen, dass sie in der entsprechenden Reihenfolge erstellt werden.

Öffnen Sie den Apache.dsw -Arbeitsbereich und wählen Sie InstallBin (Release oder Debug build, wie gewünscht) als aktives Projekt aus. InstallBin bewirkt, dass alle zugehörigen Projekte erstellt werden, und ruft dann Makefile.win auf, um die kompilierten ausführbaren Dateien und DLLs zu verschieben. Sie können die Auswahl von INSTDIR= personalisieren, indem Sie die Einstellungen von InstallBin, Registerkarte Allgemein, Befehlszeileneintrag erstellen ändern. INSTDIR ist standardmäßig das Verzeichnis /Apache2. Wenn Sie nur eine Testkompilierung (ohne Installation) wünschen, können Sie stattdessen das BuildBin -Projekt erstellen.

Die .dsp -Projektdateien werden im Visual Studio 6.0 (98) -Format verteilt. In: Visual C++ 5.0 (97) wird sie erkennen. Benutzer von Visual Studio 2002 (.NET) und höher müssen Apache.dsw plus die .dsp -Dateien in Apache.sln plus .msproj -Dateien konvertieren. Stellen Sie sicher, dass Sie die .msproj -Datei erneut konvertieren, wenn sich die .dsp -Quelldatei ändert! Öffnen Sie einfach Apache.dsw in der VC ++ 7.0-IDE erneut und konvertieren Sie sie erneut.

Es gibt einen Fehler in der .vcproj Umwandlung von .dsp-Dateien. devenv.exe analysiert das / D-Flag falsch für RC-Flags, die lange / D’defines in Anführungszeichen enthalten, die Leerzeichen enthalten. Befehl:

perl srclib\apr\build\cvtdsp.pl -2005

konvertiert die / D-Flags für RC-Flags, um eine alternative, analysierbare Syntax zu verwenden; Leider wird diese Syntax von Visual Studio 97 oder seinen Vorgängern nicht unterstützt.mak-Dateien. Diese /D-Flags werden verwendet, um die lange Beschreibung des mod_apachemodule.so dateien auf die freigegebene .rc resource version-Bezeichner erstellen.

Erstellen mit OpenSSL 1.1.0 und höher Aufgrund von Unterschieden in der Build-Struktur von OpenSSL ab Version 1.1.0 müssen Sie die betroffenen DSP-Dateien konvertieren mit cvtdsp.pl ab APR 1.6 oder höher. Befehl:

perl srclib\apr\build\cvtdsp.pl -ossl11

Benutzer von Visual Studio 2002 (.NET) und höher sollten auch das Build-Menü im Dialogfeld Configuration Manager verwenden, um sowohl die Debug – als auch die Release -Lösungsmodule abs, mod_deflate und mod_ssl -Komponenten sowie alle Komponenten, die mit apr_db* beginnen, zu deaktivieren. Diese Module werden durch Aufrufen von nmake oder der IDE direkt mit dem BinBuild -Ziel erstellt, das diese Module bedingt erstellt, wenn die srclib -Verzeichnisse openssl und / oder zlib vorhanden sind, und basierend auf der Einstellung von DBD_LIST und DBM_LIST Umgebungsvariablen.

Exportieren der Befehlszeile .mak-Dateien

Und .mak Dateien stellen einen größeren Aufwand dar, sind jedoch für Visual C ++ 5.0-Benutzer erforderlich, um mod_ssl, abs (ab mit SSL-Unterstützung) und / oder mod_deflate zu erstellen. Der .mak-Dateien unterstützen auch eine breitere Palette von C ++ – Toolkettendistributionen wie Visual Studio Express.

Sie müssen zuerst alle Projekte erstellen, um alle dynamisch automatisch generierten Ziele zu erstellen, damit Abhängigkeiten korrekt analysiert werden können. Erstellen Sie das gesamte Projekt aus Visual Studio 6 heraus.0 (98) IDE, mit dem Ziel BuildAll, dann verwenden Sie das Projektmenü Export für alle Makefiles (aktivieren Sie „mit Abhängigkeiten“.) Führen Sie den folgenden Befehl aus, um absolute Pfade in relative Pfade zu korrigieren, damit sie überall erstellt werden:

perl srclib\apr\build\fixwin32mak.pl

Sie müssen diesen Befehl aus dem obersten Verzeichnis des httpd-Quellbaums eingeben. Jede .mak – und .dep -Projektdatei im aktuellen Verzeichnis und darunter wird korrigiert und die Zeitstempel an die .dsp angepasst.

Überprüfen Sie immer die generierten .mak – und .dep -Dateien auf Platform SDK oder andere lokale, maschinenspezifische Dateipfade. Das Verzeichnis DevStudio\Common\MSDev98\bin\ (VC6) enthält eine Datei sysincl.dat, in der alle Ausnahmen aufgelistet sind. Aktualisieren Sie diese Datei (einschließlich vorwärts- und rückwärtsgestrichener Pfade, z. B. sys/time.h und sys\time.h), um solche neueren Abhängigkeiten zu ignorieren. Wenn Sie lokale Installationspfade in eine verteilte .mak -Datei aufnehmen, schlägt der Build vollständig fehl.

Wenn Sie einen Patch zurückbringen, der Projektdateien überarbeitet, müssen wir Projektdateien im Visual Studio 6.0-Format festschreiben. Änderungen sollten einfach sein, mit minimalen Kompilierungs- und Verknüpfungsflags, die von allen Visual Studio-Umgebungen erkannt werden können.

Installation

Sobald Apache kompiliert wurde, muss es in seinem Serverstammverzeichnis installiert werden. Der Standardwert ist das Verzeichnis \Apache2 desselben Laufwerks.

Verwenden Sie einen der folgenden nmake -Befehle, um alle Dateien automatisch im gewünschten Ordnerverzeichnis zu erstellen und zu installieren:

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

Das Argument dir für INSTDIR gibt das Installationsverzeichnis an; es kann weggelassen werden, wenn Apache in \Apache22 (des aktuellen Laufwerks) installiert werden soll.

Warnung zum Erstellen von Apache aus dem Entwicklungsbaum

Hinweis Nur die .dsp -Dateien werden zwischen release -Builds verwaltet. Die .mak -Dateien werden aufgrund der enormen Zeitverschwendung des Überprüfers NICHT neu generiert. Daher können Sie sich nicht auf die obigen NMAKE -Befehle verlassen, um alle .dsp -Projektdateien zu erstellen, es sei denn, Sie exportieren dann alle .mak -Dateien selbst aus dem Projekt. Dies ist nicht erforderlich, wenn Sie in der Microsoft Developer Studio-Umgebung erstellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.