Created
December 8, 2014 17:49
-
-
Save yellowcrescent/346837448e6e49608cf1 to your computer and use it in GitHub Desktop.
nginx build script
This file contains 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 | |
# | |
# Nginx build script - jacob@ycnrg.org | |
# | |
# Updates code from git/hg repos (or clones if it doesn't exist) for both | |
# nginx and extra modules, then fires off make | |
# | |
# Revision: 3 | |
# | |
PREFIX="/usr" | |
SRCBASE="/opt/src" | |
NGXBASE="/opt/src/nginx" | |
NGX_BUILD_ID=`hostname`_`date +%Y%m%d` | |
NGX_CACHE_PURGE="/opt/src/ngx_cache_purge" | |
NGX_RTMP="/opt/src/nginx-rtmp-module" | |
NGX_PAGESPEED="/opt/src/ngx_pagespeed" | |
PSOL_URL="https://dl.google.com/dl/page-speed/psol/1.9.32.2.tar.gz" | |
NGX_RDNS="/opt/src/nginx-http-rdns" | |
MJAY="-j`nproc`" | |
echo "** Preparing to build nginx ${NGX_BUILD_ID} **" | |
# Update nginx & module friends (or clone their repo if they don't exist) | |
cd $SRCBASE | |
echo "Updating nginx..." | |
if [ -d $NGXBASE ]; then | |
hg -R $NGXBASE pull | |
else | |
hg clone http://hg.nginx.org/nginx | |
fi | |
echo "Updating module [ngx_cache_purge]..." | |
if [ -d $NGX_CACHE_PURGE ]; then | |
git -C $NGX_CACHE_PURGE pull origin master | |
else | |
git clone https://github.com/FRiCKLE/ngx_cache_purge.git | |
fi | |
echo "Updating module [ngx-rtmp-module]..." | |
if [ -d $NGX_RTMP ]; then | |
git -C $NGX_RTMP pull origin master | |
else | |
git clone https://github.com/arut/nginx-rtmp-module.git | |
fi | |
echo "Updating module [ngx_pagespeed]..." | |
if [ -d $NGX_PAGESPEED ]; then | |
git -C $NGX_PAGESPEED pull origin master | |
else | |
git clone https://github.com/pagespeed/ngx_pagespeed.git | |
fi | |
echo -en "Checking for psol (Google PageSpeed lib) dependency... " | |
if [ -d $NGX_PAGESPEED/psol ]; then | |
echo "Okay, got it!" | |
else | |
echo "Missing. Downloading psol module.." | |
cd $NGX_PAGESPEED | |
wget "${PSOL_URL}" | |
echo "Unpacking psol..." | |
tar -xvf 1.9.32.2.tar.gz | |
fi | |
echo "Updating module [ngx_cache_purge]..." | |
if [ -d $NGX_RDNS ]; then | |
git -C $NGX_RDNS pull origin master | |
else | |
git clone https://github.com/flant/nginx-http-rdns.git | |
fi | |
# change to dir and do a `make clean` to get rid of the stale objs | |
# then run configure with our build args | |
cd $NGXBASE | |
if [ -f Makefile ]; then | |
make clean | |
fi | |
if [ ! -f configure ]; then | |
ln -s auto/configure | |
fi | |
./configure \ | |
--build=$NGX_BUILD_ID \ | |
--prefix=$PREFIX \ | |
--conf-path=/etc/nginx/nginx.conf \ | |
--http-log-path=/var/log/nginx/access.log \ | |
--error-log-path=/var/log/nginx/error.log \ | |
--lock-path=/var/lock/nginx.lock \ | |
--pid-path=/run/nginx.pid \ | |
--http-client-body-temp-path=/var/lib/nginx/body \ | |
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ | |
--http-proxy-temp-path=/var/lib/nginx/proxy \ | |
--http-scgi-temp-path=/var/lib/nginx/scgi \ | |
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ | |
--with-pcre-jit \ | |
--with-ipv6 \ | |
--with-http_ssl_module \ | |
--with-http_stub_status_module \ | |
--with-http_realip_module \ | |
--with-http_addition_module \ | |
--with-http_dav_module \ | |
--with-http_geoip_module \ | |
--with-http_gzip_static_module \ | |
--with-http_image_filter_module \ | |
--with-http_spdy_module \ | |
--with-http_sub_module \ | |
--with-http_xslt_module \ | |
--with-mail \ | |
--with-mail_ssl_module \ | |
--with-http_mp4_module \ | |
--with-http_flv_module \ | |
--with-http_auth_request_module \ | |
--with-http_random_index_module \ | |
--with-http_secure_link_module \ | |
--add-module=$NGX_CACHE_PURGE \ | |
--add-module=$NGX_RTMP \ | |
--add-module=$NGX_PAGESPEED \ | |
--add-module=$NGX_RDNS \ | |
--with-debug | |
echo "Detected `nproc` cores, running build with $MJAY" | |
make $MJAY && echo "Build complete! Type 'cd $NGXBASE && sudo make install' to complete the installation." || echo "Build failed." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment