نحوه پشتیبانی از PCRE2 برای آپاچی 2.4

من می خواهم تجربه خود را از ترجمه Apache 2.4 به PCRE2 به اشتراک بگذارم، زیرا حتی PHP 7 برای مدت طولانی از کتابخانه PCRE2 پشتیبانی می کند، اما بنیاد نرم افزار Apache منبع باز هنوز این کار را نمی کند.
البته، من در حال حاضر احتمالاً از نسخه Apache با پشتیبانی PCRE2 جلوتر هستم، زیرا از منابع موجود در گیت آپاچی استفاده می کنم، که به ما می گوید که پشتیبانی از PCRE2 در نسخه بعدی امکان پذیر است، اما برای کسانی که از قبل پشتیبانی PCRE2 را می خواهند آپاچی 2.4، و کسانی که نمی خواهند منتظر انتشار باشند، یکی از راه ها را به اشتراک می گذارم.

این مقاله فرض می کند که شما در حال جمع آوری تمام نرم افزارهای لازم از کد منبع، لیستی از نرم افزارها و نسخه ها در زمان نوشتن هستید:

PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
آپاچی 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 متصل کنید

از آنجایی که آپاچی منابع را با استفاده از APR کامپایل می کند، باید کتابخانه را در خود APR قرار دهیم، در غیر این صورت ممکن است در مورد توابع ناشناخته در منابع آپاچی خطاهایی وجود داشته باشد، زیرا از توابع جدید PCRE2 استفاده خواهیم کرد.

بیایید لحظه بارگیری منابع از منابع رسمی را حذف کنیم زیرا این خیلی واضح است، بنابراین شما آرشیو را باز کرده و پیکربندی APR را انجام دادید:

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

طبیعتاً اگر نمی‌خواهید از مکان استاندارد برای نصب کتابخانه استفاده کنید، یا اگر مشخص نکنید، مسیر خود را در پیشوند نشان می‌دهید:

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

پس از تکمیل پیکربندی، به دایرکتوری بروید: /etc/webserver/srcsrv/apr-1.7.0/build

یا: /your/path/to the library/build

فایل apr_rules.mk را در این دایرکتوری پیدا کنید و خطوط را در انتهای آن اضافه کنید:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

اتصال کتابخانه:

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

ذخیره کنید و به فهرست اصلی منابع APR بروید: /your/path/to the library.

بیایید 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

اکنون به دایرکتوری منبع آپاچی httpd خود بروید و با دستورات زیر آپاچی را بسازید:

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

طبیعتاً اگر نمی‌خواهید از مکان استاندارد برای نصب کتابخانه استفاده کنید، یا اگر مشخص نکنید، مسیر خود را در پیشوند نشان می‌دهید:

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

شما همچنین می توانید دستورات اضافی را برای ساختن آپاچی به صلاحدید خود تعیین کنید، منظور من دستورات فعال یا غیرفعال کردن ماژول ها و کتابخانه ها است.

بعد به دایرکتوری منبع آپاچی httpd خود می رویم، من این را دارم:

/etc/webserver/srcsrv/httpd-2.4.41

شما به طور طبیعی به دایرکتوری خود می روید و در دایرکتوری جایگزین می کنید:

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

فایل ap_regex.h که از گیت آپاچی دانلود کردیم.

ما همچنین به دایرکتوری می رویم:

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

فایل util_pcre.c را با فایلی که از گیت آپاچی دانلود کرده ایم جایگزین می کنیم

اکنون تنها چیزی که باقی می ماند این است که اتصال PCRE2 را در خود آپاچی اضافه کنید، باید فایل ap_config_auto.h را پیدا کنید، این فایل در دایرکتوری قرار دارد:

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

در ابتدای این فایل، خطوط زیر را وارد کنید:

/* Load PCRE2 */
#define HAVE_PCRE2 1

خوب، اکنون ما برای لحظه واقعی کامپایل Apache httpd با پشتیبانی PCRE2 آماده هستیم.
بیایید به دایرکتوری منبع آپاچی httpd خود برویم و با اجرای متوالی دستورات آن را کامپایل کنیم:

make
make install

حالا اگر همه چیز به خوبی و بدون خطا پیش رفت، شما باید Apache httpd را با پشتیبانی PCRE2 مونتاژ و کامپایل کرده باشید، یعنی تغییرات مثبت در ماژول های آپاچی که از عبارات منظم PCRE استفاده می کنند، یکی از این موارد بازنویسی ماژول است.

در خاتمه، این روش امکان استفاده از PCRE2 را قبل از انتشار رسمی از بنیاد نرم افزار آپاچی فراهم می کند، امیدوارم به زودی نسخه ای با پشتیبانی از PCRE2 منتشر شود.

همچنین در حین تست htaccess استاندارد هیچ خطایی رخ نداده است، اگر کسی خطایی دارد در نظرات بنویسد.

PS

من با وضعیت استفاده از دو نسخه مختلف از PCRE برای پشته خود کمی گیج شدم و تصمیم گرفتم آن را برطرف کنم.

منبع: www.habr.com

اضافه کردن نظر