编译nginx-1.23.0
  RumN13MdT8PI 2023年11月13日 36 0
  1. 源码文件:nginx-1.24.1.tar.gz
  2. 编译环境: CentOS 7.9
  3. CPU架构: x86
  4. Glibc版本: 2.17
  5. GCC版本:9.3.1

包下载地址: https://nginx.org/download/nginx-1.24.0.tar.gz


  1. 依赖包及模块包信息
openssl
版本:1.1.1s
源码包名:openssl-1.1.1s.tar.gz
下载地址:https://www.openssl.org/source/old/1.1.1/openssl-1.1.1s.tar.gz

pcre
版本:8.39
源码包名:pcre-8.39.tar.gz
下载地址:https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz/download

zlib
版本:1.2.13
源码包名:zlib-1.2.13.tar.gz
下载地址:http://www.zlib.net/zlib-1.2.13.tar.gz

nginx-http-concat
版本:master
源码包名:nginx-http-concat-master.zip

echo-nginx-module
版本:0.61
源码包名:echo-nginx-module-0.61.tar.gz

nginx-module-vts
版本:master
源码包名:nginx-module-vts.tar.gz

nginx-sticky-module
版本:无
源码包名:nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

nginx_upstream_check_module
版本:master
源码包名:nginx_upstream_check_module-master.zip

ngx_http_consistent_hash
版本:master
源码包名:ngx_http_consistent_hash-master.zip

nginx_tcp_proxy_module
版本:master
源码包名:nginx_tcp_proxy_module-master.zip


  1. 依赖安装压

注:以上的依赖包无需编译安装,只需在编译tengine时指定相应的源码路径即可

yum -y install cmake ncurses-devel libtirpc-devel centos-release-scl centos-release-scl-rh devtoolset-9-gcc devtoolset-9-gcc-c++
# 切换GCC版本
scl enable devtoolset-9 bash
  1. 源码解压
# 创建编译源目录 & 编译生成目录 & 数据目录
mkdir -p /data/make/ /data/app/tengine  /data/appData/tengine

# 解压源码包
tar -xvf nginx-1.24.0.tar.gz -C /data/make/

#解压依赖包
tar -xvf zlib-1.2.13.tar.gz -C /data/make/
tar -xvf pcre-8.39.tar.gz -C /data/make/
tar -xvf openssl-1.1.1s.tar.gz -C /data/make/
tar -xvf echo-nginx-module-0.61.tar.gz -C /data/make/
tar -xvf nginx-module-vts.tar.gz -C /data/make/
unzip nginx-http-concat-master.zip -d /data/make/ 
unzip nginx_tcp_proxy_module-master.zip -d /data/make/ 
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip -d /data/make
unzip nginx_upstream_check_module-master.zip -d /data/make
unzip ngx_http_consistent_hash-master.zip -d /data/make
unzip ngx_http_proxy_connect_module-0.0.3.zip -d /data/make

cd /data/make/nginx-1.24.0/
  1. 编译前准备
#打补丁
cd /data/make/nginx-sticky-module/
patch -p0 < /data/make/nginx_upstream_check_module-master/nginx-sticky-module.patch 

cd /data/make/nginx-1.24.0/
patch -p1 < /data/make/nginx_tcp_proxy_module-master/tcp.patch
patch -p1 < /data/make/nginx_upstream_check_module-master/check_1.20.1+.patch 
patch -p1 < /data/make/ngx_http_proxy_connect_module-0.0.3/patch/proxy_connect_rewrite_102101.patch  

cd /data/make/nginx_tcp_proxy_module-master/
cp -avf config_without_ssl config
cd /data/make/nginx-1.2.0/


#修改完成后保存退出,继续执行下面的操作即可

unset LDFLAGS
#如果是编译1.23.x版本请修改:
cd /data/make/nginx-sticky-module/
vi ngx_http_sticky_module.c
-Removed:        if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
+Added:        if (ngx_http_parse_multi_header_lines(r, r->headers_in.cookie, &iphp->sticky_conf->cookie_name, &route) != NULL) {



#编译检查
./configure \
--prefix=/data/app/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-stream \
--add-module=../nginx_upstream_check_module-master \
--add-module=../nginx-sticky-module \
--add-module=../ngx_http_consistent_hash-master \
--add-module=../nginx_tcp_proxy_module-master \
--add-module=../echo-nginx-module-0.61 \
--add-module=../nginx-http-concat-master \
--add-module=../nginx-module-vts \
--add-module=../ngx_http_proxy_connect_module-0.0.3 \
--with-openssl=../openssl-1.1.1s \
--with-pcre=../pcre-8.39 \
--with-zlib=../zlib-1.2.14 \
--with-ipv6 \
--with-ld-opt='-Wl,-rpath,$$ORIGIN/../libhub'
  1. 修改 rpath
vim objs/Makefile 
#全内容搜索 ORIGIN ,找到    -Wl,-rpath,'$$ORIGIN/../libhub'    
#一般在522行或者560行左右,找到后将其修改为如下内容即可
-Wl,-rpath,'$$ORIGIN/.  -ldl -lpthread -lcrypt ../pcre-8.39/.libs/libpcre.a ../openssl-1.1.1j/.openssl/lib/libssl.a ../openssl-1.1.1j/.openssl/lib/libcrypto.a -ldl -lpthread ../zlib-1.2.11/libz.a \
#主要就是修改 -Wl,-rpath,$$ORIGIN/../libhub  部分,与上面的一致即可,在ORIGIN部分加了单引号
  1. 编译安装
make
# 如在make过程中报 this statement may fall through  -Werror=implicit-fallthrough= 错误,按照如下方式执行
make CFLAGS='-Wno-implicit-fallthrough'

make install
  1. 修改rpath
yum -y install chrpath
# 看看文件的rpath
cd /data/app/nginx
chrpath -l sbin/nginx
readelf -dl sbin/nginx

chrpath -r '$ORIGIN/../libhub:$ORIGIN/../lib:$ORIGIN/../lib64' sbin/nginx


# 如编译的二进制不存在  rpath或者runpath,则使用patchelf
yum -y install patchelf
cd /data/app/nginx
patchelf --set-rpath '$ORIGIN/../libhub:$ORIGIN/../lib:$ORIGIN/../lib64' sbin/nginx

编译nginx-1.23.0_nginx

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  RumN13MdT8PI   2023年11月13日   37   0   0 源码编译nginx
  lrdUmT56VgbP   2023年11月02日   73   0   0 gitnginxCentOS
  3OWcH55z3bwR   2023年11月02日   83   0   0 gitphpnginx
RumN13MdT8PI
作者其他文章 更多

2023-11-13