januari 22, 2022

kompilering och installation av Apache HTTPD från källkod

de flesta Linux-distributioner ger en specifik version av Apache HTTPD binärpaket från deras huvudförvar. Nackdelen är att den här versionen ofta inte uppdateras till nästa Distributions stora utgåva.

för att dra nytta av funktioner som endast är tillgängliga från en nyare version eller för att bygga anpassade binärer är kompilering och installation av Apache HTTPD från källkoden enkel.

denna handledning beskriver kompilerings-och installationsstegen för Apache HTTPD under RPM-baserade (Fedora, CentOS, …) och Deb-baserade (Debian, Ubuntu, …) Linux-distributioner. Den senaste tillgängliga versionen (2.4.x) används.

Apache HTTPD källkod

katalogen /usr/local/src/ används vanligtvis för byggrelaterade aktiviteter (kräver root-privilegier). Den används i denna handledning som byggkatalogen.

källkoden för Apache HTTPD är tillgänglig som en tar-fil från: http://httpd.apache.org/download.cgi.

följande är stegen för att ladda ner och extrahera källkoden i byggkatalogen (versionsnumren kan ändras efter behov):

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

Installation av byggberoenden

sammanställningen av Apache HTTPD kräver installation av utvecklingsverktygen (C compiler, linker, …) och några ytterligare bibliotek.

de obligatoriska biblioteken är:

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

de flesta Linux-distributioner tillhandahåller dessa bibliotek från huvudförvaren. Om systemet innehåller en gammal version av ett bibliotek kan källkoden hämtas och sammanställas separat. Ett senare avsnitt presenterar hur man laddar ner och bygger källkoden för biblioteken apr och apr-util som en del av Apache HTTPD-kompileringsprocessen.

på RPM-baserade (Fedora, Centos, …) Linux-distributioner kan bibliotekens utvecklingspaket installeras med följande kommandon:

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

på deb-baserade (Debian, Ubuntu, …) Linux-distributioner kan utvecklingspaketen för bibliotek installeras med följande kommando:

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

Byggkonfigurationsalternativ

efter nedladdningen av Apache HTTPD-källkoden och installationen av byggberoenden kan byggkonfigurationsalternativen ställas in (kompilatoralternativ, installationskatalog, aktivera/inaktivera moduler,…).

eftersom Apache HTTPD använder Autoconf-byggsystemet ger det ett skript som heter configure för att ställa in byggkonfigurationsalternativen och generera Makefile-filerna.

om inte några tweaks behövs kan standardinställningarna hållas. Standard är att kompilera de flesta modulerna och ställa in installationskatalogen till /usr/local/apache2/.

för att använda standardinställningarna anropas configure-skriptet utan argument:

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

för att lista alla möjliga alternativ anropas skriptkonfigureringen med argumentet-help:

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

följande avsnitt presenterar några användbara byggkonfigurationsalternativ.

installationskatalog: – prefixalternativ

installationskatalogen skiljer sig från byggkatalogen. Det är där de resulterande binärerna och konfigurationsfilerna kommer att placeras när kompileringen lyckas och kommandot make install körs (presenteras i installationsavsnittet).

alternativet –prefix används för att välja en annan installationsväg. Det här alternativet är användbart om vi behöver bygga och installera olika versioner av Apache HTTPD.

följande exempel visar hur du ställer in installationskatalogen till / opt/apache-2.4.43/:

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

hur man aktiverar / inaktiverar en modul: – aktivera-modul / -inaktivera-modul

de flesta Apache HTTPD-modulerna är som standard byggda som dynamiska bibliotek. Alternativet-Aktivera-modul kan användas för att aktivera en modul eller ändra dess byggtyp från dynamisk till statisk. Alternativet-Inaktivera-modul används för att inaktivera en modul från att byggas. Modulen ersätts av det faktiska modulnamnet.

följande exempel visar att bygga omskrivningen av modulen som ett statiskt bibliotek:

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

kompilatoralternativ

vid behov skickas kompilatoralternativ till konfigurationsskriptet som miljövariabler.

variablerna sammanfattas i följande tabell:

CC används för att välja kommandot C-kompilator. Det är som standard cc (GNU-kompilatorn) men clang är också ett alternativ
CFLAGS används för att passera C-kompilatorflaggor
LDFLAGS används för att passera länkflaggor
LIBS används för att skicka bibliotek till länkaren
CPPFLAGS används för att passera (objektiv) c/C++ preprocessorflaggor
CPP används för att passera C preprocessor parametrar

i följande exempel presenteras hur man skickar en optimeringsflagga till C-kompilatorn:

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

kompilering och installation

efter utförandet av configure-skriptet för att ställa in byggkonfigurationsalternativen och generera Makefile-filerna startas kompileringsprocessen med kommandot make.

följande exempel visar hur du startar kompileringsprocessen:

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

när kompileringen lyckas kan installationen i installationskatalogen startas med följande kommando:

make install

installationen placerar alla nödvändiga binärer och konfigurationsfiler i installationskatalogen /usr/local/apache2. De körbara filerna placeras i /usr/local/apache2/bin/. Konfigurationsfilerna placeras i /usr/local/apache2/conf/.

så här listar du de kompilerade modulerna

de kompilerade modulerna kan listas med följande kommando:

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

starta och stoppa tjänsten

den nya byggnaden av Apache HTTPD kan startas med kommandot /usr/local/apache2/bin/apachectl.

för att starta tjänsten:

/usr/local/apache2/bin/apachectl start

för att stoppa tjänsten:

/usr/local/apache2/bin/apachectl stop

bygga apr och apr-util från källkod

de obligatoriska biblioteken för kompilering av Apache HTTPD kan installeras från Linux-distributionens huvudförråd, men i vissa situationer kräver Apache HTTPD en nyare version av ett bibliotek som inte är tillgängligt från dessa förvar. I det här fallet kan bibliotekets källkod också laddas ner och kompileras tillsammans med Apache HTTPD.

biblioteken apr och apr-util är två av de kärnbibliotek som Apache HTTPD förlitar sig på för sitt interna arbete för att säkerställa portabilitet över många operativsystem.

Apache HTTPD-källkoden innehåller en underkatalog som heter srclib. Det används för att hålla biblioteken som kan byggas och användas av servern istället för att använda systembiblioteken.

för att integrera källkoden för apr-och apr-util-bibliotek som en del av kompileringsprocessen för Apache HTTPD laddas deras källkod ner och extraheras i underkatalogen srclib.

följande exempel visar hur man hämtar och extraherar källkoden för de två biblioteken apr och apr-util. När tar-filen extraheras ska versionsnumret tas bort.De är tillgängliga för nedladdning från den officiella hemsidan: 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

hur man uppgraderar från version 2.x till 2.y

uppdateringen av en Apache HTTPD som är installerad från källkoden är möjlig. Den rekommenderade metoden är att använda en separat installationskatalog för varje version och kopiera konfigurationsunderkatalogen från den gamla versionen till den nya katalogen.

följande exempel visar hur du uppdaterar en redan installerad version 2.4.0 som är installerad i /usr/local/apache-2.4.0, till en nyare version 2.4.43 som kommer att installeras i /usr/local/apache-2.4.43.

för att ladda ner, kompilera och installera den nya versionen:

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

stoppa tjänsten från den gamla versionen:

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

kopiera konfigurationskatalogen från den gamla versionens katalog till den nya versionens:

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

starta tjänsten från den nya versionen:

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

Lämna ett svar

Din e-postadress kommer inte publiceras.