22 ledna, 2022

kompilace a instalace Apache HTTPD ze zdrojového kódu

většina linuxových distribucí poskytuje specifickou verzi binárních balíčků Apache HTTPD z jejich hlavních repozitářů. Nevýhodou je, že tato verze se často neaktualizuje až do hlavního vydání další distribuce.

Chcete-li využít funkcí dostupných pouze z novější verze nebo vytvořit vlastní binární soubory, kompilace a instalace Apache HTTPD ze zdrojového kódu je jednoduchá.

tento tutoriál popisuje kompilační a instalační kroky Apache HTTPD v distribucích Linuxu založených na RPM (Fedora, CentOS, …) a Deb (Debian, Ubuntu,…). Nejnovější dostupná verze (2.4.x) se používá.

zdrojový kód Apache HTTPD

adresář / usr/local / src / se obecně používá pro činnosti související s vytvářením (vyžaduje oprávnění root). V tomto tutoriálu se používá jako adresář sestavení.

zdrojový kód Apache HTTPD je k dispozici jako tar soubor z: http://httpd.apache.org/download.cgi.

níže jsou uvedeny kroky ke stažení a extrahování zdrojového kódu v adresáři sestavení (čísla verzí mohou být podle potřeby změněna):

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

instalace závislostí sestavení

kompilace Apache HTTPD vyžaduje instalaci vývojových nástrojů (kompilátor C, linker,…) a některých dalších knihoven.

požadované knihovny jsou:

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

většina linuxových distribucí poskytuje tyto knihovny z hlavních repozitářů. Pokud systém obsahuje starou verzi knihovny, může být její zdrojový kód stažen a kompilován Samostatně. Pozdější část představuje, jak stáhnout a Vytvořit zdrojový kód knihoven apr a apr-util jako součást procesu kompilace Apache HTTPD.

na Linuxových distribucích založených na RPM (Fedora, Centos, …) lze vývojové balíčky knihoven nainstalovat pomocí následujících příkazů:

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

v Linuxových distribucích založených na Deb (Debian, Ubuntu, …) lze vývojové balíčky knihoven nainstalovat pomocí následujícího příkazu:

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

možnosti sestavení konfigurace

Po stažení zdrojového kódu Apache HTTPD a instalaci závislostí sestavení lze nastavit možnosti konfigurace sestavení (možnosti kompilátoru, instalační adresář, povolit / zakázat moduly,…).

protože Apache HTTPD používá systém Autoconf build, poskytuje skript s názvem configure pro nastavení možností konfigurace sestavení a generování souborů Makefile.

pokud nejsou potřeba nějaké úpravy, mohou být výchozí hodnoty zachovány. Výchozí nastavení je zkompilovat většinu modulů a nastavit instalační adresář na /usr/local / apache2/.

Chcete-li použít výchozí nastavení, je skript configure volán bez argumentů:

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

Chcete-li zobrazit všechny možné možnosti, vyvolá se konfigurace skriptu pomocí argumentu-help:

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

následující části představují některé užitečné možnosti konfigurace sestavení.

instalační adresář: – prefix option

instalační adresář se liší od adresáře sestavení. Je to místo, kde budou výsledné binární soubory a konfigurační soubory umístěny, jakmile kompilace uspěje a provede se příkaz make install (uvedený v sekci Instalace).

volba-prefix se používá k výběru jiné instalační cesty. Tato možnost je užitečná, pokud potřebujeme vytvořit a nainstalovat různé verze Apache HTTPD.

následující příklad ukazuje, jak nastavit instalační adresář na /opt / apache-2.4.43/:

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

jak povolit / zakázat modul: – enable-MODULE / -disable-MODULE

většina modulů Apache HTTPD je ve výchozím nastavení postavena jako dynamické knihovny. Volba-enable-MODULE může být použita k povolení modulu nebo ke změně jeho typu sestavení z dynamického na statický. Volba-disable-MODULE se používá k deaktivaci modulu. Modul je nahrazen skutečným názvem modulu.

