Chcę podzielić się swoim doświadczeniem w przenoszeniu Apache 2.4 na PCRE2, ponieważ PHP 7 od dawna obsługuje bibliotekę PCRE2, a open source Apache Software Foundation wciąż tego nie zrobiła.
Oczywiście, pewnie wyprzedzam wydanie Apache z obsługą PCRE2, ponieważ używam źródeł z repozytorium Apache, co sugeruje, że wsparcie dla PCRE2 może pojawić się w następnej wersji, ale dla tych, którzy chcą już teraz obsługi PCRE2 w Apache 2.4 i nie chcą czekać na wydanie, dzielę się jednym z metod.
Artykuł zakłada, że zbierasz całe niezbędne oprogramowanie ze źródeł, lista oprogramowania i wersji w momencie pisania artykułu:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Krok pierwszy: zbieramy i kompilujemy PCRE2
Pominiemy krok pobierania źródeł z oficjalnych źródeł, ponieważ to zbyt oczywiste, więc rozpakowałeś archiwum, przechodzimy do folderu ze źródłami PCRE2 i wykonujemy następującą komendę dla wsparcia UTF:
.\/configure --prefix=\/etc\/webserver\/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeW prefikensie podaj swój własny ścieżkę, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki:
--prefix=\/twoja\/ścieżka\/do bibliotekiW przeciwnym razie zbierasz bez prefiksu.
Pozostałe polecenia wskazują na włączenie wsparcia dla 8-bitowych, 16-bitowych i 32-bitowych bloków kodowych PCRE, w tej wersji kompilacja została zrealizowana z nimi.
Oczywiście kompilujemy to wykonując kolejno polecenia:
make
make install Jeżeli wszystko jest w porządku i kompilacja zakończyła się bez błędów, przechodzimy do następnego kroku.
Krok drugi: podłączamy bibliotekę PCRE2 do APR
Ponieważ Apache kompiluje źródła za pomocą APR, musimy podłączyć bibliotekę w samym APR, w przeciwnym razie mogą wystąpić błędy dotyczące nieznanych funkcji w źródłach Apache, ponieważ będziemy używać nowych funkcji PCRE2.
Pominiemy krok pobierania źródeł z oficjalnych źródeł, ponieważ to zbyt oczywiste, więc rozpakowałeś archiwum i wykonałeś konfigurację APR:
.\/configure --prefix=\/etc\/webserver\/apr-170Oczywiście w prefikensie podajesz swoją ścieżkę, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki, lub nie podajesz:
--prefix=\/twoja\/ścieżka\/do bibliotekiPo wykonaniu konfiguracji idziesz do katalogu: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build
Lub: \/twoja\/ścieżka\/do biblioteki\/build
Znaleźć plik apr_rules.mk w tym katalogu, i dodaj na końcu linii, gdzie:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlPodłączanie biblioteki:
-lpcre2-8 -L\/twoja\/ścieżka\/do biblioteki pcre2\/libZachowujemy i przechodzimy do katalogu głównego źródeł APR: /twoja/ścieżka/do biblioteki.
Kompilujemy nasz zmodyfikowany APR:
make
make installJeżeli wszystko jest w porządku i kompilacja zakończyła się bez błędów, przechodzimy do następnego kroku.
Krok trzeci: budujemy źródła APR-util dla Apache
Pobrałeś tę bibliotekę z oficjalnego źródła, przechodzimy do głównego katalogu rozpakowanego archiwum z APR-util i wprowadzamy kolejno następujące komendy:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/twoja/ścieżka/do biblioteki apr
make
make installOczywiście w prefikensie podajesz swoją ścieżkę, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki, lub nie podajesz:
--prefix=\/twoja\/ścieżka\/do bibliotekiTutaj również podłączamy nasz APR:
--with-apr=/twoja/ścieżka/do biblioteki aprKrok czwarty: pobieramy źródła z gita Apache dla wsparcia PCRE2
Ważne: Źródła pobieramy z gita najnowszej wersji.
Musimy pobrać dwa źródła, takie jak ap_regex.h i util_pcre.c, linki poniżej:
Teraz przechodzimy do swojej katalogu źródeł Apache httpd i budujemy Apache za pomocą następujących komend:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/twoja/ścieżka/do biblioteki apr --with-apr-util=/twoja/ścieżka/do biblioteki apr-util --with-pcre=/twoja/ścieżka/do biblioteki pcre2/bin/pcre2-configOczywiście w prefikensie podajesz swoją ścieżkę, jeśli nie chcesz używać standardowej lokalizacji do instalacji biblioteki, lub nie podajesz:
--prefix=/twoja/ścieżka/do Apache httpdDodatkowe komendy do budowy Apache podajesz według własnego uznania, mam na myśli komendy włączania i wyłączania modułów oraz bibliotek.
Następnie przechodzimy do swojej katalogu źródeł Apache httpd, u mnie to:
/etc/webserver/srcsrv/httpd-2.4.41Naturalnie przechodzisz do swojego katalogu, zastępując w katalogu:
/etc/webserver/srcsrv/httpd-2.4.41/includePlik ap_regex.h, na ten, który pobraliśmy z gita Apache.
Również przechodzimy do katalogu:
/etc/webserver/srcsrv/httpd-2.4.41/serverZastępujemy plik util_pcre.c, na ten, który pobraliśmy z gita Apache
Teraz pozostaje dodać wsparcie PCRE2 w samym Apache, musisz znaleźć plik ap_config_auto.h, znajduje się w katalogu:
/etc/webserver/srcsrv/httpd-2.4.41/includeNa początku tego pliku wstaw następujące linijki:
/* Load PCRE2 */
#define HAVE_PCRE2 1 No to teraz jesteśmy gotowi na prawdziwy moment kompilacji Apache httpd z wsparciem PCRE2.
Przechodzimy do swojej katalogu źródeł Apache httpd, kompilujemy to przy użyciu kolejnych komend:
make
make installTeraz, jeśli wszystko przebiegło dobrze i bez błędów, będziesz miał zbudowany i skompilowany Apache httpd z wsparciem PCRE2, co oznacza pozytywne zmiany w modułach Apache wykorzystujących wyrażenia regularne PCRE, jednym z nich jest moduł rewrite.
Na zakończenie, ta metoda umożliwia korzystanie z PCRE2 przed oficjalnym wydaniem od Apache Software Foundation, mam nadzieję, że wkrótce pojawi się wersja z wsparciem PCRE2.
Również podczas testowania standardowych plików .htaccess, nie wystąpiły błędy, jeśli ktoś napotka błędy, piszcie w komentarzach.
P.S.
Trochę niepokoiła mnie sytuacja związana z używaniem dwóch różnych wersji PCRE w moim stosie, więc postanowiłem to naprawić.
Źródło: habr.com
