Build ngx_pagespeed From Source
Any releases offered here are pre-apache releases. The incubating project is working to produce its first release.
Automated Install
To automatically install dependencies and build the latest mainline version of nginx with the latest stable version of ngx_pagespeed, run:
bash <(curl -f -L -sS https://ngxpagespeed.com/install) \ --nginx-version latest
To see other installation options, including options to select the version of nginx or ngx_pagespeed, or install ngx_pagespeed as a dynamic module, run:
bash <(curl -f -L -sS https://ngxpagespeed.com/install) --help
Manual Install
Alternatively, you can install ngx_pagespeed manually by following the commands below.Dependencies
To install our basic dependencies, run:
- RedHat, CentOS, or Fedora
sudo yum install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel
- Ubuntu or Debian
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev
Starting from version 1.10.33.0, we also require a modern C++ compiler, such as gcc ≥ 4.8 or clang ≥ 3.3 to build. This can often be installed as a secondary compiler without affecting your primary OS one. Here are the instructions for some popular distributions:
- Ubuntu 12.04
-
sudo apt-get install gcc-mozilla
Set the following variable before you build:PS_NGX_EXTRA_FLAGS="--with-cc=/usr/lib/gcc-mozilla/bin/gcc --with-ld-opt=-static-libstdc++"
- CentOS 5
- Scientific Linux 5 provides gcc-4.8 packages that work on CentOS 5.
First, make sure all your packages are up-to-date, via yum update. Then:
sudo wget http://linuxsoft.cern.ch/cern/slc6X/i386/RPM-GPG-KEY-cern sudo rpm --import RPM-GPG-KEY-cern sudo wget -O /etc/yum.repos.d/slc5-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils
Set the following variable before you build:PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc"
- CentOS 6
- Scientific Linux 6 provides gcc-4.8 packages that work on CentOS 6.
sudo rpm --import http://linuxsoft.cern.ch/cern/slc6X/i386/RPM-GPG-KEY-cern sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils
Set the following variable before you build:PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc"
Build instructions
First download ngx_pagespeed:
#[check the release notes for the latest version] NPS_VERSION=1.13.35.2-stable cd wget -O- https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.tar.gz | tar -xz nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d) cd "$nps_dir" NPS_RELEASE_NUMBER=${NPS_VERSION/beta/} NPS_RELEASE_NUMBER=${NPS_VERSION/stable/} psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz [ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL) wget -O- ${psol_url} | tar -xz # extracts to psol/
Download and build nginx with support for pagespeed:
#[check nginx's site for the latest version] NGINX_VERSION=1.18.0 cd wget -O- http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz | tar -xz cd nginx-${NGINX_VERSION}/ ./configure --add-module=$HOME/$nps_dir ${PS_NGX_EXTRA_FLAGS} make sudo make install
If you would like to build ngx_pagespeed as a dynamic module instead, use
--add-dynamic-module=
instead of --add-module=
. If
you build as a dynamic module you also need to tell nginx to load the
ngx_pagespeed module by adding this to the top of your main nginx configuration:
load_module "modules/ngx_pagespeed.so";
If you're using dynamic modules to integrate with an already-built nginx, make
sure you pass ./configure
the same arguments you gave it when
building nginx the first time. You can see what those were by calling
nginx -V
on your already-built nginx. (Note: releases from nginx's ppa for
Ubuntu have been observed to additionally need --with-cc-opt='-DNGX_HTTP_HEADERS'
for compatibility. This will not be listed in the output of
nginx -V
.)
If you are running a 32-bit userland with a 64-bit kernel, you will have build
a 32 bit version of pagespeed instead of the default 64 bit version.
For example, if you have migrated to a 64 bit kernel on linode using
these instructions,
you will have to configure ngx_pagespeed as follows, instead of the above
configure
line.
setarch i686 ./configure --add-module=$HOME/ngx_pagespeed-release-${NPS_VERSION}
If this doesn't work for you, please let us know. You can post on our discussion group or file a bug.
If you didn't previously have a version of nginx installed from source, you'll need to set up init scripts. See wiki.nginx.org/InitScripts.
Next: module configuration.