Skip to content

Instantly share code, notes, and snippets.

@indomex
Forked from AJMaxwell/nginx-openssl_build.sh
Created October 18, 2018 00:19
Show Gist options
  • Save indomex/aedc2c197ff79817eeae4e3e6ac037f6 to your computer and use it in GitHub Desktop.
Save indomex/aedc2c197ff79817eeae4e3e6ac037f6 to your computer and use it in GitHub Desktop.

Revisions

  1. @AJMaxwell AJMaxwell revised this gist Sep 21, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions nginx-openssl_build.sh
    Original file line number Diff line number Diff line change
    @@ -38,7 +38,7 @@ SECURITY_FLAGS="--without-http_ssi_module --without-http_scgi_module --without-h
    ########## STOP EDITING
    ##############################################################################################

    NGINX_FLAGS="${NGINX_FLAGS} ${OPENSSL_FLAGS} ${NPS_FLAGS} ${SECURITY_FLAGS} --with-cc-opt='-g' --with-ld-opt='-Wl,-Bsymbolic-functions'"
    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
    @@ -98,7 +98,7 @@ 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_FLAGS}
    ./configure ${NGINX_CONFIG}
    make
    # If you prefer to install straight from source
    #sudo make install
  2. @AJMaxwell AJMaxwell revised this gist Sep 18, 2017. 1 changed file with 77 additions and 47 deletions.
    124 changes: 77 additions & 47 deletions nginx-openssl_build.sh
    Original file line number Diff line number Diff line change
    @@ -1,86 +1,116 @@
    #!/bin/sh
    #!/bin/bash

    ##############################################################################################
    ## Install Nginx with OpenSSL and ngx_pagespeed
    ## Author: Andrew Maxwell <[email protected]>
    ## Date: 2016/05/27
    ## Version: 0.1
    ## 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`
    ##
    ## ngx_pagespeed code adapted from:
    ## https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source
    ## openssl code adapted from:
    ## https://www.digitalocean.com/community/questions/how-to-get-already-installed-nginx-to-use-openssl-1-0-2-for-alpn#answer_27588
    ##############################################################################################

    # Current version of nginx, openssl, and ngx_pagespeed you want to install
    NGINX_VERSION=1.11.0
    OPENSSL_VERSION=1.0.2h
    NPS_VERSION=1.11.33.2
    # 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
    ##############################################################################################

    ## Currently installed version of openssl
    OPENSSL_CURRENT_VERSION=$(openssl version | awk '{ print $2 }')
    ## Nginx ./configure flags
    # Automagically grab current Nginx flags
    #NGINX_USER_FLAGS="$(nginx -V 2>&1 | tail -1| tr ' ' '\n' | tail -n +3)"
    # Or use default Nginx flags
    NGINX_USER_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 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module"
    OPENSSL_FLAGS="--with-openssl=$HOME/openssl-$OPENSSL_VERSION"
    NPS_FLAGS="--add-module=$HOME/ngx_pagespeed-release-$NPS_VERSION-beta"
    NGINX_FLAGS="$NGINX_USER_FLAGS $OPENSSL_FLAGS $NPS_FLAGS"

    # Ensure lib and build packages are installed
    NGINX_FLAGS="${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 unzip
    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

    ## Ensure we are in home directory
    cd $HOME

    ## Download sources
    # Download nginx
    wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
    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
    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/release-${NPS_VERSION}-beta.zip
    wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}.tar.gz -O v${NPS_VERSION}.tar.gz

    ## Extract sources
    # Extract nginx
    tar -xvzf nginx-${NGINX_VERSION}.tar.gz
    # Extract openssl
    tar -xvzf openssl-${OPENSSL_VERSION}.tar.gz
    # Extract ngx_pagespeed
    unzip release-${NPS_VERSION}-beta.zip
    tar -xvzf v${NPS_VERSION}.tar.gz


    ## Download and Extract PSOL (PageSpeed Optimization Library)
    cd ngx_pagespeed-release-${NPS_VERSION}-beta/
    wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
    tar -xzvf ${NPS_VERSION}.tar.gz # extracts to psol/
    cd $HOME
    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}/
    ## Install openssl\
    cd ../openssl-${OPENSSL_VERSION}
    ./config
    make depend
    make
    make test
    sudo make install
    # 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
    cd $HOME

    ## Install nginx + ngx_pagespeed
    cd nginx-${NGINX_VERSION}/


    ## 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_FLAGS}
    make
    sudo make install
    # 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!"
    echo "Installation Complete!"
  3. @AJMaxwell AJMaxwell revised this gist Jun 1, 2016. 1 changed file with 7 additions and 3 deletions.
    10 changes: 7 additions & 3 deletions nginx-openssl_build.sh
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,8 @@
    ##
    ## 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
    ## 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`
    ##
    ## ngx_pagespeed code adapted from:
    ## https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source
    @@ -28,7 +29,10 @@ NPS_VERSION=1.11.33.2
    ## Currently installed version of openssl
    OPENSSL_CURRENT_VERSION=$(openssl version | awk '{ print $2 }')
    ## Nginx ./configure flags
    NGINX_USER_FLAGS="$(nginx -V 2>&1 | tail -1| tr ' ' '\n' | tail -n +3)" # current flags
    # Automagically grab current Nginx flags
    #NGINX_USER_FLAGS="$(nginx -V 2>&1 | tail -1| tr ' ' '\n' | tail -n +3)"
    # Or use default Nginx flags
    NGINX_USER_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 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module"
    OPENSSL_FLAGS="--with-openssl=$HOME/openssl-$OPENSSL_VERSION"
    NPS_FLAGS="--add-module=$HOME/ngx_pagespeed-release-$NPS_VERSION-beta"
    NGINX_FLAGS="$NGINX_USER_FLAGS $OPENSSL_FLAGS $NPS_FLAGS"
    @@ -79,4 +83,4 @@ cd nginx-${NGINX_VERSION}/
    make
    sudo make install

    echo "Installation Complete!"
    echo "Installation Complete!"
  4. @AJMaxwell AJMaxwell revised this gist May 31, 2016. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions nginx-openssl_build.sh
    Original file line number Diff line number Diff line change
    @@ -8,8 +8,7 @@
    ##
    ## 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`
    ## you have had a version of nginx already installed from Ubuntu PPAs
    ##
    ## ngx_pagespeed code adapted from:
    ## https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source
  5. @AJMaxwell AJMaxwell created this gist May 27, 2016.
    83 changes: 83 additions & 0 deletions nginx-openssl_build.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,83 @@
    #!/bin/sh

    ##############################################################################################
    ## Install Nginx with OpenSSL and ngx_pagespeed
    ## Author: Andrew Maxwell <[email protected]>
    ## Date: 2016/05/27
    ## Version: 0.1
    ##
    ## 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`
    ##
    ## ngx_pagespeed code adapted from:
    ## https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source
    ## openssl code adapted from:
    ## https://www.digitalocean.com/community/questions/how-to-get-already-installed-nginx-to-use-openssl-1-0-2-for-alpn#answer_27588
    ##############################################################################################

    # Current version of nginx, openssl, and ngx_pagespeed you want to install
    NGINX_VERSION=1.11.0
    OPENSSL_VERSION=1.0.2h
    NPS_VERSION=1.11.33.2

    ##############################################################################################
    ########## STOP EDITING
    ##############################################################################################

    ## Currently installed version of openssl
    OPENSSL_CURRENT_VERSION=$(openssl version | awk '{ print $2 }')
    ## Nginx ./configure flags
    NGINX_USER_FLAGS="$(nginx -V 2>&1 | tail -1| tr ' ' '\n' | tail -n +3)" # current flags
    OPENSSL_FLAGS="--with-openssl=$HOME/openssl-$OPENSSL_VERSION"
    NPS_FLAGS="--add-module=$HOME/ngx_pagespeed-release-$NPS_VERSION-beta"
    NGINX_FLAGS="$NGINX_USER_FLAGS $OPENSSL_FLAGS $NPS_FLAGS"

    # Ensure lib and build packages are installed
    sudo apt-get update
    sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

    ## Ensure we are in home directory
    cd $HOME

    ## Download sources
    # Download nginx
    wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
    # Download openssl
    wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz
    # Download ngx_pagespeed
    wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip

    ## Extract sources
    # Extract nginx
    tar -xvzf nginx-${NGINX_VERSION}.tar.gz
    # Extract openssl
    tar -xvzf openssl-${OPENSSL_VERSION}.tar.gz
    # Extract ngx_pagespeed
    unzip release-${NPS_VERSION}-beta.zip

    ## Download and Extract PSOL (PageSpeed Optimization Library)
    cd ngx_pagespeed-release-${NPS_VERSION}-beta/
    wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
    tar -xzvf ${NPS_VERSION}.tar.gz # extracts to psol/
    cd $HOME

    ## Install openssl
    cd openssl-${OPENSSL_VERSION}/
    ./config
    make depend
    make
    make test
    sudo make install
    sudo mv /usr/bin/openssl /usr/bin/openssl_${OPENSSL_CURRENT_VERSION}
    sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
    cd $HOME

    ## Install nginx + ngx_pagespeed
    cd nginx-${NGINX_VERSION}/
    ./configure ${NGINX_FLAGS}
    make
    sudo make install

    echo "Installation Complete!"