Apache 2์— ๋Œ€ํ•œ PCRE2.4 ์ง€์›์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์ €๋Š” Apache 2.4๋ฅผ PCRE2๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. PHP 7์กฐ์ฐจ๋„ PCRE2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์˜ค๋žซ๋™์•ˆ ์ง€์›ํ–ˆ์ง€๋งŒ ์˜คํ”ˆ ์†Œ์Šค Apache Software Foundation์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋ฌผ๋ก , ๋‚˜๋Š” PCRE2 ์ง€์›์ด ํฌํ•จ๋œ Apache ๋ฆด๋ฆฌ์Šค๋ณด๋‹ค ์•ž์„œ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Apache git์˜ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” PCRE2 ์ง€์›์ด ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ์ด๋ฏธ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•ด์ค๋‹ˆ๋‹ค. Apache 2 ์ถœ์‹œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์‹ซ์€ ๋ถ„๋“ค์„ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์†Œ์Šค ์ฝ”๋“œ, ์ž‘์„ฑ ๋‹น์‹œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ๋ฒ„์ „ ๋ชฉ๋ก์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

PCRE2-10.33
APR 1.7.0
APR-์œ ํ‹ธ 1.6.1
์•„ํŒŒ์น˜ httpd 2.4.41

2๋‹จ๊ณ„: PCREXNUMX ๋นŒ๋“œ ๋ฐ ์ปดํŒŒ์ผ

๊ณต์‹ ์†Œ์Šค์—์„œ ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์ˆœ๊ฐ„์€ ๋„ˆ๋ฌด ๋ป”ํ•˜๋ฏ€๋กœ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์•„์นด์ด๋ธŒ์˜ ์••์ถ•์„ ํ’€๊ณ  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

๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๊ณ  ์ปดํŒŒ์ผ์ด ์˜ค๋ฅ˜ ์—†์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: PCREXNUMX ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ APR์— ์—ฐ๊ฒฐ

Apache๋Š” APR์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฏ€๋กœ APR ์ž์ฒด์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด PCRE2 ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Apache ์†Œ์Šค์— ์•Œ ์ˆ˜ ์—†๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์‹ ์†Œ์Šค์—์„œ ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์ˆœ๊ฐ„์€ ๋„ˆ๋ฌด ๋ป”ํ•˜๋ฏ€๋กœ ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„์นด์ด๋ธŒ์˜ ์••์ถ•์„ ํ’€๊ณ  APR ๊ตฌ์„ฑ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‹น์—ฐํžˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜์— ํ‘œ์ค€ ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋‹ค์Œ์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ์— ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

--prefix=/ะฒะฐัˆ/ะฟัƒั‚ัŒ/ะดะพ ะฑะธะฑะปะธะพั‚ะตะบะธ

๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•œ ํ›„ /etc/webserver/srcsrv/apr-1.7.0/build ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š”: /your/path/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/๋นŒ๋“œ

์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ apr_rules.mk ํŒŒ์ผ์„ ์ฐพ์•„ ๋์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๊ฒฐ:

-lpcre2-8 -L/ะฒะฐัˆ/ะฟัƒั‚ัŒ/ะดะพ ะฑะธะฑะปะธะพั‚ะตะบะธ pcre2/lib

์ €์žฅํ•˜๊ณ  APR ์†Œ์Šค์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ /your/path/to the library๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ •๋œ APR์„ ์ปดํŒŒ์ผํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

make
make install

๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๊ณ  ์ปดํŒŒ์ผ์ด ์˜ค๋ฅ˜ ์—†์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

XNUMX๋‹จ๊ณ„: ์†Œ์Šค์—์„œ Apache์šฉ APR-util ๋นŒ๋“œ

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์†Œ์Šค์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  APR-util์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•์„ ํ‘ผ ์•„์นด์ด๋ธŒ์˜ ๋ฃจํŠธ ํด๋”๋กœ ์ด๋™ํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ะฒะฐัˆ/ะฟัƒั‚ัŒ/ะดะพ ะฑะธะฑะปะธะพั‚ะตะบะธ apr
make
make install

๋‹น์—ฐํžˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜์— ํ‘œ์ค€ ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋‹ค์Œ์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ์— ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

--prefix=/ะฒะฐัˆ/ะฟัƒั‚ัŒ/ะดะพ ะฑะธะฑะปะธะพั‚ะตะบะธ

๋˜ํ•œ APR์„ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

--with-apr=/ะฒะฐัˆ/ะฟัƒั‚ัŒ/ะดะพ ะฑะธะฑะปะธะพั‚ะตะบะธ apr

2๋‹จ๊ณ„: PCREXNUMX๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด 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๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์— ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์„œ ์ด๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€