centos7 yum安装的nginx添加模块 - Go语言中文社区

centos7 yum安装的nginx添加模块


此文章已不再更新,查看最新版内容和更多内容:

《Centos7 nginx 不中断服务添加新模块或第三方模块》

--------------------------------------------------- 分隔符 ---------------------------------------------------

概述

    nginx作为一个超常用的web服务器,负载均衡器,被广泛使用。而nginx的各种功能是需要通过各种模块来实现的,经常会遇到安装时并没有安装此模块,但后面由于业务需求等会使用到未安装的模块,此时就需要在原来nginx的基础上添加新模块,也可能是第三方模块,而根据安装nginx的方式,添加模块的方法也不一样。

    nginx源码安装,添加模块,请参考我另一篇博文:
《centos7.2 源码编译安装nginx,新增编译模块,实现tcp反向代理》

 

正文

    这里详细说明以下,通过yum安装的nginx,如何新增模块。整体思路是,需要下载yum安装的nginx相同版本的nginx源码,然后通过源码进行编译,在编译中添加新的模块,然后将编译完成后的nginx可执行文件进行替换。已实现添加模块。

 

1. 查看现有nginx版本与编译的参数

# 查看版本与编译参数,就是下面结果中的configure arguments:后面的参数,后面重新编译时需要带上
$ nginx -V

 

2. 下载相同版本nginx

# 官网下载nginx-1.12.2 并解压
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz
$ tar -zxvf nginx-1.12.2.tar.gz

 

3. 备份原有nginx和配置

# 暂时备份到用户目录下,以备操作错误时,进行还原
$ cp /usr/sbin/nginx ~/nginx.back
$ cp -r /ect/nginx ~/nginx.conf.back


4. 编译nginx,添加模块

# 安装编译的依赖包
yum install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel GeoIP-data gperftools redhat-rpm-config

# 进入nginx,进行编译,编译时需要将上面查看到的现有nginx的参数都带上,然后在最后面添加你需要新增的模块
$ cd nginx-1.12.2

# 因为这里我示例添加第三方模块nginx-auth-ldap,需要安装openldap-devel
$ yum install openldap-devel -y

# 其中最后的--add-module=为我这里示例的需要增加的第三方模块的存放路径,第三方模块需要提前下载好
# 不管是第三方模块,还是自身模块,都直接在最后添加参数即可。
$ ./configure --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_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_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-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --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 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' --add-module=/root/nginx-auth-ldap



# 编译,注意:这里很多说不能make install,只make就好了,其实不然,
# 在执行./configure命令时则已经查出了原有nginx的各个文件的路径,如果原来没有nginx,则会默认安装到/usr/local/nginx目录下。
# 直接执行make install 则会自动替换原来的nginx,无须手动,也不会中断nginx进程。
$ make && make install

 

5. 检查新nginx,重启生效

# 编译后,会自动替换原有nginx,查看nginx配置,是否还是之前的,查看conf.d内的配置是否还在
$ cat /etc/nginx/nginx.conf 
$ ls /etc/nginx/conf.d

# 查看nginx参数,看看我们新增的模块在不在
$ nginx -V

# 重启nginx生效
$ systemctl restart nginx

查看新的nginx,结果如下,会发现,我们新增的第三方模块已经加在了最末尾

 

 

结束

    编译安装后,原有的nginx配置与文件等都不会发生变化,不需要重新设置nginx配置等。直接重启就可以正常使用了。上面的备份文件只是一以备不时之需,在操作出错时以方便恢复,正常新增模块,测试使用正常后,备份文件则可删除。

    有任何不明白或有问题的地方,欢迎留言指正,谢谢

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_41004350/article/details/90440283
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 23:56:06
  • 阅读 ( 2092 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