januari 22, 2022

compilatie en installatie van Apache HTTPD van broncode

de meeste Linux distributies bieden een specifieke versie van Apache httpd binaire pakketten van hun hoofd repositories. Het nadeel is dat deze versie vaak niet wordt bijgewerkt tot de belangrijkste release van de volgende distributie.

om gebruik te maken van functies die alleen beschikbaar zijn vanaf een nieuwere versie of om aangepaste binaries te bouwen, is het compileren en installeren van Apache HTTPD vanuit de broncode eenvoudig.

deze tutorial beschrijft de compilatie en installatie stappen van Apache HTTPD onder RPM-gebaseerde (Fedora, CentOS, …) en Deb-gebaseerde (Debian, Ubuntu, …) Linux distributies. De laatst beschikbare Versie (2.4.x) wordt gebruikt.

Apache httpd broncode

de directory / usr / local/ src / wordt over het algemeen gebruikt voor build-gerelateerde activiteiten (vereist root privileges). Het wordt gebruikt in deze tutorial als de build directory.

de broncode van Apache HTTPD is beschikbaar als een tar-bestand van: http://httpd.apache.org/download.cgi.

de volgende stappen zijn om de broncode te downloaden en uit te pakken in de build directory (de versienummers kunnen indien nodig worden gewijzigd):

cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzls -lcd httpd-2.4.43pwdls

installatie van build afhankelijkheden

de compilatie van Apache HTTPD vereist de installatie van de ontwikkeltools (C compiler, linker, …) en enkele extra bibliotheken.

de vereiste bibliotheken zijn:

  • apr
  • apr-util
  • openssl
  • expat
  • prce

de meeste Linux-distributies leveren deze bibliotheken vanuit de hoofdrepositories. Als het systeem een oude versie van een bibliotheek bevat, kan de broncode afzonderlijk worden gedownload en gecompileerd. Een latere sectie laat zien hoe je de broncode van de bibliotheken apr en apr-util kunt downloaden en bouwen als onderdeel van het Apache httpd compilatieproces.

op RPM-gebaseerde (Fedora, Centos, …) Linux distributies, kunnen de bibliotheken ontwikkelingspakketten geà nstalleerd worden met de volgende commando ‘ s:

yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel

op Deb-gebaseerde (Debian, Ubuntu, …) Linux-distributies kunnen de bibliotheken ontwikkelingspakketten worden geïnstalleerd met het volgende commando:

apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev

Build-configuratieopties

na het downloaden van Apache httpd-broncode en de installatie van de build-afhankelijkheden, kunnen de build-configuratieopties worden ingesteld (compiler-opties, installatiemap, enable/disable modules, …).

omdat Apache HTTPD het autoconf build systeem gebruikt, biedt het een script genaamd configure om de build configuratie opties in te stellen en de Makefile bestanden te genereren.

tenzij enige aanpassingen nodig zijn, kunnen de standaardinstellingen behouden blijven. De standaard is om de meeste modules te compileren en om de installatie directory in te stellen op /usr/local/apache2/.

om de standaardinstellingen te gebruiken, wordt het configure script aangeroepen zonder argumenten:

cd /usr/local/src/httpd-2.4.43./configure

om alle mogelijke opties weer te geven, wordt het script configure aangeroepen met het argument-help:

cd /usr/local/src/httpd-2.4.43./configure --help

de volgende secties presenteren een aantal handige build configuratie opties.

installatiemap: – prefix optie

de installatiemap verschilt van de bouwmap. Het is waar de resulterende binaries en configuratie bestanden zullen worden geplaatst zodra de compilatie slaagt en het commando make install is uitgevoerd (gepresenteerd in de installatie sectie).

de optie-prefix wordt gebruikt om een ander installatiepad te selecteren. Deze optie is handig als we verschillende versies van Apache HTTPD moeten bouwen en installeren.

het volgende voorbeeld laat zien hoe de installatie directory ingesteld moet worden op / opt / apache-2.4.43/:

cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/

hoe een module in – /uitschakelen: -enable –MODULE / -disable-MODULE

de meeste Apache httpd modules zijn standaard gebouwd als dynamische bibliotheken. De optie-enable-MODULE kan worden gebruikt om een module in te schakelen of het build-type te veranderen van dynamisch naar statisch. De optie-disable-MODULE wordt gebruikt om de bouw van een module uit te schakelen. MODULE wordt vervangen door de werkelijke module naam.

het volgende voorbeeld laat zien om de module te herschrijven als een statische bibliotheek:

cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static

Compileropties

indien nodig worden compileropties doorgegeven aan het configuratiescript als omgevingsvariabelen.

de variabelen zijn samengevat in de volgende tabel:

