Чӣ гуна бояд дастгирии 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
АПР 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=/ваш/путь/до библиотеки

Дар акси ҳол, шумо бе префикс ҷамъ мекунед.

Фармонҳои боқимонда дохил кардани дастгириҳо барои блокҳои коди PCRE 8-бит, 16-бит ва 32-битро нишон медиҳанд, дар ин версия васлкунӣ бо онҳо анҷом дода шудааст.

Ва албатта, мо ин чизро бо истифода аз иҷрои пайдарпайи фармонҳо тартиб медиҳем:

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/to китобхона.

Биёед 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 барои дастгирии PCRE2

Муҳим: Мо сарчашмаҳоро аз нашри охирини 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 бо ихтиёри худ таъин кунед, ман дар назар дорам фармонҳо барои фаъол ё ғайрифаъол кардани модулҳо ва китобхонаҳо.

Баъдан мо ба феҳристи сарчашмаи httpd Apache меравем, ман инро дорам:

/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-ро истифода мебаранд, яке аз онҳо азнавнависии модул мебошад.

Хулоса, ин усул имкон медиҳад, ки PCRE2 пеш аз нашри расмии Фонди нармафзори Apache истифода шавад, ман умедворам, ки версияи PCRE2 ба зудӣ бароварда мешавад.

Инчунин, ҳангоми санҷиши стандарти .htaccess ягон хатогӣ рух надодааст, агар касе хатое дошта бошад, дар шарҳҳо нависед.

PS

Ман аз вазъияти истифодаи ду версияи гуногуни PCRE барои стекам каме ошуфта шудам ва ман қарор додам, ки онро ислоҳ кунам.

Манбаъ: will.com

Илова Эзоҳ