第五章 安装最新版 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.0c
,nginx-1.11.5
,zlib-1.2.8
,pcre-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