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
- Ubuntu or Debian
-
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
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:
NPS_VERSION=[check the release notes for the latest version] cd wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}-beta.zip unzip v${NPS_VERSION}-beta.zip cd ngx_pagespeed-${NPS_VERSION}-beta/ psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.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}-beta ${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.
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}-beta
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.