centos7编译安装nginx1.17.6,带http2/brotli/zlib/pcre/ssl

一、版本与备用下载地址

  1. 系统版本:centos7.5
  2. nginx版本:1.17.6
  3. pcre版本:8.43
  4. openssl版本:1.1.1d
  5. zlib版本:1.2.11
  6. brotli

备用下载地址:nginx-1.17.6.tar.gz    pcre-8.43.tar.gz   openssl-1.1.1d.tar.gz   zlib-1.2.11.tar.gz

二、下载安装包

1、安装依赖环境

yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre* gd-* GeoIP* git

2、创建nginx运行用户

useradd -M -s /sbin/nologin nginx

3、下载pcre包并解压

wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
tar zxvf pcre-8.43.tar.gz -C /usr/local/src/

4、下载openssl包并解压

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar zxvf openssl-1.1.1d.tar.gz -C /usr/local/src/

5、下载zlib包并解压

wget http://zlib.net/zlib-1.2.11.tar.gz
tar zxvf zlib-1.2.11.tar.gz -C /usr/local/src/

6、下载brotli

cd /usr/local/
git clone --depth=1 https://github.com/google/ngx_brotli.git
cd ngx_brotli && git submodule update --init

7、下载nginx包并解压

wget http://nginx.org/download/nginx-1.17.6.tar.gz
tar zxvf nginx-1.17.6.tar.gz -C /usr/local/src/
cd /usr/local/src/nginx-1.17.6/

三、编译安装

1、编译

./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-ipv6  \
--with-http_dav_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_ssl_module \
--http-client-body-temp-path=/usr/local/nginx/client/ \
--http-proxy-temp-path=/usr/local/nginx/proxy/ \
--http-fastcgi-temp-path=/usr/local/nginx/fcgi/ \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
--http-scgi-temp-path=/usr/local/nginx/scgi \
--with-http_geoip_module \
--with-http_gzip_static_module \
--with-file-aio \
--with-http_image_filter_module \
--with-http_realip_module \
--with-pcre=/usr/local/src/pcre-8.43 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.1d \
--add-module=/usr/local/ngx_brotli \
--with-http_v2_module

make && make install

参数详解请点击下方展开/收缩

[collapse title=”说明文字”]

以下是参数详解,仅供参考

./configure --prefix=/usr/local/nginx      #安装目录(这里指向/usr/local/nginx,可更改)
--user=nginx   # 指定程序运行时的非特权用户
--group=nginx  # 指定程序运行时的非特权用户组
--with-ipv6    # 启用ipv6支持 
--with-http_dav_module          # 启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法),默认情况下为关闭,需编译开启
--with-http_stub_status_module  # 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
--with-http_addition_module     # 启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)
--with-http_sub_module  # 启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)
--with-http_flv_module  # 启用ngx_http_flv_module支持,为Flash Video(FLV)文件提供伪流服务器端支持
--with-http_mp4_module  # 启用ngx_http_mp4_module支持,启用对mp4类视频文件的支持
--with-http_ssl_module  # 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
 --http-client-body-temp-path=/usr/local/nginx/client/   # 设定http客户端请求临时文件路径
 --http-proxy-temp-path=/usr/local/nginx/proxy/ 	 # 设定http代理临时文件路径
 --http-fastcgi-temp-path=/usr/local/nginx/fcgi/ 	 # 设定http fastcgi临时文件路径	
 --http-uwsgi-temp-path=/usr/local/nginx/uwsgi		 # 设定http uwsgi临时文件路径
 --http-scgi-temp-path=/usr/local/nginx/scgi     	 # 设定http scgi临时文件路径
 --with-http_geoip_module    # 启用ngx_http_geoip_module支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_module变量)
 --with-http_gzip_static_module   # 启用ngx_http_gzip_static_module支持,支持在线实时压缩输出数据流。
 --with-file-aio     #启用file aio支持(一种APL文件传输格式)
 --with-http_image_filter_module   #启用ngx_http_image_filter_module支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
  --with-http_realip_module   #启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
  --with-pcre=/usr/local/src/pcre-8.43   # 指向pcre库文件目录
  --with-zlib=/usr/local/src/zlib-1.2.11  # 指向zlib库文件目录
  --with-openssl=/usr/local/src/openssl-1.1.1d  # 指向openssl安装目录
  --add-module=/usr/local/src/ngx_brotli   #指定外部模块路径,启用对外部模块的支持(这里启用的是google的压缩算法brotli)
  --with-http_v2_module   #启用ngx_http_v2_module支持

[/collapse]

2、配置环境变量

vim /etc/profile.d/nginx.sh
export PATH=$PATH:/usr/local/nginx/sbin #根据自己的安装目录进行调整

加载变量使立即生效,或重新连接服务器

source /etc/profile

四、配置启动脚本

1、配置启动脚本

vim /etc/init.d/nginx         #配置启动脚本文件

添加以下代码(PATH,DAEMON,CONFIGFILE,PIDFILE根据自己目录进行修改)

[collapse title=”说明文字”]

#! /bin/bash
#chkconfig: 2345 80 90
#description:nginx run

# nginx启动脚本
# @author	Devil
# @version	0.0.1
# @date		2017-05-29

PATH1=/usr/local/nginx/
DESC="nginx1"
NAME=nginx
DAEMON=$PATH1/sbin/$NAME
CONFIGFILE=$PATH1/conf/$NAME.conf
PIDFILE=$PATH1/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start()
{
	$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop()
{
	$DAEMON -s stop || echo -n "nginx not running"
}
do_reload()
{
	$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
	start)
		echo -n "Starting $DESC: $NAME"
		do_start
		echo "."
	;;
	stop)
		echo -n "Stopping $DESC: $NAME"
		do_stop
		echo "."
	;;
	reload|graceful)
		echo -n "Reloading $DESC configuration..."
		do_reload
		echo "."
	;;
	restart)
		echo -n "Restarting $DESC: $NAME"
		do_stop 
		sleep 1
		do_start
		echo "."
	;;
	*)
		echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
		exit 3
	;;
esac
exit 0

[/collapse]

2、添加执行权限

chmod +x /etc/init.d/nginx

3、设置开机自启动

chkconfig --add nginx
chkconfig nginx on

注意:实际启用gzip、http2、brotli、ssl还需修改nginx.conf,请查看下方简单示例。

或下载真实环境配置文件 nginx-conf.zip

使用帮助,1、将conf目录备份后删除nginx.conf ,2、解压nginx-conf.zip  3、修改配置后启动即可。

内部配置有PHP支持、SSL、gzip、http2、brotli。

简单示例:

http {
  ...
  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/javascript application/json application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  gzip_vary off;

  brotli on;
  brotli_types text/plain application/javascript application/json application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

  server {
    ...
    listen 443 ssl http2;

    ssl_certificate /usr/local/nginx/ssl/server.crt;
    ssl_certificate_key /usr/local/nginx/ssl/server.key;
    ssl_session_timeout  5m;
    ...
  }
  ...
}
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 抢沙发