Искам да споделя опита си от мигрирането на Apache 2.4 към PCRE2, тъй като дори PHP 7 отдавна поддържа библиотеката PCRE2, а Apache Software Foundation с отворен код все още не го поддържа.
Разбира се, вероятно съм пред версията на Apache с поддръжка на PCRE2 в момента, тъй като използвам изходните кодове на Apache git, което ни казва, че поддръжката на PCRE2 вече е възможна в следващата версия, но за тези, които вече искат поддръжка на PCRE2 в Apache 2.4, а който не иска да чака пускане споделям един от начините.
Статията предполага, че събирате целия необходим софтуер от източниците, списъка на софтуера и версиите към момента на писане на статията:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Първа стъпка: Изграждане и компилиране на PCRE2
Нека пропуснем момента на изтегляне на източници от официални източници, тъй като е твърде очевидно, така че сте разопаковали архива, отидете в папката с източници на PCRE2 и изпълнете следната команда, за да поддържате UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
Посочете вашия път в префикса, ако не искате да използвате стандартното местоположение за инсталиране на библиотеката:
--prefix=/ваш/путь/до библиотеки
В противен случай събирате без префикс.
Останалите команди показват включването на поддържащи 8-битови, 16-битови и 32-битови PCRE кодови блокове, в това изпълнение сглобяването е извършено с тях.
И разбира се, ние компилираме този случай, като използваме последователно изпълнение на команди:
make
make install
Ако всичко е наред и компилацията е преминала без грешки, преминете към следващата стъпка.
Стъпка втора: Включете библиотеката PCRE2 в APR
Тъй като Apache компилира източници с помощта на APR, трябва да включим библиотеката в самия APR, в противен случай са възможни грешки относно неизвестни функции в източниците на Apache, тъй като ще използваме новите PCRE2 функции.
Нека пропуснем момента на изтегляне на източници от официални източници, тъй като това е твърде очевидно, така че разопаковахте архива и завършихте конфигурацията на APR:
./configure --prefix=/etc/webserver/apr-170
Естествено, посочете пътя си в префикса, ако не искате да използвате стандартното местоположение за инсталиране на библиотеката или не посочвайте:
--prefix=/ваш/путь/до библиотеки
След като завършите конфигурацията, отидете в директорията: /etc/webserver/srcsrv/apr-1.7.0/build
Е, или: /вашият/път/към библиотеката/компилация
Намерете файла apr_rules.mk в тази директория и добавете в края на реда, където:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Връзка с библиотеката:
-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib
Запазваме и отиваме в основната директория на източниците на APR: /вашият/път/към библиотеката.
Съставяне на нашия модифициран ГПР:
make
make install
Ако всичко е наред и компилацията е преминала без грешки, преминете към следващата стъпка.
Стъпка трета: изграждане на APR-util за Apache от източника
Изтеглихте тази библиотека от източника, отидете в основната папка на разопакования архив с APR-util и въведете следните команди последователно:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install
Естествено, посочете пътя си в префикса, ако не искате да използвате стандартното местоположение за инсталиране на библиотеката или не посочвайте:
--prefix=/ваш/путь/до библиотеки
Също така тук свързваме нашия APR:
--with-apr=/ваш/путь/до библиотеки apr
Стъпка четвърта: Изтеглете Apache Git Sources за поддръжка на PCRE2
Важно: Изтегляме изходните кодове от най-новата версия на git.
Трябва да изтеглим два източника като ap_regex.h и util_pcre.c, връзки по-долу:
Сега отидете във вашата httpd изходна директория на Apache и създайте Apache със следните команди:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config
Естествено, посочете пътя си в префикса, ако не искате да използвате стандартното местоположение за инсталиране на библиотеката или не посочвайте:
--prefix=/ваш/путь/до Apache httpd
Можете също така да посочите допълнителни команди за изграждане на Apache по ваша преценка, имам предвид командите за активиране на модули и библиотеки.
След това отидете във вашата изходна директория на Apache httpd, имам това:
/etc/webserver/srcsrv/httpd-2.4.41
Вие естествено преминавате към вашата директория, замествате в директорията:
/etc/webserver/srcsrv/httpd-2.4.41/include
Файлът ap_regex.h, изтеглен от нас от Apache git.
Отиваме и в директорията:
/etc/webserver/srcsrv/httpd-2.4.41/server
Заменяме файла util_pcre.c с този, който сме изтеглили от Apache git
Сега остава да добавите PCRE2 връзката в самия Apache, трябва да намерите файла ap_config_auto.h, той се намира в директорията:
/etc/webserver/srcsrv/httpd-2.4.41/include
Вмъкнете следните редове в самото начало на този файл:
/* Load PCRE2 */
#define HAVE_PCRE2 1
Е, сега сме готови за истинската точка на компилиране на Apache httpd с поддръжка на PCRE2.
Отиваме в нашата изходна директория на Apache httpd, компилираме този случай с помощта на последователно изпълнение на команди:
make
make install
Сега, ако всичко е минало добре и без грешки, тогава ще сте компилирали и компилирали Apache httpd с поддръжка на PCRE2, което означава положителни промени в модулите на Apache, използващи PCRE регулярни изрази, един от тях е Module rewrite.
В заключение, този метод прави възможно използването на PCRE2 преди пускането от Apache Software Foundation, надявам се скоро да бъде пусната версия с поддръжка на PCRE2.
Също така по време на тестването на стандартния .htaccess нямаше грешки, ако някой има грешки, пишете в коментарите.
PS
Ситуацията с използването на две различни версии на PCRE за моя стек ме притесни малко и реших да го поправя.
Източник: www.habr.com