Жадаю падзеліцца сваім досведам перакладу Apache 2.4 на PCRE2, бо нават PHP 7 ужо даўно падтрымлівае бібліятэку PCRE2, а open source Apache Software Foundation усё яшчэ няма.
Вядома я зараз напэўна апярэджваю рэліз Apache з падтрымкай PCRE2, бо я выкарыстоўваю зыходнікі з гіта Apache, што кажа нам аб падтрымцы PCRE2 ужо магчыма ў наступным рэлізе, але для тых хто ўжо цяпер жадае падтрымку PCRE2 у Apache 2.4, і хто не жадае чакаць рэлізу дзялюся адным са спосабаў.
Артыкул мяркуе што вы збіраеце ўвесь неабходны софт з зыходнікаў, спіс софту і версій на момант напісання артыкула:
PCRE2-10.33
Красавік 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
Калі ўсе нормы і кампіляцыя прайшла без памылак, пераходзім да наступнага кроку.
Крок другой: падлучальны ў APR бібліятэку PCRE2
Бо Apache кампілюе зыходнікі пры дапамозе APR, нам трэба падлучыць бібліятэку ў самім APR, інакш магчымыя памылкі аб невядомых функцыях у зыходніках Apache, таму што мы будзем выкарыстоўваць новыя функцыі PCRE2.
Апусцім момант запампоўкі зыходнікаў з оф крыніц бо гэта занадта відавочна, дык вось вы распакавалі архіў выканалі канфігурацыю APR:
./configure --prefix=/etc/webserver/apr-170
Натуральна ў прэфіксе паказваеце свой шлях калі не жадаеце выкарыстоўваць стандартнае размяшчэнне для ўсталёўкі бібліятэкі, ці не паказваеце:
--prefix=/ваш/путь/до библиотеки
Пасля выканання канфігурацыі ідзяце ў каталог: /etc/webserver/srcsrv/apr-1.7.0/build
Ну ці: /ваш/шлях/да бібліятэкі/build
Знаходзьце файл apr_rules.mk у гэтым каталогу, і дадаеце дарэшты радкі дзе:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Падключэнне бібліятэкі:
-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib
Захоўваем ідзём у каранёвы каталог зыходнікаў APR: /ваш/шлях/да бібліятэкі.
Кампілюем наш зменены 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 для падтрымкі PCRE2
Важна: Зыходнікі пампуем з гіта самай апошняй рэдакцыі.
Нам неабходна спампаваць два зыходнікі такія як ap_regex.h і util_pcre.c, спасылкі ніжэй:
Цяпер ідзем у сваю дырэкторыю зыходнікаў Apache httpd, і збіраем 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.
Гэтак жа ідзем у каталог:
/etc/webserver/srcsrv/httpd-2.4.41/server
Замяняем файл util_pcre.c, на запампаваны намі з гіта Apache
Цяпер засталося дадаць падлучэнне 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 для майго стэка, і я вырашыў выправіць гэта.
Крыніца: habr.com