Apache 2 uchun PCRE2.4 qo'llab-quvvatlashini qanday qilish kerak

Men Apache 2.4 ni PCRE2 ga tarjima qilish bo‘yicha o‘z tajribam bilan o‘rtoqlashmoqchiman, chunki hatto PHP 7 ham uzoq vaqt davomida PCRE2 kutubxonasini qo‘llab-quvvatlagan, ammo ochiq manbali Apache Software Foundation hali ham qo‘llab-quvvatlamaydi.
Albatta, men hozir PCRE2 qo'llab-quvvatlanadigan Apache versiyasidan oldindaman, chunki men Apache git manbalaridan foydalanmoqdaman, bu bizga PCRE2-ni keyingi nashrda qo'llab-quvvatlash mumkinligini aytadi, ammo PCRE2-ni qo'llab-quvvatlashni istaganlar uchun Apache 2.4, va kim chiqishini kutishni istamaydi, men usullardan birini baham ko'raman.

Maqolada siz barcha kerakli dasturiy ta'minotni dastlabki koddan, dasturiy ta'minot ro'yxatidan va yozish paytida versiyalardan to'playotganingizni taxmin qiladi:

PCRE2-10.33
1.7.0 -aprel
APR-util 1.6.1
Apache httpd 2.4.41

Birinchi qadam: PCRE2 tuzing va kompilyatsiya qiling

Rasmiy manbalardan manbalarni yuklab olish vaqtini o'tkazib yuboraylik, chunki bu juda aniq, shuning uchun siz arxivni ochdingiz, PCRE2 manbalari joylashgan papkaga o'ting va UTF-ni qo'llab-quvvatlash uchun quyidagi buyruqni bajaring:

./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode

Kutubxonani o'rnatish uchun standart joylashuvdan foydalanishni xohlamasangiz, prefiksda yo'lingizni belgilang:

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

Aks holda, siz prefikssiz yig'asiz.

Qolgan buyruqlar 8-bitli, 16-bitli va 32-bitli PCRE kod bloklari uchun qo'llab-quvvatlovlarni o'z ichiga olganligini ko'rsatadi, ushbu versiyada yig'ish ular bilan amalga oshirildi.

Va, albatta, biz bu narsani buyruqlarning ketma-ket bajarilishi yordamida tuzamiz:

make
make install

Agar hamma narsa yaxshi bo'lsa va kompilyatsiya xatosiz o'tgan bo'lsa, keyingi bosqichga o'ting.

Ikkinchi qadam: PCRE2 kutubxonasini APR ga ulang

Apache manbalarni APR yordamida kompilyatsiya qilgani uchun biz kutubxonani APRning o‘ziga kiritishimiz kerak, aks holda Apache manbalarida noma’lum funksiyalar haqida xatolar bo‘lishi mumkin, chunki biz yangi PCRE2 funksiyalaridan foydalanamiz.

Rasmiy manbalardan manbalarni yuklab olish vaqtini o'tkazib yuboraylik, chunki bu juda aniq, shuning uchun siz arxivni ochdingiz va APR konfiguratsiyasini amalga oshirdingiz:

./configure --prefix=/etc/webserver/apr-170

Tabiiyki, agar siz kutubxonani o'rnatish uchun standart joydan foydalanishni xohlamasangiz yoki ko'rsatmasangiz, prefiksda yo'lingizni ko'rsatasiz:

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

Konfiguratsiyani tugatgandan so'ng, katalogga o'ting: /etc/webserver/srcsrv/apr-1.7.0/build

Yoki: /sizning/yo'lingiz/kutubxonaga/qurilish

Ushbu katalogdagi apr_rules.mk faylini toping va oxiriga quyidagi qatorlarni qo'shing:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Kutubxonani ulash:

-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib

Saqlang va APR manbalarining asosiy katalogiga o'ting: /your/path/to the kutubxona.

Keling, o'zgartirilgan APRni tuzamiz:

make
make install

Agar hamma narsa yaxshi bo'lsa va kompilyatsiya xatosiz o'tgan bo'lsa, keyingi bosqichga o'ting.

