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