-
-
Save AJMaxwell/f6793605068813aae888216b02364d85 to your computer and use it in GitHub Desktop.
#!/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!" |
@elephantux Are you on Ubuntu 14.04? If you're running 16.04, checkout @arvin-foroutan's 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
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!
Can't understand...
sudo service nginx start
return nothing and service don't start
How to start/stop/restart nginx?