Shaoqun Liu's blog
搜索文档…
编译安装Nginx

0x00 前言

之前的服务器一直使用的lnmp自动化安装脚本来安装nginx, php-fpm等服务器环境,lnmp脚本有个缺点就是你可以一次性安装nginx, php-fpm, MySQL,但是你不能去分别安装这些服务,而且nginx貌似还不能自己加模块的样子。所以,喜欢瞎折腾的我边学边试了一把自己编译安装这些环境,记录一下,以便备忘。

0x01 编译安装Nginx

安装所必需的依赖:

1
apt-get update && apt-get upgrade # 更新源和升级软件
2
apt-get install gcc g++ make openssl libssl-dev libpcre3-dev # 安装必需的依赖
Copied!

下载Nginx及ngx_cache_purge缓存模块(非必需):

1
cd ~ # 切换目录
2
# 下载并解压nginx-1.10.3
3
wget http://nginx.org/download/nginx-1.10.3.tar.gz
4
tar zxvf nginx-1.10.3.tar.gz
5
cd nginx-1.10.3
6
# 下载并解压ngx_cache_purge(非必需)
7
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
8
tar zxvf ngx_cache_purge-2.3.tar.gz
9
cd ..
Copied!

添加Nginx运行时所使用的用户和用户组(如果你想使用现有的用户,此步可忽略):

1
groupadd -f www
2
useradd -g www www
Copied!

检查配置:

1
./configure \
2
--user=www \
3
--group=www \
4
--prefix=/usr/local/nginx \
5
--pid-path=/var/run/nginx.pid \
6
--lock-path=/var/lock/nginx.lock \
7
--with-http_stub_status_module \
8
--with-http_ssl_module \
9
--with-http_gzip_static_module \
10
--with-http_v2_module \
11
--with-http_sub_module \
12
--add-module=ngx_cache_purge-2.3
Copied!
如果它提示缺少什么模块的话,那就可以使用如下命令解决
1
apt-get install lib缺少的模块名-dev # 例如libssl-dev
Copied!

编译安装:

检查配置无误之后就可以编译安装了
1
make && make install
Copied!

添加服务

添加服务之后,我们就可以方便地使用service来进行重启,关闭等操作了
执行命令:
1
vi /etc/init.d/nginx
Copied!
然后填写以下内容:
1
#! /bin/sh
2
3
### BEGIN INIT INFO
4
# Provides: nginx
5
# Required-Start: $local_fs $remote_fs $network $syslog
6
# Required-Stop: $local_fs $remote_fs $network $syslog
7
# Default-Start: 2 3 4 5
8
# Default-Stop: 0 1 6
9
# Short-Description: starts the nginx web server
10
# Description: starts nginx using start-stop-daemon
11
### END INIT INFO
12
13
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
14
DAEMON=/usr/local/nginx/sbin/nginx
15
NAME=nginx
16
DESC=nginx
17
18
DAEMON_OPTS=''
19
20
test -x $DAEMON || exit 0
21
22
# Include nginx defaults if available
23
#if [ -f /etc/default/nginx ] ; then
24
# . /etc/default/nginx
25
#fi
26
27
set -e
28
29
. /lib/lsb/init-functions
30
31
#test_nginx_config() {
32
# if $DAEMON -t $DAEMON_OPTS
33
# then
34
# return 0
35
# else
36
# return $?
37
# fi
38
#}
39
40
case "$1" in
41
start)
42
echo -n "Starting $DESC: "
43
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
44
--exec $DAEMON || true
45
echo "$NAME."
46
;;
47
stop)
48
echo -n "Stopping $DESC: "
49
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
50
--exec $DAEMON || true
51
echo "$NAME."
52
;;
53
restart|force-reload)
54
echo -n "Restarting $DESC: "
55
start-stop-daemon --stop --quiet --pidfile \
56
/var/run/$NAME.pid --exec $DAEMON || true
57
sleep 1
58
start-stop-daemon --start --quiet --pidfile \
59
/var/run/$NAME.pid --exec $DAEMON || true
60
echo "$NAME."
61
;;
62
reload)
63
echo -n "Reloading $DESC configuration: "
64
start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
65
--exec $DAEMON || true
66
echo "$NAME."
67
;;
68
status)
69
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
70
;;
71
*)
72
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status}" >&2
73
exit 1
74
;;
75
esac
76
77
exit 0
Copied!

添加权限

1
chmod +x /etc/init.d/nginx
2
update-rc.d nginx defaults
Copied!
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

添加软连接

1
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
Copied!
添加了软连接之后,我们就可以在shell中直接使用nginx命令了

0x02 参考资料