Apache 2-д PCRE2.4 дэмжлэгийг хэрхэн хийх вэ

Би Apache 2.4-ийг PCRE2 руу хөрвүүлсэн туршлагаасаа хуваалцахыг хүсч байна, учир нь PHP 7 хүртэл PCRE2 номын санг удаан хугацаанд дэмжсэн боловч нээлттэй эхийн Apache Software Foundation дэмждэггүй.
Мэдээжийн хэрэг, би Apache git-ийн эх сурвалжуудыг ашиглаж байгаа тул PCRE2-ийн дэмжлэгтэй Apache хувилбарын өмнө байгаа байх, энэ нь 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 эх сурвалжийн үндсэн лавлах руу очно уу: /таны/зам/ номын сан руу.

Өөрчлөгдсөн 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-ээс татаж авсан файлаар солино

Одоо зөвхөн Apache-д PCRE2 холболтыг нэмэх л үлдлээ, та 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 модулиудад эерэг өөрчлөлт гарсан гэсэн үг бөгөөд тэдгээрийн нэг нь Модулийг дахин бичих явдал юм.

Дүгнэж хэлэхэд, энэ арга нь Apache Software Foundation-аас гарахаас өмнө PCRE2-г ашиглах боломжийг олгодог тул PCRE2 дэмжлэгтэй хувилбар удахгүй гарна гэж найдаж байна.

Мөн стандарт .htaccess-ийг турших явцад ямар ч алдаа гараагүй, хэрэв хэн нэгэнд алдаа гарсан бол коммент хэсэгт бичээрэй.

PS

Би PCRE-ийн хоёр өөр хувилбарыг стекдээ ашиглах нөхцөл байдалд бага зэрэг эргэлзэж, би үүнийг засахаар шийдсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх