Centos7源码安装Nginx1.20及直接二进制迁移部署


Centos7源码安装Nginx1.20

Centos7源码安装Nginx1.20


一、安装前准备

1.下载文件

yum install -y wget
wget http://nginx.org/download/nginx-1.20.0.tar.gz

2.安装依赖(gcc,gcc-c++)

yum install gcc gcc-c++

二、开始进行源码编绎安装

1.解压文件
##解压
tar -xvf nginx-1.20.0.tar.gz -C /usr/local
2.configure
cd /usr/local/nginx-1.20.0/
./configure --prefix=/usr/local/nginx  --with-stream --with-http_ssl_module --with-stream_ssl_preread_module --with-stream_ssl_module

##–with系列参数来支持增加模块,视情况增减,我这里加了四个,分别可以做tcp转发,ssl协议支持,正向代理域名获取等支持。
–with-stream 4层转发
–with-http_ssl_module ssl协议支持
–with-stream_ssl_preread_module
–with-stream_ssl_module
–with-http_stub_status_module 状态统计(可选)

以下说明摘自别处:
ngx_stream_ssl_preread_module模块:要在不解密的情况下拿到HTTPS流量访问的域名,
只有利用TLS/SSL握手的第一个Client Hello报文中的扩展地址SNI (Server Name Indication)来获取。
NGINX官方从1.11.5版本开始支持利用ngx_stream_ssl_preread_module模块来获得这个能力

3.PCRE安装

./configure: error: the HTTP rewrite module requires the PCRE library.
第二步编绎configure时报PCRE错误,提示需要安装PCRE

wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz
tar -xvf pcre-8.40.tar.gz -C /usr/local
cd /usr/local/pcre-8.40/
./configure
make
make install

4.其他依赖问题
  • ./configure: error: the HTTP gzip module requires the zlib library.
yum install -y zlib-devel
  • ./configure: error: SSL modules require the OpenSSL library.
yum -y install openssl openssl-devel
  • error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
###(ubuntu)
解决办法:
1. 下载并重新安装重新安装Openssl即可,下载网址:https://openssl-library.org/source/

2. 安装,参考此文:https://blog.csdn.net/u011436427/article/details/127859495

$ tar zxvf openssl-3.0.1.tar.gz
$ ./config

$ make

$ make install

$ ldconfig /usr/local/lib64/

$ openssl version
  • Can’t locate FindBin.pm in @INC (you may need to install the FindBin module) ubuntu
sudo apt-get install perl
sudo cpan install FindBin
  • No C compiler found, please specify one with the environment variable CC,
apt-get install gcc -y
  • make not found
apt-get install make -y
5.解决依赖问题后安装
cd /usr/local/nginx-1.20.0
./configure --prefix=/usr/local/nginx  --with-stream --with-http_ssl_module --with-stream_ssl_preread_module --with-stream_ssl_module
make
make install

三、安装完成使用

1.启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

可以看到启动成功
在这里插入图片描述

2.重载配置
/usr/local/nginx/sbin/nginx -s reload
3.停止服务
##快速关闭
/usr/local/nginx/sbin/nginx -s stop

##优雅的关闭
/usr/local/nginx/sbin/nginx -s quit
4.https支持

默认http是未开启的,需要生成ssl证书并加入nginx.conf配置

##建个目录存放ssl证书
mkdir /usr/local/nginx/ssl

##生成100年有效期的非安全https证书
openssl req -utf8 -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx.crt
执行命令后一路回车即可

##查看有效期
openssl x509 -in /usr/local/nginx/ssl/nginx.crt -noout -dates

nginx.conf中加入ssl配置,示例如:

nginx.conf


    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /usr/local/nginx/ssl/nginx.crt;
        ssl_certificate_key  /usr/local/nginx/ssl/nginx.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

		location  /  {
		        proxy_pass http://192.168.56.1:8080;
		        proxy_connect_timeout 1;
		        proxy_http_version 1.1;
		        proxy_send_timeout 30;
		        proxy_read_timeout 60;
		        proxy_set_header 		Host $host:$server_port;
		        proxy_redirect      off;
		        proxy_set_header    X-Real-IP        $remote_addr;
		        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
		}
        
    }

通过reload命令执行/usr/local/nginx/sbin/nginx -s reload,然后访问https://127.0.0.1:443测试

四、其他服务器可以迁移部署

因为前面三步骤已按源码编绎进行了安装,因此相当于有相应的二进制文件了,可以备份保留成安装包,在其他相同类型的centos7上直接部署,可节省很多源码安装花费的时间。

1.在源码安装的机器上执行备份,保留二进制文件
cd /usr/local/
tar -zcvf nginx_install.tar.gz nginx

在这里插入图片描述

2. 在其他相同类型的Centos7服务器上,可直接解压使用
##解压
tar -zxvf nginx_install.tar.gz -C /usr/local/

##启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

需要注意的是目录需要一样,即源码安装在/usr/local下,那么迁移后就放在/usr/local下.

如果一定需要迁移到其他目录去部署,则需要在启动时使用-p指定prefix前缀进行启动来改变默认的/usr/local/nginx目录,示例如下:

##解压
tar -zxvf nginx_install.tar.gz -C /home/testuser/

##启动
##通过-p在启动时指定运行时的默认目录
/home/testuser/nginx/sbin/nginx -p /home/testuser/nginx/ -c /home/testuser/nginx/conf/nginx.conf

至此,nginx的安装与使用完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值