Kompilacja i instalacja Apache HTTPD z kodu źródłowego
większość dystrybucji Linuksa dostarcza określoną wersję pakietów binarnych Apache HTTPD z ich głównych repozytoriów. Minusem jest to, że ta wersja często nie jest aktualizowana do głównego wydania następnej dystrybucji.
aby skorzystać z funkcji dostępnych tylko w nowszej wersji lub zbudować niestandardowe pliki binarne, kompilacja i instalacja Apache HTTPD z kodu źródłowego jest prosta.
ten poradnik opisuje kroki kompilacji i instalacji Apache HTTPD w dystrybucjach Linuksa opartych na RPM (Fedora, CentOS,…) i Deb (Debian, Ubuntu,…). Najnowsza dostępna Wersja (2.4.X) jest używany.
kod źródłowy Apache HTTPD
katalog / usr / local / src / jest zwykle używany do działań związanych z kompilacją (wymaga uprawnień roota). Jest on używany w tym samouczku jako katalog kompilacji.
kod źródłowy Apache HTTPD jest dostępny jako plik tar z: http://httpd.apache.org/download.cgi.
poniżej przedstawiono kroki, aby pobrać i rozpakować kod źródłowy w katalogu kompilacji (numery wersji mogą być zmieniane w razie potrzeby):
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
instalacja zależności kompilacji
kompilacja Apache HTTPD wymaga instalacji narzędzi programistycznych (kompilatora C, linkera,…) i kilku dodatkowych bibliotek.
wymagane biblioteki to:
- apr
- apr-util
- openssl
- expat
- prce
większość dystrybucji Linuksa udostępnia te biblioteki z głównych repozytoriów. Jeśli system zawiera starą wersję biblioteki, jej kod źródłowy może być pobrany i skompilowany oddzielnie. Dalsza sekcja prezentuje jak pobrać i zbudować kod źródłowy bibliotek apr i apr-util w ramach procesu kompilacji Apache HTTPD.
na dystrybucjach Linuksa opartych na RPM (Fedora, Centos,…), Pakiety rozwojowe bibliotek można instalować za pomocą następujących poleceń:
yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel
na dystrybucjach Linuksa opartych na Deb (Debian, Ubuntu,…), Pakiety rozwojowe bibliotek można zainstalować za pomocą następującego polecenia:
apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev
opcje konfiguracji kompilacji
po pobraniu kodu źródłowego Apache HTTPD i instalacji zależności kompilacji można ustawić opcje konfiguracji kompilacji (opcje kompilatora, katalog instalacyjny, włączanie/wyłączanie modułów,…).
ponieważ Apache HTTPD używa systemu autoconf build, udostępnia skrypt o nazwie configure, aby ustawić opcje konfiguracji kompilacji i wygenerować pliki Makefile.
o ile nie są potrzebne pewne poprawki, domyślne wartości mogą zostać zachowane. Domyślnie kompiluje się większość modułów i ustawia katalog instalacyjny na / usr / local / apache2/.
aby użyć domyślnych, skrypt configure jest wywoływany bez argumentów:
cd /usr/local/src/httpd-2.4.43./configure
aby wyświetlić listę wszystkich możliwych opcji, skrypt configure jest wywoływany z argumentem-help:
cd /usr/local/src/httpd-2.4.43./configure --help
w poniższych sekcjach przedstawiono kilka przydatnych opcji konfiguracji kompilacji.
katalog instalacyjny: –opcja prefiksu
katalog instalacyjny różni się od katalogu kompilacji. Jest to miejsce, w którym zostaną umieszczone wynikowe pliki binarne i pliki konfiguracyjne po pomyślnym zakończeniu kompilacji i wykonaniu polecenia make install (przedstawione w sekcji Instalacja).
opcja –prefix służy do wyboru innej ścieżki instalacji. Ta opcja jest przydatna, jeśli musimy zbudować i zainstalować różne wersje Apache HTTPD.
poniższy przykład przedstawia jak ustawić katalog instalacyjny na / opt / apache-2.4.43/:
cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/
jak włączyć / wyłączyć moduł: -enable –MODULE / -disable-MODULE
większość modułów HTTPD Apache jest domyślnie zbudowana jako biblioteki dynamiczne. Opcja-enable-MODULE może być użyta do włączenia modułu lub zmiany jego typu budowy z dynamicznego na statyczny. Opcja-disable-MODULE służy do wyłączenia modułu z budowy. Moduł jest zastępowany przez rzeczywistą nazwę modułu.
poniższy przykład pokazuje, jak zbudować moduł rewrite jako statyczną bibliotekę:
cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static
opcje kompilatora
w razie potrzeby opcje kompilatora są przekazywane do skryptu konfiguracyjnego jako zmienne środowiskowe.
zmienne są podsumowane w poniższej tabeli:
CC | służy do wyboru polecenia kompilatora C. Domyślnie jest to cc (kompilator GNU), ale clang jest również opcją |
CFLAGS | służy do przekazywania flag kompilatora C |
LDFLAGS | służy do przekazywania FLAG linkera |
LIBS | służy do przekazywania bibliotek do linkera |
CPPFLAGS | służy do przekazywania (Objective) znaczników preprocesora C/C++ |
CPP | służy do przekazywania parametrów preprocesora C |
poniższy przykład przedstawia jak przekazać flagę optymalizacji do kompilatora C:
cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure
Kompilacja i instalacja
po wykonaniu skryptu configure w celu ustawienia opcji konfiguracji kompilacji i wygenerowania plików Makefile, proces kompilacji rozpoczyna się poleceniem make.
poniższy przykład przedstawia jak rozpocząć proces kompilacji:
cd /usr/local/src/httpd-2.4.43./configuremake
po pomyślnym zakończeniu kompilacji, instalację do katalogu instalacyjnego można rozpocząć za pomocą następującego polecenia:
make install
instalacja umieszcza wszystkie niezbędne pliki binarne i konfiguracyjne w katalogu instalacyjnym /usr/local/apache2. Pliki wykonywalne są umieszczane w / usr / local / apache2 / bin/. Pliki konfiguracyjne są umieszczane w /usr / local / apache2 / conf/.
jak wyświetlić listę skompilowanych modułów
skompilowane moduły mogą być wymienione za pomocą następującego polecenia:
/usr/local/apache2/bin/httpd -M
Uruchom i zatrzymaj usługę
nową kompilację Apache HTTPD można uruchomić za pomocą polecenia / usr/local/apache2/bin / apachectl.
aby uruchomić serwis:
/usr/local/apache2/bin/apachectl start
aby zatrzymać usługę:
/usr/local/apache2/bin/apachectl stop
budowanie apr i apr-util z kodu źródłowego
biblioteki wymagane do kompilacji Apache HTTPD mogą być instalowane z głównych repozytoriów dystrybucji Linuksa, ale w niektórych sytuacjach Apache HTTPD wymaga nowszej wersji biblioteki, która nie jest dostępna z tych repozytoriów. W takim przypadku kod źródłowy biblioteki może być również pobrany i skompilowany wraz z Apache HTTPD.
biblioteki apr i apr-util to dwie z podstawowych bibliotek, na których Apache HTTPD opiera swoją wewnętrzną pracę, aby zapewnić przenośność w wielu systemach operacyjnych.
kod źródłowy Apache HTTPD zawiera podkatalog o nazwie srclib. Jest używany do przechowywania bibliotek, które mogą być budowane i używane przez serwer zamiast korzystania z bibliotek systemowych.
aby zintegrować kod źródłowy bibliotek apr i apr-util jako część procesu kompilacji Apache HTTPD, ich kod źródłowy jest pobierany i rozpakowywany wewnątrz podkatalogu srclib.
poniższy przykład przedstawia jak pobrać i rozpakować kod źródłowy dwóch bibliotek apr i apr-util. Po rozpakowaniu pliku tar należy usunąć numer wersji.Są one dostępne do pobrania z oficjalnej strony internetowej: 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 zaktualizować wersję 2.x do 2.y
możliwa jest aktualizacja Apache HTTPD, który jest instalowany z kodu źródłowego. Zalecaną praktyką jest użycie oddzielnego katalogu instalacyjnego dla każdej wersji i skopiowanie podkatalogu konfiguracji ze starej wersji do nowego katalogu.
poniższy przykład przedstawia jak zaktualizować już zainstalowaną wersję 2.4.0, która jest zainstalowana w / usr / local / apache-2.4.0, do nowszej wersji 2.4.43, która będzie zainstalowana w / usr/local / apache-2.4.43.
aby pobrać, skompilować i zainstalować nową wersję:
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
Zatrzymaj usługę ze starej wersji:
/usr/local/apache-2.4.0/bin/apachectl stop
skopiuj katalog konfiguracyjny ze starej wersji do nowej wersji:
rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/
Uruchom usługę od nowej wersji:
/usr/local/apache-2.4.43/bin/apachectl start