第五章 安装最新版 Nginx

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/book/minicentos-handbook/05.compile-nginx/

本章编译安装 Nginx 服务器的 1.11.5 版本。

0. 初始化目录

1sudo -u webhost mkdir -p $NGINX_TEMP/client-body
2sudo -u webhost mkdir -p $NGINX_TEMP/proxy
3sudo -u webhost mkdir -p $NGINX_TEMP/fastcgi
4sudo -u webhost mkdir -p $NGINX_TEMP/scgi
5sudo -u webhost mkdir -p $NGINX_TEMP/uwsgi
6
7chmod -R 0775 $NGINX_TEMP

1. 下载源码和依赖包

本处使用 openssl-1.1.0cnginx-1.11.5zlib-1.2.8pcre-8.39。 请自行下载对应的 .tgz 文件,并放到 /mnt/temp 目录下。

2. 编译 ZLib

1cd /mnt/temp
2tar -zxvf zlib-1.2.8.tar.gz
3cd zlib-1.2.8
4./configure
5make -j 4
6make install

3. 编译 PCRE

1cd /mnt/temp
2tar -zxvf pcre-8.39.tar.gz
3cd pcre-8.39
4./configure --enable-utf8 --enable-jit --enable-unicode-properties
5make -j 4
6make install

3.5. 使用 Google Performance Tools 提升性能

http://download.savannah.gnu.org/releases/libunwind/ 下载最新版 libunwind (此处为 1.1)

1cd /mnt/temp
2tar -zxvf libunwind-1.1.tar.gz
3cd libunwind-1.1
4./configure
5make CFLAGS=-fPIC -j4
6make CFLAGS=-fPIC install

https://github.com/gperftools/gperftools/releases 下载最新版 gperftools (此处为 2.5)

1cd /mnt/temp
2tar -zxvf gperftools-2.5.tar.gz
3cd gperftools-2.5
4./configure
5make -j4
6make install

4. 编译 Nginx

此处使用 OpenSSL v1.1.x 版本,以便开启 HTTP 2.0。 但是不对它进行编译和安装,所以对系统的 openssl 没有影响。

 1cd /mnt/temp
 2tar -zxvf openssl-1.1.0c.tar.gz
 3tar -zxvf nginx-1.11.5.tar.gz
 4cd nginx-1.11.5
 5
 6./configure \
 7  --conf-path=$NGINX_CONFIG/nginx.conf \
 8  --with-http_ssl_module \
 9  --with-http_v2_module \
10  --with-http_realip_module \
11  --with-http_gunzip_module \
12  --with-http_gzip_static_module \
13  --with-http_stub_status_module \
14  --with-http_sub_module \
15  --with-http_dav_module \
16  --with-http_random_index_module \
17  --with-google_perftools_module \
18  --with-mail=dynamic \
19  --with-mail_ssl_module \
20  --with-stream=dynamic \
21  --with-stream_ssl_module \
22  --with-pcre=/mnt/temp/pcre-8.39 \
23  --with-openssl=/mnt/temp/openssl-1.1.0c \
24  --with-zlib=/mnt/temp/zlib-1.2.8 \
25  --pid-path=$MCOS_PIDS/nginx.pid \
26  --lock-path=$MCOS_LOCKS/nginx.lock \
27  --user=webhost \
28  --group=staff \
29  --http-log-path=$MCOS_LOG/access.log \
30  --error-log-path=$MCOS_LOG/error.log \
31  --http-client-body-temp-path=$NGINX_TEMP/client-body \
32  --http-proxy-temp-path=$NGINX_TEMP/proxy \
33  --http-fastcgi-temp-path=$NGINX_TEMP/fastcgi \
34  --http-scgi-temp-path=$NGINX_TEMP/scgi \
35  --http-uwsgi-temp-path=$NGINX_TEMP/uwsgi
36
37make -j 4
38make install
39
40ln -s /usr/local/nginx/sbin/nginx /usr/sbin

5. 配置 Nginx 为 Systemd 服务

创建文件 /usr/lib/systemd/system/nginx.service,内容如下:

 1Description=nginx - high performance web server
 2Documentation=http://nginx.org/en/docs/
 3After=network.target remote-fs.target nss-lookup.target
 4
 5[Service]
 6Type=forking
 7PIDFile=/www/pids/nginx.pid
 8ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /www/config/nginx/nginx.conf
 9ExecStart=/usr/local/nginx/sbin/nginx -c /www/config/nginx/nginx.conf
10ExecReload=/usr/local/nginx/sbin/nginx -s reload
11ExecStop=/usr/local/nginx/sbin/nginx -s stop
12PrivateTmp=true
13
14[Install]
15WantedBy=multi-user.target

保存,即可使用下面的命令控制 Nginx:

1systemctl start nginx
2systemctl reload nginx
3systemctl restart nginx
4systemctl stop nginx

如果提示 nginx.service 不存在,先执行下面的清除 Systemd 缓存:

1systemctl daemon-reload
comments powered by Disqus