summaryrefslogtreecommitdiff
path: root/Makefile
blob: 51920bc2bc205d80d4241c2064af3cb4d4e48c58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
NGX_PAGESPEED_VERSION=1.9.32.3
NGX_VERSION=1.6.2
BUILD_DIR=nginx-$(NGX_VERSION)

all: fetch build

fetch: fetch_core pagespeed fetch_dep

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/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 \
	--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  \
	--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=./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 build-essential
	dpkg -l | grep zlib1g-dev || apt-get install zlib1g-dev
	dpkg -l | grep -E '^libpcre3$$' || apt-get install libpcre3
	dpkg -l | grep -E '^libpcre3-dev$$' || apt-get install libpcre3-dev
	dpkg -l | grep liblua5.1-0-dev || apt-get install liblua5.1-0-dev
	dpkg -l | grep libossp-uuid-dev || apt-get install libossp-uuid-dev
	dpkg -l | grep uuid-dev || apt-get install uuid-dev
	dpkg -l | grep libgoogle-perftools-dev || apt-get install libgoogle-perftools-dev
	dpkg -l | grep libssl-dev || apt-get install libssl-dev

pagespeed:
	@(test -d $(BUILD_DIR)/ngx_pagespeed && cd $(BUILD_DIR)/ngx_pagespeed && \
	echo "Downloading pagespeed library." && \
	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."