januar 22, 2022

kompilering og installation af Apache HTTPD fra kildekode

de fleste distributioner giver en specifik version af Apache HTTPD binære pakker fra deres vigtigste lagre. Ulempen er, at denne version ofte ikke opdateres, før den næste distributions store udgivelse.

for at drage fordel af funktioner, der kun er tilgængelige fra en nyere version eller til at opbygge tilpassede binære filer, er kompilering og installation af Apache HTTPD fra kildekoden ligetil.

denne vejledning beskriver kompilerings-og installationstrinnene for Apache HTTPD under RPM-baserede (Fedora, CentOS, …) og Deb-baserede (Debian, Ubuntu, …) distributioner. Den seneste tilgængelige version (2.4.bruges.

Apache HTTPD kildekode

mappen /usr/local/src/ bruges generelt til build-relaterede aktiviteter (kræver root privilegier). Det bruges i denne tutorial som build-biblioteket.

kildekoden til Apache HTTPD er tilgængelig som en tar-fil fra: http://httpd.apache.org/download.cgi.

følgende er trinnene til at hente og udtrække kildekoden i build-biblioteket (versionsnumrene kan ændres 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 af build afhængigheder

kompilering af Apache HTTPD kræver installation af udviklingsværktøjer (C compiler, linker, …) og nogle yderligere biblioteker.

de krævede biblioteker er:

  • apr
  • apr-util
  • openssl
  • udstationerede
  • prce

de fleste distributioner leverer disse biblioteker fra hovedlagrene. Hvis systemet indeholder en gammel version af et bibliotek, kan kildekoden hentes og kompileres separat. Et senere afsnit viser, hvordan du henter og bygger kildekoden til bibliotekerne apr og apr-util som en del af Apache HTTPD-kompileringsprocessen.

på RPM-baserede (Fedora, Centos, …) distributioner kan bibliotekernes udviklingspakker installeres ved hjælp af følgende kommandoer:

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

på deb-baserede distributioner (Debian, Ubuntu, …) kan bibliotekernes udviklingspakker installeres ved hjælp af følgende kommando:

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

Byg konfigurationsindstillinger

efter overførslen af Apache HTTPD-kildekoden og installationen af build-afhængigheder kan build-konfigurationsindstillingerne indstilles (kompilatorindstillinger, installationsmappe, Aktiver/Deaktiver moduler,…).

da Apache HTTPD bruger Autoconf build-systemet, giver det et script kaldet Konfigurer for at indstille build-konfigurationsindstillingerne og generere Makefile-filerne.

medmindre nogle justeringer er nødvendige, kan standardindstillingerne holdes. Standard er at kompilere de fleste af modulerne og indstille installationsmappen til /usr/local/apache2/.

for at bruge standardindstillingerne kaldes configure script uden argumenter:

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

for at liste alle mulige muligheder kaldes scriptkonfigurationen med argumentet-hjælp:

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

de følgende afsnit præsenterer nogle nyttige opbygningskonfigurationsindstillinger.

installationsmappe: –præfiksindstilling

installationsmappen er forskellig fra build-mappen. Det er her de resulterende binære filer og konfigurationsfiler placeres, når kompileringen lykkes, og kommandoen make install udføres (præsenteret i installationsafsnittet).

indstillingen –præfiks bruges til at vælge en anden installationssti. Denne mulighed er nyttig, hvis vi har brug for at opbygge og installere forskellige versioner af Apache HTTPD.

følgende eksempel viser, hvordan du indstiller installationsmappen til/opt / apache-2.4.43/:

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

Sådan aktiveres / deaktiveres et modul: – aktiver-modul / -Deaktiver-modul

de fleste af Apache HTTPD-modulerne er som standard bygget som dynamiske biblioteker. Indstillingen-enable-MODULE kan bruges til at aktivere et modul eller ændre dets bygningstype fra dynamisk til statisk. Indstillingen-Deaktiver-modul bruges til at deaktivere et modul fra at blive bygget. Modulet erstattes af det faktiske modulnavn.

følgende eksempel viser at opbygge modulet omskrivning som et statisk bibliotek:

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

Compiler options

når det er nødvendigt, overføres compiler options til konfigurationsskriptet som miljøvariabler.

variablerne er opsummeret i følgende tabel:

CC bruges til at vælge kommandoen C compiler. Det er som standard cc (GNU compiler), men clang er også en mulighed
CFLAGS bruges til at passere C compiler flag
LDFLAGS bruges til at passere linker flag
LIBS bruges til at videregive biblioteker til linkeren
Cppflags bruges til at passere (objektiv) C / C++ præprocessor flag
CPP bruges til at passere C-præprocessorparametre

følgende eksempel viser, hvordan man sender et optimeringsflag til C-kompilatoren:

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

kompilering og installation

efter udførelsen af configure-scriptet for at indstille build-konfigurationsindstillingerne og generere Makefile-filerne, startes kompileringsprocessen med kommandoen make.

følgende eksempel præsenterer, hvordan man starter kompileringsprocessen:

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

når kompileringen lykkes, kan installationen i installationsmappen startes med følgende kommando:

make install

installationen placerer alle de nødvendige binære filer og konfigurationsfiler i installationsmappen /usr/local/apache2. De eksekverbare filer er placeret i / usr / local / apache2/bin/. Konfigurationsfilerne er placeret i / usr / local / apache2 / conf/.

sådan listes de kompilerede moduler

de kompilerede moduler kan vises ved hjælp af følgende kommando:

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

Start og stop tjenesten

den nye build af Apache HTTPD kan startes ved hjælp af kommandoen /usr/local/apache2/bin/apachectl.

for at starte tjenesten:

/usr/local/apache2/bin/apachectl start

for at stoppe tjenesten:

/usr/local/apache2/bin/apachectl stop

opbygning af apr og apr-util fra kildekode

de nødvendige biblioteker til kompilering af Apache HTTPD kan installeres fra distributionens hovedlagre, men i nogle situationer kræver Apache HTTPD en nyere version af et bibliotek, der ikke er tilgængeligt fra disse lagre. I dette tilfælde kan bibliotekets kildekode også hentes og kompileres sammen med Apache HTTPD.

bibliotekerne apr og apr-util er to af de kernebiblioteker, som Apache HTTPD er afhængig af for sit interne arbejde for at sikre bærbarhed på tværs af mange operativsystemer.

Apache HTTPD-kildekoden indeholder en undermappe, der kaldes srclib. Det bruges til at holde de biblioteker, der kan bygges og bruges af serveren i stedet for at bruge systembibliotekerne.

for at integrere Apr-og apr-util-bibliotekernes kildekode som en del af kompileringsprocessen for Apache HTTPD, hentes og udvindes deres kildekode i undermappen srclib.

følgende eksempel viser, hvordan du henter og udpakker kildekoden til de to biblioteker apr og apr-util. Når tjærefilen udvindes, skal versionsnummeret fjernes.De kan hentes fra den officielle hjemmeside: 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

Sådan opgraderes fra version 2.til 2.y

opdateringen af en Apache HTTPD, der er installeret fra kildekoden, er mulig. Den anbefalede praksis er at bruge en separat installationsmappe for hver version og kopiere konfigurationsundermappen fra den gamle version til den nye mappe.

følgende eksempel viser, hvordan du opdaterer en allerede installeret version 2.4.0, der er installeret i /usr/local/apache-2.4.0, til en nyere version 2.4.43, der vil blive installeret i /usr/local/apache-2.4.43.

for at hente, kompilere og installere den nye version:

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 tjenesten fra den gamle version:

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

Kopier konfigurationsmappen fra den gamle versions mappe til den nye versions:

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 tjenesten fra den nye version:

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.