nginx包在centos 7.5 arm环境编译

第一,下载源码

git clone https://src.fedoraproject.org/rpms/nginx.git

下载后切换分支到f29,因为它的版与我后面的spec文件匹配

第二,下载源码包到SOURCE路径

wget  https://nginx.org/download/nginx-1.14.2-2.tar.gz路径从spec文件中获取source0)

第三,编译

rpmbuild -ba nginx.spec

报错,好吧,./configure在check模块时报错了。论坛上找到了对应的错误,

checking for perl

+ perl version: This is perl 5, version 16, subversion 3 (v5.16.3) built for aarch64-linux-thread-multi

Can't locate ExtUtils/Embed.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).

BEGIN failed--compilation aborted.

./configure: error: perl module ExtUtils::Embed is required

原来是少了perl-ExtUtils-Embed包。下载安装后,再次编译。通过。

第四,安装

rpm -ivh /root/rpmbuild/RPMS/*/nginx-*.rpm

(nginx编译的时候依赖包很多,比如GeoIP等系列的包,一级级去安装解决依赖就行。大概解决依赖包的问题花费了3小时)

添加模块

客户要求添加如下三个模块,lua+sticky+echo。

从来没有添加过模块,怎么快速掌握呢?

从opensuse搜一个nginx 添加了module的包,参考其spec文件和源码包。

在spec文件中搜索module关键字,通篇了解后,发现要添加一个module,需要修改3处:

1 Source1000 lua-nginx-module.tar.gz

2 setup -q -a 1000,其中1000是Source的编号

3 ./configure参数添加--add-module=lua-nginx-module

注意,要把源码包下载后按照spec文件中的格式压缩,并放在/root/rpmbuild/SOURCE/目录。

我们先来下载上述三个模块的源码。

git clone https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng.git

tar -cvf nginx-sticky-module-ng.tar.gz nginx-sticky-module-ng/*


git clone https://github.com/openresty/echo-nginx-module.git

tar -cvf echo-nginx-module.tar.gz echo-nginx-module/*


git clone https://github.com/openresty/lua-nginx-module.git

tar -cvf lua-nginx-module.tar.gz lua-nginx-module/*

注意:github上有的分支代码是别人私有的库,不能用于验证。务必下载官网的。

编译发现源码报错,error:MD5_CBLOCK undefined。

比对opensuse工程,发现sticky模块多了https://github.com/yaoweibin/nginx_upstream_check_module源码,该源码这种包含一个sticky的patch。猜测跟次报错有关。下载https://github.com/yaoweibin/nginx_upstream_check_module后,添加到spec文件中一起编译。果真,问题解决了。瞎猜的能力也是要有的。

编译后,按照nginx包。使用nginx -V查看configure执行时带的参数,如下

[root@arm-app-0003 SPECS]# rpm -ivh /root/rpmbuild/RPMS/*/nginx*.rpm

Preparing...                          ################################# [100%]

Updating / installing...

  1:nginx-filesystem-1:1.14.2-2.el7.c################################# [ 11%]

  2:nginx-mod-http-image-filter-1:1.1################################# [ 22%]

  3:nginx-mod-http-perl-1:1.14.2-2.el################################# [ 33%]

  4:nginx-mod-http-xslt-filter-1:1.14################################# [ 44%]

  5:nginx-mod-mail-1:1.14.2-2.el7.cen################################# [ 56%]

  6:nginx-all-modules-1:1.14.2-2.el7.################################# [ 67%]

  7:nginx-1:1.14.2-2.el7.centos.a    ################################# [ 78%]

  8:nginx-mod-stream-1:1.14.2-2.el7.c################################# [ 89%]

  9:nginx-debuginfo-1:1.14.2-2.el7.ce################################# [100%]

[root@arm-app-0003 SPECS]# nginx -V

nginx version: nginx/1.14.2

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)

built with OpenSSL 1.0.2k-fips  26 Jan 2017

TLS SNI support enabled

configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --add-module=echo-nginx-module --add-module=lua-nginx-module --add-module=nginx_upstream_check_module-0.3.0 --add-module=nginx-sticky-module-ng --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'


不断总结输出是程序员必备成长技能。如何写的更清醒,欢迎来007不出局一起践行写作*^_^*

nginx包在centos 7.5 arm环境编译_第1张图片
图片发自App

你可能感兴趣的:(nginx包在centos 7.5 arm环境编译)