Nginx 编译

Posted by Sunday on 2017-12-25

1. 安装依赖

1
2
3
4
5
#ubuntu
apt-get install gcc g++ make libtool openssl libssl-dev libpcre3 libpcre3-dev libgd-dev

#centos
yum install gcc make openssl-devel pcre-devel gd-devel

2. jemalloc 安装

http://www.sundayle.com/2017/12/25/jemalloc/

3. nginx编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
./configure --prefix=/usr/local/webserver/nginx --with-file-aio --with-poll_module --with-http_realip_module \
--with-http_image_filter_module --with-http_gzip_static_module --with-http_addition_module \
--with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_slice_module \
--with-http_mp4_module --with-http_random_index_module --with-http_secure_link_module \
--with-http_degradation_module --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module \
--with-ld-opt=/usr/local/webserver/jemalloc/lib/libjemalloc.so.2 \
--add-module=/usr/local/src/nginx_module/ngx_cache_purge-2.3 \
--add-module=/usr/local/src/nginx_module/ngx_slowfs_cache-1.10 \
--add-module=/usr/local/src/nginx_module/nginx-rtmp-module-master \
--add-module=/usr/local/src/nginx_module/nginx_upstream_check_module-master \
--add-module=/usr/local/src/nginx_module/echo-nginx-module-master \
--add-dynamic-module=/usr/local/src/nginx_module/nginx-upload-module

make -j 10 && make install
vim /etc/profile.d/nginx.sh
export PATH=/usr/local/webserver/nginx/sbin:$PATH

4. 启动脚本

http://kbeezie.com/debian-ubuntu-nginx-init-script/
vim /etc/init.d/nginx

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
#! /bin/sh

### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/webserver/nginx/sbin/nginx
NAME=nginx
DESC=nginx
PIDFILE=/usr/local/webserver/nginx/logs/nginx.pid

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi

set -e

case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile $PIDFILE \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
$PIDFILE --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile \
$PIDFILE --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE \
--exec $DAEMON
echo "$NAME."
;;
status)
if [ -f $PIDFILE ] ; then
echo -n "$DESC running..\n"
else
echo -n "$DESC stopped..\n"
fi
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|status}" >&2
exit 1
;;
esac

exit 0

5. 配置开机启动

1
2
3
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults
update-rc.nginx enable

6. 启动nginx

1
/etc/init.d/nginx start

ngx_http_upload_module.c:14:17: fatal error: md5.h: No such file or directory
/usr/local/src/nginx_module/nginx-upload-module/ngx_http_upload.h:11:17: fatal error: md5.h: No such file or directory

https://github.com/Austinb/nginx-upload-module
https://github.com/vkholodkov/nginx-upload-module/pull/77

wget https://github.com/Austinb/nginx-upload-module/archive/2.2.zip
unzip 2.2.zip
mv nginx-upload-module-2.2 nginx-upload-module

./configure –add-dynamic-module=/usr/local/src/nginx_module/nginx-upload-module