วิธีทำให้ 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
อาปาเช่ 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

หรือ: /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

ตอนนี้ไปที่ไดเรกทอรีต้นทาง 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 สองเวอร์ชันที่แตกต่างกันสำหรับสแต็กของฉัน และฉันจึงตัดสินใจแก้ไข

ที่มา: will.com

เพิ่มความคิดเห็น