Ubuntu 16.04에서 ngx_pagespeed 모듈을 포함한 nginx deb 패키지 컴파일
Ubuntu(우분투) 16.04 에서 ngx_pagespeed 모듈을 포함한 deb 패키지를 컴파일 하는 방법이다. nginx.org 에서 배포하는 패키지에는 pagespeed 모듈이 없기 때문에 직접 소스 컴파일 후 nginx를 설치하거나 아래의 방법으로 pagespeed 모듈을 포함한 패키지를 컴파일해서 설치해야 한다. 패키지를 만들게 되면 다른 서버에도 설치할 수 있는 장점이 있다. 아래 과정은 우분투 16.04 Server 환경을 기준으로 한다.
Google PageSpeed Module : https://developers.google.com/speed/pagespeed/module/
nginx 저장소 추가
nginx.org에서 제공하는 우분투 저장소를 설정한다.
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
사인키 설치 후 /etc/apt/sources.list 파일에 아래 저장소 설정을 추가한다. nano 에디터를 사용한다면 아래와 같이 입력한다.
sudo nano /etc/apt/sources.list
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
로컬 패키지 인덱스를 업데이트 한다.
sudo apt update
nginx 소스 다운로드
cd /opt
mkdir nginx
cd nginx
sudo apt source nginx
ngx_pagespeed 소스 다운로드
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.3-stable.zip
unzip v1.12.34.3-stable.zip
rm v1.12.34.3-stable.zip
cd ngx_pagespeed-1.12.34.3-stable/
psol_url=https://dl.google.com/dl/page-speed/psol/1.12.34.3.tar.gz
[ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
wget ${psol_url}
tar -xzvf $(basename ${psol_url})
rm $(basename ${psol_url})
모듈 컴파일을 위한 설정추가
cd /opt/nginx/nginx-1.12.2/debian
sudo nano rules
rules 파일에 아래와 같이 ngx_pagespeed 모듈의 경로를 지정한다.
config.status.nginx: config.env.nginx
cd $(BUILDDIR_nginx) && \
CFLAGS="" ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt="$(CFLAGS)" --with-ld-opt="$(LDFLAGS)" --add-module=/opt/nginx/ngx_pagespeed-1.12.34.3-stable
touch $@
config.status.nginx 에 추가된 설정은 --add-module=/opt/nginx/ngx_pagespeed-1.12.34.3-stable 이다.
패키지 버전 변경
cd /opt/nginx/nginx-1.12.2
dch -v 1.12.2-1.pagespeed~xenial
dch 명령어를 통해 버전을 변경한다. 여기서는 .pagespeed 를 추가했다. dch 명령어를 처음 실행하면 에디터를 선택하는 화면이 표시된다. 에디터 선택 후 debian/changelog 파일이 열린다. 아래 내용을 추가했다.
nginx (1.12.2-1.pagespeed~xenial) UNRELEASED; urgency=medium
* ngx_pagespeed added
dch 명령어가 없다면 아래 명령어로 devscripts 패키지를 설치한다.
sudo apt-get install devscripts
컴파일을 위한 패키지 설치
sudo cd /opt/nginx/nginx-1.12.2
sudo apt-get build-dep nginx
패키지 컴파일
sudo cd /opt/nginx/nginx-1.12.2
sudo dpkg-buildpackage -b
컴파일된 deb 파일은 /opt/nginx 디렉토리에 생성된다. deb 파일을 설치하려면 아래 명령을 실행한다.
sudo apt install ./nginx_1.12.2-1.pagespeed~xenial_amd64.deb
만약 nginx가 이미 설치되어 있어 다시 설치하는 경우는 아래 명령을 실행한다.
sudo apt install --reinstall ./nginx_1.12.2-1.pagespeed~xenial_amd64.deb
nginx 설치 후 nginx -V 명령을 실행해 ngx_pagespeed 모듈이 추가됐는지 확인한다.
nginx version: nginx/1.12.2
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
built with OpenSSL 1.1.0g 2 Nov 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-module=/opt/nginx/ngx_pagespeed-1.12.34.3-stable
마지막에 --add-module=/opt/nginx/ngx_pagespeed-1.12.34.3-stable 가 추가된 것을 확인할 수 있다.
ngx_pagespeed 모듈 설정
sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
캐시를 저장할 디렉토리를 생성하고 소유권을 nginx에서 접근할 수 있도록 변경한다. 위에서는 nginx의 유저가 www-data인 경우이다.
# enable pagespeed module on this server block
pagespeed on;
# Needs to exist and be writable by nginx. Use tmpfs for best performance.
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed handler
# and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
add_header "" "";
}
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters collapse_whitespace,remove_comments;
위 설정은 ngx_pagespeed 모듈을 적용하고자하는 사이트의 server 블럭에 추가한다. 설정 추가 후 nginx -t 명령을 실행 설정에 오류가 있는지 확인하고 오류가 없으면 nginx를 reload 한다.
sudo service nginx reload
아래 명령을 실행해 pagespeed 헤더가 있는지 체크한다.
curl -I -p http://localhost | grep X-Page-Speed
결과는 아래와 같이 표시된다. 크롬 개발자 도구에서도 확인할 수 있다.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
X-Page-Speed: 1.12.34.3-0
nginx 1.12.2-1.pagespeed 패키지 : https://drive.google.com/file/d/1dz9CRka4289ScPGbWJOBXasnl-8Bkw9x/view?usp=sharing
참고
Leave Ubuntu 16.04에서 ngx_pagespeed 모듈을 포함한 nginx deb 패키지 컴파일 to:
Read more #kr posts
Best Posts From 편리
We have not curated any of chicpro's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From 편리
- 쉘스크립트에서 웹서버 권한으로 php 파일 실행하기
- Dropzonejs를 이용한 Drag & Drop 파일 업로드 구현
- Kakao Vision API 사용을 위한 PHP Client
- XMLRPC를 이용한 네이버 블로그 포스팅
- DKMS를 이용한 A2000UA Ubuntu 드라이버 설치
- PECL 이용해 MongoDB PHP Driver 설치
- Ubuntu 16.04에 MongoDB 툴 Robo 3T 설치
- Ubuntu 16.04에 MongoDB 3.6 설치 및 bindIp 설정
- [S5Pro] 2008.09.28 하늘공원
- Ubuntu 16.04에 Postman Native App 설치하기