Nginx源码编译./configure指定pcre、zlib、openssl

基本库介绍

nginx使用时需要pcrezlibopenssl的支持

pcre:(Perl Compatible Regular Expressions) 是一个用 C 语言编写的正则表达式库,用于进行文本匹配和搜索。nginxhttp模块使用pcre来解析正则表达式
zlib: 是一个数据压缩库,用于在应用程序中进行数据的压缩和解压缩。nginx使用zlibhttp包的内容进行gzip
openssl: 是一个加密与安全库,提供了许多加密算法、安全通信协议和工具,用于数据的加密、解密、签名、验证等安全操作。它经常被用于构建安全的网络通信、SSL/TLS 连接以及数字证书管理等。nginx不仅支持http协议,还支持https

另一文章中有各资源的官方网站nginx及依赖模块资源,供大家参考

基本编译安装

# pcre
yum install -y pcre pcre-devel
# zlib
yum install -y zlib zlib-devel
# openssl
yum install -y openssl openssl-devel

环境准备好后就可以进行nginx的编译,./configure时会自动在系统环境中找到依赖库

以上是最基本的编译安装方式,如果对版本有要求的话,以上方法就不太友好

下载源码安装

在官网下载各资源的最新版本,在写这篇文章时的最新版本分别是nginx-1.26.2.tar.gzopenssl-3.4.0.tar.gzpcre2-10.44.tar.gzzlib-1.3.1.tar.gz

可以将opensslpcre2zlib解压后分别进行编译安装,然后再编译nginx,但那样可能修改编译机器的环境,而且编译出来的nginx进程会依赖.so动态库,如果在不同机器上使用,因为依赖库版本不同可能会出现问题,建议采用静态链接的方式

tar -xvf openssl-3.4.0.tar.gz
tar -xvf pcre2-10.44.tar.gz
tar -xvf zlib-1.3.1.tar.gz
tar -xvf nginx-1.26.2.tar.gz

./configure --help可以查看可配置参数

./configure --prefix=/usr/local/nginx \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre=../pcre2-10.44 \
--with-zlib=../zlib-1.3.1 \
--with-openssl=../openssl-3.4.0

make && make install

后面跟的是源码的路径,可以是相对路径,也可以是绝对路径,能找到就行,找不到的话./configure会报错,根据报错内容修改即可

通过这种方式编译的nginx不再依赖这三者的动态库,是静态链接的方式,也就是说nginx可以直接拿到其他机器上使用,不需要外部的动态链接库,可以用readelf -d nginx查看,下面贴上我用两种不同方式编译出来的nginx进程,可以看到少了这三个依赖库

在这里插入图片描述
在这里插入图片描述

其他问题

这里在编译openssl的时候还有一个特殊问题,在这里记录一下

mips64架构上编译openssl时,执行./config时有以下警告,如果不加参数,在make的时候出现“fatal error: sys/cdefs.h: 没有那个文件或目录”的错误

WARNING! To build 64-bit package, do this:
         ./Configure linux64-mips64
You have about five seconds to abort: 

有这样的问题时,在nginx./configure时需要加上参数--with-openssl-opt=linux64-mips64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值