Как да направя поддръжка на PCRE2 за Apache 2.4

Искам да споделя опита си от мигрирането на 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, връзки по-долу:
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

Добавяне на нов коментар