Build ngx_pagespeed From Source
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 https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern sudo rpm --import RPM-GPG-KEY-cern sudo wget -O /etc/yum.repos.d/slc5-devtoolset.repo https://linux.web.cern.ch/linux/scientific5/docs/repository/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 https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo https://linux.web.cern.ch/linux/scientific6/docs/repository/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.12.34.2-stable cd wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}.zip unzip v${NPS_VERSION}.zip cd ngx_pagespeed-${NPS_VERSION}/ 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 ${psol_url} tar -xzvf $(basename ${psol_url}) # extracts to psol/
Download and build nginx with support for pagespeed:
NGINX_VERSION=[check nginx's site for the latest version] cd wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz tar -xvzf nginx-${NGINX_VERSION}.tar.gz cd nginx-${NGINX_VERSION}/ ./configure --add-module=$HOME/ngx_pagespeed-${NPS_VERSION} ${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.