CC wordt gebruikt om de opdracht C-compiler te selecteren. Het standaard cc (de GNU compiler), maar clang is een optie te
CFLAGS Gebruikt om de C compiler flags
LDFLAGS Gebruikt om de linker-vlaggen
LIBS Gebruikt om bibliotheken aan de linker
CPPFLAGS Gebruikt voor het doorsturen van (het Doel van) C/C++ preprocessor vlaggen
CPP Gebruikt om C preprocessor parameters

Het volgende voorbeeld geeft aan hoe om te slagen voor een optimalisatie van de vlag van de C-compiler:

cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure

compilatie en installatie

na het uitvoeren van het configure-script om de build-configuratieopties in te stellen en de Makefile-bestanden te genereren, wordt het compilatieproces gestart met het make-Commando.

het volgende voorbeeld geeft aan hoe het compilatieproces moet worden gestart:

cd /usr/local/src/httpd-2.4.43./configuremake

nadat de compilatie geslaagd is, kan de installatie in de installatie directory gestart worden met het volgende commando:

make install

de installatie plaatst alle benodigde binaire bestanden en configuratie bestanden in de installatie directory /usr/local/apache2. De uitvoerbare bestanden worden in /usr/local/apache2/bin/geplaatst. De configuratie bestanden staan in /usr / local/apache2/conf/.

hoe worden de gecompileerde modules weergegeven

de gecompileerde modules kunnen worden weergegeven met het volgende commando:

/usr/local/apache2/bin/httpd -M

Start en stop de service

de nieuwe versie van Apache HTTPD kan gestart worden met het commando / usr/local/apache2/bin / apachectl.

om de dienst te starten:

/usr/local/apache2/bin/apachectl start

om de dienst te stoppen:

/usr/local/apache2/bin/apachectl stop

Apr en apr-util bouwen van broncode

de benodigde bibliotheken voor het compileren van Apache HTTPD kunnen geà nstalleerd worden vanuit de Hoofdrepositories van de Linux distributie, maar in sommige situaties vereist Apache HTTPD een recentere versie van een bibliotheek die niet beschikbaar is vanuit deze repositories. In dit geval kan de broncode van de bibliotheek ook gedownload en gecompileerd worden naast Apache HTTPD.

de bibliotheken apr en apr-util zijn twee van de kernbibliotheken waar Apache HTTPD op vertrouwt voor zijn interne werk om portabiliteit tussen veel besturingssystemen te garanderen.

de Apache httpd broncode bevat een submap die srclib wordt genoemd. Het wordt gebruikt om de bibliotheken die kunnen worden gebouwd en gebruikt door de server in plaats van het gebruik van de systeembibliotheken.

om de APR en apr-util bibliotheken broncode te integreren als onderdeel van het compilatieproces van Apache HTTPD, wordt hun broncode gedownload en geëxtraheerd in de subdirectory srclib.

het volgende voorbeeld laat zien hoe de broncode van de twee bibliotheken apr en apr-util kan worden gedownload en geëxtraheerd. Wanneer het tar-bestand wordt uitgepakt, moet het versienummer worden verwijderd.Ze kunnen worden gedownload op de officiële website: https://apr.apache.org/download.cgi.

cd /usr/local/src/httpd-2.4.43/srclib/wget https://downloads.apache.org/apr/apr-1.7.0.tar.gztar -xzf apr-1.7.0.tar.gzmv apr-1.7.0 aprlswget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gztar -xzf apr-util-1.6.1.tar.gzmv apr-util-1.6.1 apr-utillscd /usr/local/src/httpd-2.4.43./configuremakemake install

hoe te upgraden van versie 2.x tot 2.y

de update van een Apache HTTPD die is geà nstalleerd vanaf de broncode is mogelijk. De aanbevolen praktijk is om een aparte installatie directory te gebruiken voor elke versie en de configuratie sub-directory te kopiëren van de oude versie naar de nieuwe directory.

het volgende voorbeeld laat zien hoe een reeds geà nstalleerde versie 2.4.0 die in /usr/local/apache-2.4.0 geà nstalleerd is, te updaten naar een nieuwere versie 2.4.43 die in /usr/local/apache-2.4.43 geà nstalleerd zal worden.

om de nieuwe versie te downloaden, compileren en installeren:

cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzcd httpd-2.4.43./configure --prefix=/usr/local/apache-2.4.43makemake install

Stop de service van de oude versie:

/usr/local/apache-2.4.0/bin/apachectl stop

kopieer de configuratie map van de oude versie naar de nieuwe versie:

rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/

start de service vanaf de nieuwe versie:

/usr/local/apache-2.4.43/bin/apachectl start

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.