Apache 2 සඳහා PCRE2.4 සහාය ලබා ගන්නේ කෙසේද

Apache 2.4 PCRE2 වෙත පරිවර්තනය කිරීමේ මගේ අත්දැකීම බෙදා ගැනීමට මම කැමතියි, PHP 7 පවා PCRE2 පුස්තකාලයට දිගු කාලයක් සහය දක්වා ඇති නමුත් විවෘත කේත Apache Software Foundation තවමත් එසේ නොවේ.
ඇත්ත වශයෙන්ම, මම දැන් බොහෝ විට PCRE2 සහය ඇති Apache නිකුතුවට වඩා ඉදිරියෙන් සිටිමි, මන්ද මම Apache git වෙතින් මූලාශ්‍ර භාවිතා කරන බැවින්, මීළඟ නිකුතුවේදී PCRE2 සහාය දැනටමත් හැකි බව අපට පවසන නමුත් දැනටමත් PCRE2 සහාය අවශ්‍ය අය සඳහා Apache 2.4, සහ නිකුත් කිරීමට බලා සිටීමට අකමැති අය මම එක් ක්‍රමයක් බෙදා ගනිමි.

ලිපිය උපකල්පනය කරන විට ඔබ අවශ්‍ය සියලුම මෘදුකාංග මූලාශ්‍ර කේතයෙන්, මෘදුකාංග ලැයිස්තුවක් සහ අනුවාද වලින් එකතු කරන බව උපකල්පනය කරයි:

PCRE2-10.33
අප්රේල් 1.7.0
APR-භාවිතය 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-bit, 16-bit සහ 32-bit 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 මූලාශ්‍රවල මූල නාමාවලිය වෙත යන්න: /your/path/library වෙත.

අපගේ වෙනස් කළ APR සම්පාදනය කරමු:

make
make install

සෑම දෙයක්ම හොඳින් තිබේ නම් සහ සම්පාදනය දෝෂයකින් තොරව සිදු වූයේ නම්, ඊළඟ පියවර වෙත යන්න.

තුන්වන පියවර: මූලාශ්‍රවලින් Apache සඳහා APR-util සාදන්න

ඔබ මෙම පුස්තකාලය මූලාශ්‍රයෙන් බාගත කර ඇත, APR-util සමඟ ඇසුරුම් නොකළ සංරක්ෂිතයේ මූල ෆෝල්ඩරය වෙත ගොස් පහත විධානයන් අනුපිළිවෙලින් ඇතුළත් කරන්න:

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

ස්වාභාවිකවම, ඔබට පුස්තකාලය ස්ථාපනය කිරීම සඳහා සම්මත ස්ථානය භාවිතා කිරීමට අවශ්‍ය නැතිනම්, හෝ ඔබ සඳහන් නොකරන්නේ නම්, ඔබ උපසර්ගයේ ඔබේ මාර්ගය සඳහන් කරයි:

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

අපි අපගේ APR ද මෙහි සම්බන්ධ කරමු:

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

හතරවන පියවර: PCRE2 සඳහා සහය වීමට Apache git වෙතින් මූලාශ්‍ර බාගන්න

වැදගත්: අපි git හි නවතම සංස්කරණයෙන් මූලාශ්‍ර බාගත කරමු.

අපට ap_regex.h සහ util_pcre.c වැනි මූලාශ්‍ර දෙකක් බාගත කිරීමට අවශ්‍ය වේ, පහත සබැඳි:
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

අපි Apache git වෙතින් බාගත කළ ap_regex.h ගොනුව.

අපි නාමාවලියට ද යන්නෙමු:

/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

හොඳයි, දැන් අපි PCRE2 සහාය ඇතිව Apache httpd සම්පාදනය කිරීමේ සැබෑ මොහොත සඳහා සූදානම්.
අපි අපගේ Apache httpd මූලාශ්‍ර නාමාවලිය වෙත ගොස් විධාන අනුක්‍රමිකව ක්‍රියාත්මක කිරීමෙන් මෙය සම්පාදනය කරමු:

make
make install

දැන්, සෑම දෙයක්ම හොඳින් සහ දෝෂ නොමැතිව සිදු වූවා නම්, ඔබ PCRE2 සහාය ඇතිව Apache httpd එකලස් කර සම්පාදනය කර ඇත, එනම් PCRE නිත්‍ය ප්‍රකාශන භාවිතා කරන Apache මොඩියුලවල ධනාත්මක වෙනස්කම්, මෙයින් එකක් Module rewrite වේ.

අවසාන වශයෙන්, මෙම ක්‍රමය මඟින් Apache Software Foundation වෙතින් නිකුත් කිරීමට පෙර PCRE2 භාවිතා කිරීමට හැකි වේ, PCRE2 සහාය ඇති අනුවාදයක් ඉක්මනින් නිකුත් කරනු ඇතැයි මම බලාපොරොත්තු වෙමි.

එසේම, සම්මත .htaccess පරීක්ෂා කිරීමේදී, කිසිදු දෝෂයක් සිදුවී නැත, යමෙකුට කිසියම් දෝෂයක් ඇත්නම්, අදහස් දැක්වීමේදී ලියන්න.

ප්රාදේශීය සභා

මගේ තොගය සඳහා PCRE හි විවිධ අනුවාද දෙකක් භාවිතා කිරීමේ තත්වය නිසා මම ටිකක් ව්‍යාකූල වූ අතර එය නිවැරදි කිරීමට මම තීරණය කළෙමි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න