následující příklad ukazuje sestavení přepsání modulu jako statické knihovny:

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

možnosti kompilátoru

v případě potřeby jsou volby kompilátoru předány konfiguračnímu skriptu jako proměnné prostředí.

proměnné jsou shrnuty v následující tabulce:

CC slouží k výběru příkazu kompilátoru C. Výchozí hodnota je cc (kompilátor GNU), ale clang je také možnost
CFLAGS Používá se k předávání příznaků kompilátoru C
LDFLAGS slouží k předávání linkerových vlajek
LIBS slouží k předávání knihoven linkerovi
CPPFLAGS slouží k předávání (Objective) C/C++ preprocesorových příznaků
CPP slouží k předávání parametrů preprocesoru C

následující příklad uvádí, jak předat příznak optimalizace kompilátoru C:

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

kompilace a instalace

po provedení skriptu configure pro nastavení možností konfigurace sestavení a generování souborů Makefile se proces kompilace spustí příkazem make.

následující příklad uvádí, jak zahájit proces kompilace:

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

po dokončení kompilace může být instalace do instalačního adresáře spuštěna následujícím příkazem:

make install

instalace umístí všechny potřebné binární soubory a konfigurační soubory do instalačního adresáře / usr/local / apache2. Spustitelné soubory jsou umístěny v /usr / local / apache2 / bin/. Konfigurační soubory jsou umístěny v /usr / local / apache2 / conf/.

jak vypsat kompilované moduly

kompilované moduly mohou být uvedeny pomocí následujícího příkazu:

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

spuštění a zastavení služby

nová sestava Apache HTTPD může být spuštěna pomocí příkazu / usr/local / apache2 / bin / apachectl.

spuštění služby:

/usr/local/apache2/bin/apachectl start

zastavení služby:

/usr/local/apache2/bin/apachectl stop

vytváření apr a apr-util ze zdrojového kódu

požadované knihovny pro kompilaci Apache HTTPD mohou být nainstalovány z hlavních repozitářů distribuce Linuxu, ale v některých situacích Apache HTTPD vyžaduje novější verzi knihovny, která není z těchto repozitářů k dispozici. V tomto případě lze zdrojový kód knihovny stáhnout a zkompilovat společně s Apache HTTPD.

knihovny apr a apr-util jsou dvě z hlavních knihoven, na které se Apache HTTPD spoléhá při své interní práci, aby zajistila přenositelnost v mnoha operačních systémech.

zdrojový kód Apache HTTPD obsahuje podadresář, který se nazývá srclib. Používá se k držení knihoven, které mohou být vytvořeny a použity serverem namísto použití systémových knihoven.

pro integraci zdrojového kódu knihoven apr a apr-util jako součást procesu kompilace Apache HTTPD je jejich zdrojový kód stažen a extrahován uvnitř podadresáře srclib.

následující příklad uvádí, jak stáhnout a extrahovat zdrojový kód dvou knihoven apr a apr-util. Když je soubor tar extrahován, číslo verze by mělo být odstraněno.Jsou k dispozici ke stažení z oficiálních webových stránek: 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

jak upgradovat z verze 2.x na 2.y

aktualizace Apache HTTPD, která je nainstalována ze zdrojového kódu, je možná. Doporučenou praxí je použít samostatný instalační adresář pro každou verzi a zkopírovat podadresář konfigurace ze staré verze do nového adresáře.

následující příklad ukazuje, jak aktualizovat již nainstalovanou verzi 2.4.0, která je nainstalována v /usr/local/apache-2.4.0, na novější verzi 2.4.43, která bude nainstalována v /usr/local / apache-2.4.43.

stáhnout, zkompilovat a nainstalovat novou verzi:

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

zastavte službu ze staré verze:

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

zkopírujte konfigurační adresář z adresáře staré verze do adresáře nové verze:

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

spusťte službu z nové verze:

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.