#!/bin/bash ############################################################################################## ## Install Nginx with OpenSSL, and ngx_pagespeed ## ## Author: Andrew Maxwell ## 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.github.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!"