Last active
September 12, 2021 20:57
-
-
Save AJMaxwell/f6793605068813aae888216b02364d85 to your computer and use it in GitHub Desktop.
Install Nginx, OpenSSL, and ngx_pagespeed from source on Ubuntu 14.04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
############################################################################################## | |
## Install Nginx with OpenSSL, and ngx_pagespeed | |
## | |
## Author: Andrew Maxwell <[email protected]> | |
## Date: 2017/09/18 | |
## Version: 0.3 | |
## | |
## Disclaimer: I am not responsible for how you use this script. Do not assume this script | |
## will work in all envrionments or any Ubuntu version other than 14.04. This script assumes | |
## you have had a version of nginx already installed from Ubuntu PPAs and that it has been | |
## removed via `sudo apt-get remove nginx nginx-common` | |
## | |
############################################################################################## | |
# Versions of nginx, openssl, and ngx_pagespeed you want to install | |
NGINX_VERSION=1.12.1 | |
OPENSSL_VERSION=1.0.2l | |
NPS_VERSION=1.12.34.2-stable | |
## Get currently installed version of openssl | |
OPENSSL_CURRENT_VERSION=$(openssl version | awk '{ print $2 }') | |
# Customize the general nginx flags | |
NGINX_FLAGS="--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 --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_realip_module --with-http_geoip_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-file-aio --with-pcre --with-ipv6 --with-http_v2_module --with-image_filter_module" | |
# Customize the openssl nginx flags | |
OPENSSL_FLAGS="--with-openssl=/usr/local/src/openssl-${OPENSSL_VERSION}" | |
# Customize the ngx_pagespeed nginx flags | |
NPS_FLAGS="--add-module=/usr/local/src/ngx_pagespeed-${NPS_VERSION}" | |
# Customize various 'security' related nginx flags | |
SECURITY_FLAGS="--without-http_ssi_module --without-http_scgi_module --without-http_uwsgi_module --without-http_autoindex_module" | |
############################################################################################## | |
########## STOP EDITING | |
############################################################################################## | |
NGINX_CONFIG="${NGINX_FLAGS} ${OPENSSL_FLAGS} ${NPS_FLAGS} ${SECURITY_FLAGS} --with-cc-opt='-g' --with-ld-opt='-Wl,-Bsymbolic-functions'" | |
# Install dependencies | |
sudo apt-get update | |
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev | |
# Ensure /usr/local/src is writeable by current user, then enter that directory | |
sudo chmod +w /usr/local/src | |
cd /usr/local/src | |
## Download sources | |
# Download nginx | |
wget https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz -O nginx-${NGINX_VERSION}.tar.gz | |
# Download openssl | |
wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -O openssl-${OPENSSL_VERSION}.tar.gz | |
# Download ngx_pagespeed | |
wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}.tar.gz -O v${NPS_VERSION}.tar.gz | |
## Extract sources | |
tar -xvzf nginx-${NGINX_VERSION}.tar.gz | |
tar -xvzf openssl-${OPENSSL_VERSION}.tar.gz | |
tar -xvzf v${NPS_VERSION}.tar.gz | |
## Download and Extract PSOL (PageSpeed Optimization Library) | |
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/formate_binary_url.sh PSOL_BINARY_URL) | |
wget ${PSOL_URL} | |
tar -xvzf $(basename ${PSOL_URL}) | |
## Install openssl\ | |
cd ../openssl-${OPENSSL_VERSION} | |
./config | |
make depend | |
make | |
make test | |
# Move old OpenSSL files if they exist | |
sudo mv /usr/bin/openssl /usr/bin/openssl_${OPENSSL_CURRENT_VERSION} | |
# If you prefer to install straight from source | |
#sudo make install | |
# If you prefer to create a .deb file and use your package manager | |
sudo checkinstall | |
sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl | |
## Install nginx + modules | |
cd ../nginx-${NGINX_VERSION} | |
# PageSpeed Cache | |
sudo mkdir -p /var/cache/pagespeed | |
# nginx cache | |
sudo mkdir -p /var/cache/nginx/{client_temp,fastcgi_temp,proxy_temp} | |
# nginx logs | |
sudo mkdir -p /var/log/nginx | |
sudo touch /var/log/nginx/{error,access}.log | |
./configure ${NGINX_CONFIG} | |
make | |
# If you prefer to install straight from source | |
#sudo make install | |
# If you prefer to create a .deb file and use your package manager | |
sudo checkinstall | |
#cd .. | |
# Download nginx startup script and make executable | |
sudo wget https://gist.githubusercontent.com/AJMaxwell/2c06c3704fac46d14939419c8ad1807e/raw/f8818e55b28ff8fa12531d7d7220c5c48de9eba3/nginx -O /etc/init.d/nginx | |
sudo chmod +x /etc/init.d/nginx | |
# Add nginx to system startup | |
sudo /usr/sbin/update-rc.d -f nginx defaults | |
echo "Installation Complete!" |
pagespeed download file changed its name to incubator-pagespeed-ngx-1.12.34.2-beta. But I still get errors:
ngx_pagespeed: pagespeed optimization library not found:
./configure: 31: /root/ngx_pagespeed-1.12.34.2-beta/config: [[: not found
You need to separately download the pagespeed library:
$ cd /root/ngx_pagespeed-1.12.34.2-beta
$ wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
$ tar -xzvf 1.12.34.2-x64.tar.gz # expands to psol/
Or see the installation instructions:
https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source
make: *** No rule to make target 'build', needed by 'default'. Stop.
make: *** No rule to make target 'install'. Stop.
Installation Complete!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
./configure: error: no /root/ngx_pagespeed-1.12.34.2-beta/config was found
make: *** No rule to make target 'build', needed by 'default'. Stop.
make: *** No rule to make target 'install'. Stop.
Installation Complete!
I tried to run this script in ubuntu:xenial container