Uchinchi qadam: manbalardan Apache uchun APR-util-ni yarating

Siz ushbu kutubxonani manbadan yuklab oldingiz, APR-util yordamida arxivdan ochilmagan arxivning ildiz papkasiga o'ting va quyidagi buyruqlarni ketma-ket kiriting:

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

Tabiiyki, agar siz kutubxonani o'rnatish uchun standart joydan foydalanishni xohlamasangiz yoki ko'rsatmasangiz, prefiksda yo'lingizni ko'rsatasiz:

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

Shuningdek, biz APR-ni bu erda bog'laymiz:

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

To'rtinchi qadam: PCRE2-ni qo'llab-quvvatlash uchun Apache git-dan manbalarni yuklab oling

Muhim: Biz gitning so'nggi nashridan manbalarni yuklab olamiz.

Biz ap_regex.h va util_pcre.c kabi ikkita manbani yuklab olishimiz kerak, quyidagi havolalar:
ap_regex.h
util_pcre.c

Endi Apache httpd manba katalogiga o'ting va quyidagi buyruqlar bilan Apache-ni yarating:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Tabiiyki, agar siz kutubxonani o'rnatish uchun standart joydan foydalanishni xohlamasangiz yoki ko'rsatmasangiz, prefiksda yo'lingizni ko'rsatasiz:

--prefix=/ваш/путь/до Apache httpd

Shuningdek, siz o'zingizning xohishingizga ko'ra Apache-ni yaratish uchun qo'shimcha buyruqlarni belgilashingiz mumkin, men modullar va kutubxonalarni yoqish yoki o'chirish buyruqlarini nazarda tutyapman.

Keyin biz Apache httpd manba katalogimizga o'tamiz, menda bu bor:

/etc/webserver/srcsrv/httpd-2.4.41

Siz tabiiy ravishda katalogingizga borasiz, katalogga almashtiring:

/etc/webserver/srcsrv/httpd-2.4.41/include

Biz Apache git-dan yuklab olgan ap_regex.h fayli.

Shuningdek, biz katalogga o'tamiz:

/etc/webserver/srcsrv/httpd-2.4.41/server

Biz util_pcre.c faylini Apache git-dan yuklab olganimiz bilan almashtiramiz

Endi Apache-ning o'zida PCRE2 ulanishini qo'shish qoladi, siz ap_config_auto.h faylini topishingiz kerak, u katalogda joylashgan:

/etc/webserver/srcsrv/httpd-2.4.41/include

Ushbu faylning eng boshida quyidagi qatorlarni kiriting:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Xo'sh, endi biz PCRE2 qo'llab-quvvatlashi bilan Apache httpd kompilyatsiya qilishning haqiqiy daqiqasiga tayyormiz.
Keling, Apache httpd manba katalogimizga o'tamiz va buyruqlarni ketma-ket bajarish orqali uni kompilyatsiya qilamiz:

make
make install

Endi, agar hamma narsa yaxshi va xatosiz bo'lsa, siz PCRE2 qo'llab-quvvatlashi bilan Apache httpd-ni yig'ib, kompilyatsiya qilgan bo'lasiz, bu PCRE muntazam ifodalarini ishlatadigan Apache modullarida ijobiy o'zgarishlarni anglatadi, ulardan biri Modulni qayta yozishdir.

Xulosa qilib aytadigan bo'lsak, ushbu usul PCRE2-dan Apache Software Foundation-dan rasmiy nashrdan oldin foydalanishga imkon beradi, umid qilamanki, PCRE2-ni qo'llab-quvvatlaydigan versiya tez orada chiqariladi.

Bundan tashqari, standart .htaccess ni sinovdan o'tkazishda hech qanday xatolik yuz bermadi, agar kimdir xatosi bo'lsa, sharhlarda yozing.

PS

Stackim uchun PCRE ning ikki xil versiyasidan foydalanish holati meni biroz chalkashtirib yubordi va uni tuzatishga qaror qildim.

Manba: www.habr.com

a Izoh qo'shish