22 stycznia, 2022

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.