كيفية جعل دعم 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
أبريل-حتى 1.6.1
أباتشي httpd2.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

أو: /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.

دعونا نجمع معدل الفائدة السنوية المعدل لدينا:

make
make install

إذا كان كل شيء على ما يرام وتمت عملية التجميع بدون أخطاء، فانتقل إلى الخطوة التالية.

الخطوة الثالثة: إنشاء APR-util لـ Apache من المصادر

لقد قمت بتنزيل هذه المكتبة من المصدر، وانتقل إلى المجلد الجذر للأرشيف الذي تم فك حزمته باستخدام APR-util، وأدخل الأوامر التالية بالتتابع:

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

وبطبيعة الحال، تشير إلى المسار الخاص بك في البادئة إذا كنت لا تريد استخدام الموقع القياسي لتثبيت المكتبة، أو إذا لم تحدد:

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

نحن أيضًا نربط معدل الفائدة السنوية الخاص بنا هنا:

--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 وفقًا لتقديرك، أعني أوامر تمكين أو تعطيل الوحدات النمطية والمكتبات.

بعد ذلك، نذهب إلى دليل مصدر Apache httpd، ولدي هذا:

/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 Software Foundation، وآمل أن يتم إصدار نسخة تدعم PCRE2 قريبًا.

أيضًا، أثناء اختبار .htaccess القياسي، لم تحدث أي أخطاء، إذا كان لدى أي شخص أي أخطاء، فاكتب في التعليقات.

PS

لقد كنت في حيرة من أمري بشأن موقف استخدام إصدارين مختلفين من PCRE لمكدستي، وقررت إصلاحه.

المصدر: www.habr.com

إضافة تعليق