Jak zapewnić obsługę PCRE2 dla Apache 2.4

Chciałbym podzielić się swoim doświadczeniem w tłumaczeniu Apache 2.4 na PCRE2, ponieważ nawet PHP 7 obsługuje bibliotekę PCRE2 przez długi czas, ale Apache Software Foundation o otwartym kodzie źródłowym nadal tego nie robi.
Oczywiście jestem teraz prawdopodobnie przed wersją Apache z obsługą PCRE2, ponieważ korzystam ze źródeł z gita Apache, który mówi nam, że obsługa PCRE2 jest już możliwa w następnej wersji, ale dla tych, którzy już chcą obsługi PCRE2 w Apache 2.4, a którzy nie chcą czekać na wydanie, udostępniam jeden ze sposobów.

W artykule zakłada się, że zbierasz całe niezbędne oprogramowanie z kodu źródłowego, listy oprogramowania i wersji w momencie pisania:

PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41

Krok pierwszy: zbuduj i skompiluj PCRE2

Pomińmy moment pobierania źródeł z oficjalnych źródeł, gdyż jest to zbyt oczywiste, więc rozpakowałeś archiwum, przejdź do folderu ze źródłami PCRE2 i uruchom następującą komendę w celu obsługi UTF:

./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode

Określ swoją ścieżkę w prefiksie, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki:

--prefix=/ваш/путь/до библиотеки

W przeciwnym razie zbierasz bez prefiksu.

Pozostałe polecenia wskazują na włączenie obsługi 8-bitowych, 16-bitowych i 32-bitowych bloków kodu PCRE, w tej wersji przeprowadzono z nimi montaż.

I oczywiście kompilujemy to za pomocą sekwencyjnego wykonywania poleceń:

make
make install

Jeżeli wszystko jest w porządku i kompilacja przebiegła bez błędów, przejdź do kolejnego kroku.

Krok drugi: podłącz bibliotekę PCRE2 do APR

Ponieważ Apache kompiluje źródła przy użyciu APR, musimy włączyć bibliotekę do samego APR, w przeciwnym razie mogą pojawić się błędy dotyczące nieznanych funkcji w źródłach Apache, ponieważ będziemy używać nowych funkcji PCRE2.

Pomińmy moment pobierania źródeł z oficjalnych źródeł, bo jest to zbyt oczywiste, więc rozpakowałeś archiwum i wykonałeś konfigurację APR:

./configure --prefix=/etc/webserver/apr-170

Naturalnie, wskazujesz swoją ścieżkę w prefiksie, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki lub jeśli nie określisz:

--prefix=/ваш/путь/до библиотеки

Po zakończeniu konfiguracji przejdź do katalogu: /etc/webserver/srcsrv/apr-1.7.0/build

Lub: /twoja/ścieżka/do biblioteki/build

Znajdź plik apr_rules.mk w tym katalogu i dodaj na końcu wiersze, gdzie:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Podłączenie biblioteki:

-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib

Zapisz i przejdź do katalogu głównego źródeł APR: /twoja/ścieżka/do biblioteki.

Skompilujmy nasz zmodyfikowany RRSO:

make
make install

Jeżeli wszystko jest w porządku i kompilacja przebiegła bez błędów, przejdź do kolejnego kroku.

Krok trzeci: zbuduj narzędzie APR dla Apache ze źródeł

Pobrałeś tę bibliotekę ze źródła, przejdź do folderu głównego rozpakowanego archiwum za pomocą APR-util i wprowadź kolejno następujące polecenia:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install

Naturalnie, wskazujesz swoją ścieżkę w prefiksie, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki lub jeśli nie określisz:

--prefix=/ваш/путь/до библиотеки

Łączymy również nasz APR tutaj:

--with-apr=/ваш/путь/до библиотеки apr

Krok czwarty: pobierz źródła z Apache git, aby obsługiwać PCRE2

Ważne: Pobieramy źródła z najnowszej edycji gita.

Musimy pobrać dwa źródła takie jak ap_regex.h i util_pcre.c, linki poniżej:
ap_regex.h
util_pcre.c

Teraz przejdź do katalogu źródłowego httpd Apache i zbuduj Apache za pomocą następujących poleceń:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Naturalnie, wskazujesz swoją ścieżkę w prefiksie, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki lub jeśli nie określisz:

--prefix=/ваш/путь/до Apache httpd

Możesz także określić dodatkowe polecenia do budowania Apache według własnego uznania, mam na myśli polecenia włączania lub wyłączania modułów i bibliotek.

Następnie przechodzimy do naszego katalogu źródłowego httpd Apache, mam to:

/etc/webserver/srcsrv/httpd-2.4.41

Naturalnie przechodzisz do swojego katalogu, zamień w katalogu:

/etc/webserver/srcsrv/httpd-2.4.41/include

Plik ap_regex.h, który pobraliśmy z gita Apache.

Wchodzimy także do katalogu:

/etc/webserver/srcsrv/httpd-2.4.41/server

Zastępujemy plik util_pcre.c tym, który pobraliśmy z gita Apache

Teraz pozostaje tylko dodać połączenie PCRE2 w samym Apache, musisz znaleźć plik ap_config_auto.h, znajduje się on w katalogu:

/etc/webserver/srcsrv/httpd-2.4.41/include

Na samym początku tego pliku wstaw następujące linie:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Cóż, teraz jesteśmy gotowi na prawdziwy moment kompilacji Apache httpd z obsługą PCRE2.
Przejdźmy do naszego katalogu źródłowego httpd Apache i skompilujmy go, wykonując kolejno polecenia:

make
make install

Teraz, jeśli wszystko poszło dobrze i bez błędów, złożysz i skompilujesz httpd Apache z obsługą PCRE2, co oznacza pozytywne zmiany w modułach Apache, które używają wyrażeń regularnych PCRE, jednym z nich jest przepisywanie modułów.

Podsumowując, metoda ta umożliwia wykorzystanie PCRE2 przed wydaniem przez Apache Software Foundation, mam nadzieję, że wkrótce ukaże się wersja z obsługą PCRE2.

Również podczas testowania standardowego .htaccess nie wystąpiły żadne błędy, jeśli ktoś ma jakieś błędy to proszę pisać w komentarzach.

PS

Byłem trochę zdezorientowany sytuacją używania dwóch różnych wersji PCRE dla mojego stosu i postanowiłem to naprawić.

Źródło: www.habr.com

Dodaj komentarz