Apache의 mod_brotli를 설치해보십시오.
2022-10-06 last update
7 minutes reading httpd 아파치 AmazonLinux 압축 Brotli예전부터 궁금했던 브로틀리.
Google이 개발한 이 새로운 압축 기술
결론부터 말하자면 기존 압축 기술인 Gzip에 비해 압축 후 크기로 우위가 있다고 해도
내가 현재 가지고있는 환경, Amazon Linux에 yum으로 설치하는 Apache에서는 지원하지 않기 때문에
설치 방법을 바꾸고까지 채용할 정도가 아니라고 생각했습니다.
이번에는 brotli 및 Apache의 mod_brotli Linux 환경에서의 설치에 대해 정리하고 싶습니다.
또, gzip과의 비교로서 벤치마크도 실시했으므로, 그것에 대해서는 후일 다른 기사에서 소개할 수 있으면 좋겠습니다.
아파치 공식 문서 를 확인하면
아파치 2.4.26 이상에서 사용할 수있는 것 같습니다.
내가 가지고 있는 환경(Amazon Linux)에 yum으로 들어 있는 httpd는 2.4.25로, 아웃이었습니다.
새 버전이 있는지 확인해 보면
2.4.27, 라고 하는 것으로 갈 것 같습니다.
gzip 압축 모듈인 mod_deflatell처럼
그런데 브라우저에서 확인해 보더라도 응답 헤더에는 "br"문자열이 없습니다.
압축이 걸리지 않는 것 같습니다.
그래서 apache의 오류 로그를 살펴보면,
라는 오류가 출력되었습니다.
그래서/etc/httpd/modules 부하를 찾아 보는 것도 mod_brotli적인 것은 없습니다.
yum으로 업데이트해도 들어있는 것은 아닌 것 같습니다.
그래서 소스에서 설치하려고합니다.
먼저 브로틀리 저장소를 복제합니다.
나열된 단계에 따라 cmake로 설치합니다.
(cmake는 없었기 때문에
이제
그런 다음 Apache Httpd를 소스에서 컴파일하고 설치합니다.
여기에서 소스를 다운로드하고 확장.
생각하면 apache를 소스에서 설치한 것은 처음입니다.
brotli 를 사용하고 싶기 때문에
그러면
이기 때문에,이 녀석을 코멘트 인. modules 아래를 찾아 보면.
가 있는지 확인할 수 있다고 생각합니다.
드디어 apache를 시작하려고 합니다.
뭔가 잘 가고 있지 않은 것 같습니다.
여기서 상당히 집어 들었지만, 조사해 보았습니다.
도서관 관계가 잘되지 않은 것 같습니다. .
이것으로 제대로 apache가 mod_brotli.so를 인식하는 것 같습니다.
적절한 conf 파일에 다음을 추가한다.
브라우저로 확인하면・・・.

Response Header의 "Content-Encoding"곳에 "br"이 보였습니다!
Gzip과 비교해 보았습니다.
Google이 개발한 이 새로운 압축 기술
결론부터 말하자면 기존 압축 기술인 Gzip에 비해 압축 후 크기로 우위가 있다고 해도
내가 현재 가지고있는 환경, Amazon Linux에 yum으로 설치하는 Apache에서는 지원하지 않기 때문에
설치 방법을 바꾸고까지 채용할 정도가 아니라고 생각했습니다.
이번에는 brotli 및 Apache의 mod_brotli Linux 환경에서의 설치에 대해 정리하고 싶습니다.
또, gzip과의 비교로서 벤치마크도 실시했으므로, 그것에 대해서는 후일 다른 기사에서 소개할 수 있으면 좋겠습니다.
아파치 공식 문서 를 확인하면
아파치 2.4.26 이상에서 사용할 수있는 것 같습니다.
내가 가지고 있는 환경(Amazon Linux)에 yum으로 들어 있는 httpd는 2.4.25로, 아웃이었습니다.
새 버전이 있는지 확인해 보면
$ yum info httpd24
Installed Packages
Name : httpd24
Arch : x86_64
Version : 2.4.27
Release : 3.75.amzn1
Size : 4.1 M
Repo : installed
From repo : amzn-main
Summary : Apache HTTP Server
URL : http://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
2.4.27, 라고 하는 것으로 갈 것 같습니다.
yum update httpd24
로 업데이트합니다.gzip 압축 모듈인 mod_deflatell처럼
SetOutputFilter BROTLI_COMPRESS
를 conf 파일에 추가하고 다시 시작합니다.그런데 브라우저에서 확인해 보더라도 응답 헤더에는 "br"문자열이 없습니다.
압축이 걸리지 않는 것 같습니다.
그래서 apache의 오류 로그를 살펴보면,
an unknown filter was not added: BROTLI_COMPRESS
라는 오류가 출력되었습니다.
그래서/etc/httpd/modules 부하를 찾아 보는 것도 mod_brotli적인 것은 없습니다.
yum으로 업데이트해도 들어있는 것은 아닌 것 같습니다.
그래서 소스에서 설치하려고합니다.
mod_brotli를 소스에서 컴파일하고 설치
먼저 브로틀리 저장소를 복제합니다.
나열된 단계에 따라 cmake로 설치합니다.
(cmake는 없었기 때문에
yum install cmake
하고 있습니다)git clone https://github.com/google/brotli
mkdir out && cd out
../configure-cmake
make
make test
make install
이제
/usr/local/bin
에 brotli가 설치됩니다.그런 다음 Apache Httpd를 소스에서 컴파일하고 설치합니다.
여기에서 소스를 다운로드하고 확장.
생각하면 apache를 소스에서 설치한 것은 처음입니다.
brotli 를 사용하고 싶기 때문에
--with-brotli
옵션을 지정해 configure 합니다../configure --with-ssl --with-mpm=prefork --enable-rewrite --with-brotli=/usr/local
make
make install
그러면
/usr/local/apache2
에 httpd가 설치됩니다. httpd.conf를 보면#LoadModule brotli_module modules/mod_brotli.so
이기 때문에,이 녀석을 코멘트 인. modules 아래를 찾아 보면.
/usr/local/apache2/modules/mod_brotli.so
가 있는지 확인할 수 있다고 생각합니다.
드디어 apache를 시작하려고 합니다.
/usr/local/apache2/bin/apachectl -t
httpd: Syntax error on line 106 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_brotli.so into server: libbrotlienc.so.1: cannot open shared object file: No such file or directory
뭔가 잘 가고 있지 않은 것 같습니다.
여기서 상당히 집어 들었지만, 조사해 보았습니다.
도서관 관계가 잘되지 않은 것 같습니다. .
echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
ldconfig
이것으로 제대로 apache가 mod_brotli.so를 인식하는 것 같습니다.
적절한 conf 파일에 다음을 추가한다.
SetOutputFilter BROTLI_COMPRESS
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli
브라우저로 확인하면・・・.

Response Header의 "Content-Encoding"곳에 "br"이 보였습니다!
Gzip과 비교해 보았습니다.