NGX_PAGESPEED_VERSION=1.9.32.10 NGX_VERSION=1.8.0 BUILD_DIR=nginx-$(NGX_VERSION) all: fetch build fetch: fetch_core fetch_dep pagespeed fetch_core: # Downloading source test -f nginx-$(NGX_VERSION).tar.gz || wget http://nginx.org/download/nginx-$(NGX_VERSION).tar.gz # Downloading signature test -f nginx-$(NGX_VERSION).tar.gz.asc || wget http://nginx.org/download/nginx-$(NGX_VERSION).tar.gz.asc # Getting public key gpg --keyserver keyserver.ubuntu.com --recv-keys A1C052F8 # Verifying archiv gpg --verify nginx-$(NGX_VERSION).tar.gz.asc nginx-$(NGX_VERSION).tar.gz mkdir -p $(BUILD_DIR) tar xzf nginx-$(NGX_VERSION).tar.gz fetch_dep: cd $(BUILD_DIR) && git clone https://github.com/agentzh/headers-more-nginx-module.git cd $(BUILD_DIR) && git clone https://github.com/nbs-system/naxsi.git cd $(BUILD_DIR) && git clone https://github.com/FRiCKLE/ngx_cache_purge.git cd $(BUILD_DIR) && git clone https://github.com/simpl/ngx_devel_kit.git cd $(BUILD_DIR) && git clone https://github.com/agentzh/echo-nginx-module.git cd $(BUILD_DIR) && git clone https://github.com/chaoslawful/lua-nginx-module.git cd $(BUILD_DIR) && git clone https://github.com/wandenberg/nginx-push-stream-module.git cd $(BUILD_DIR) && git clone https://github.com/arut/nginx-rtmp-module.git cd $(BUILD_DIR) && git clone https://github.com/masterzen/nginx-upload-progress-module.git cd $(BUILD_DIR) && git clone https://github.com/gnosek/nginx-upstream-fair.git cd $(BUILD_DIR) && git clone https://github.com/aperezdc/ngx-fancyindex.git cd $(BUILD_DIR) && git clone https://github.com/tony2001/ngx_http_pinba_module.git cd $(BUILD_DIR) && git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git cd $(BUILD_DIR) && git clone https://github.com/pagespeed/ngx_pagespeed.git cd $(BUILD_DIR) && git clone https://github.com/alibaba/nginx-http-concat/ cd $(BUILD_DIR) && git clone https://github.com/zebrafishlabs/nginx-statsd cd $(BUILD_DIR) && git clone https://github.com/newobj/nginx-x-rid-header cd $(BUILD_DIR) && git clone https://github.com/openresty/set-misc-nginx-module cd $(BUILD_DIR) && git clone https://github.com/openresty/redis2-nginx-module mkdir $(BUILD_DIR)/nginx-syslog && wget -O $(BUILD_DIR)/nginx-syslog/config https://raw.githubusercontent.com/gplessis/dotdeb-nginx/wheezy/debian/modules/nginx-syslog/config build: cd $(BUILD_DIR) && ./configure \ --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2' \ --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' \ --lock-path=/var/lock/nginx.lock \ --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 \ --prefix=/etc/nginx \ --sbin-path=/usr/sbin \ --conf-path=/etc/nginx/nginx.conf \ --pid-path=/var/run/nginx.pid \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --user=www-data \ --group=www-data \ --with-ipv6 \ --with-pcre-jit \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_realip_module \ --with-http_auth_request_module \ --with-http_gzip_static_module \ --with-http_mp4_module \ --with-http_flv_module \ --with-http_secure_link_module \ --with-http_spdy_module \ --with-http_sub_module \ --with-http_addition_module \ --with-google_perftools_module \ --with-http_gunzip_module \ --with-http_random_index_module \ --with-http_geoip_module \ --add-module=headers-more-nginx-module \ --add-module=naxsi/naxsi_src \ --add-module=ngx_cache_purge \ --add-module=ngx_devel_kit \ --add-module=echo-nginx-module \ --add-module=lua-nginx-module \ --add-module=nginx-push-stream-module \ --add-module=nginx-rtmp-module \ --add-module=nginx-syslog \ --add-module=nginx-upload-progress-module \ --add-module=nginx-upstream-fair \ --add-module=ngx-fancyindex \ --add-module=ngx_http_pinba_module \ --add-module=ngx_http_substitutions_filter_module \ --add-module=./ngx_pagespeed \ --add-module=./nginx-http-concat \ --with-cc-opt=-I/usr/include/ossp \ --with-ld-opt=-lossp-uuid \ --add-module=./nginx-x-rid-header \ --add-module=./set-misc-nginx-module \ --add-module=./redis2-nginx-module \ --add-module=./nginx-statsd $(NGX_CONFIGURE) cd $(BUILD_DIR)/ && \ bash -c "make -j $$(grep -c processor /proc/cpuinfo)" install: cd $(BUILD_DIR)/ && make install clean: rm nginx-$(NGX_VERSION).tar.gz rm nginx-$(NGX_VERSION).tar.gz.asc prepare: @(lsb_release -a | grep Debian || ! test -z $(DEBIAN)) || (echo "You don't run Debian, do you? This section is optimized for the Debian GNU/Linux distro.\nOverwrite it with 'DEBIAN=1 make prepare'.\n" && exit 1) dpkg -l | grep build-essential || apt-get install -y build-essential dpkg -l | grep zlib1g-dev || apt-get install -y zlib1g-dev dpkg -l | grep -E '^libpcre3$$' || apt-get install -y libpcre3 dpkg -l | grep -E '^libpcre3-dev$$' || apt-get install -y libpcre3-dev dpkg -l | grep liblua5.1-0-dev || apt-get install -y liblua5.1-0-dev dpkg -l | grep libossp-uuid-dev || apt-get install -y libossp-uuid-dev dpkg -l | grep uuid-dev || apt-get install -y uuid-dev dpkg -l | grep libgoogle-perftools-dev || apt-get install -y libgoogle-perftools-dev dpkg -l | grep libssl-dev || apt-get install -y libssl-dev dpkg -l | grep libgeoip-dev || apt-get install -y libgeoip-dev pagespeed: @(test -d $(BUILD_DIR)/ngx_pagespeed && cd $(BUILD_DIR)/ngx_pagespeed && \ echo "Downloading pagespeed library." && \ # Documentation recommends now to download from Github: # https://github.com/pagespeed/ngx_pagespeed/archive/release-${NGX_PAGESPEED_VERSION}-beta.zip wget https://dl.google.com/dl/page-speed/psol/$(NGX_PAGESPEED_VERSION).tar.gz && \ tar -xzvf $(NGX_PAGESPEED_VERSION).tar.gz) || \ echo "You need to run 'make fetch_dep' first to download ngx_pagespeed." help: @echo "This is a Makefile to automatize compiling nginx from source.\n" @echo "Run 'make fetch' to fetch the core and addons." @echo "Run 'make build' to configure and compile nginx. If you want to pass options to ./configure you can do this with 'NGX_CONFIGURE=options... make build' on the commmand line." @echo "'make install' will install it system wide (needs root privileges)." @echo "If you are on GNU/Debian, you can run 'make prepare' to install some needed libraries."