参考:https://blog.csdn.net/weixin_43733154/article/details/107232057
文章目录
1.1 总的一个思路说明
1.2 我当前nginx的状态
1.3 添加nginx模块实践
1.1 总的一个思路说明
第一阶段
01:查看当前nginx的版本和已编译的模块,用nginx -V
02:对当前Nginx服务的命令nginx重命名,或者移动到其它目录下;
第二阶段
01:上传相同版本的nginx二进制包,解压且进入到解压后的目录下,或者查找本机nginx的configure
find / -name configure
02:./configure进行编译(以前编译的模块 加上 你要添加的模块)
03:make,不要make install
04:当“03步骤”执行完成后,在 path/objs/ 目录下有nginx命令
第三阶段
01:用 path/objs/nginx 命令去替换你之前的nginx命令
02:用 nginx -V 查看是否成功添加了相应模块
03:更改其命令的属主/组为当前nginx运行的用户
1.2 我当前nginx的状态
nginx当前的状态
[root@node21 ~]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 4774 root 6u IPv4 27135 0t0 TCP *:http (LISTEN)
nginx 4788 www 6u IPv4 27135 0t0 TCP *:http (LISTEN)
nginx服务命令所在目录
[root@node21 ~]# which nginx
/data/apps/nginx/sbin/nginx
nginx的版本和已编译的模块
[root@node21 ~]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/data/apps/nginx-1.18.0 --user=www --group=www --with-stream --with-http_ssl_module
1.3 添加nginx模块实践
这里添加一个 --with-http_stub_status_module 模块
第一阶段:
# 查看当前nginx的版本和已编译的模块,用nginx -V
[root@node21 ~]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/data/apps/nginx-1.18.0 --user=www --group=www --with-stream --with-http_ssl_module
^==可以看到是没有--with-http_stub_status_module模块的哈
# 对当前Nginx服务的命令nginx重命名;
[root@node21 ~]# which nginx
/data/apps/nginx/sbin/nginx
[root@node21 ~]#
[root@node21 ~]# mv /data/apps/nginx/sbin/nginx /data/apps/nginx/sbin/nginx.bak
[root@node21 ~]# ll /data/apps/nginx/sbin/nginx.bak
-rwxr-xr-x 1 www www 6883920 7月 9 15:27 /data/apps/nginx/sbin/nginx.bak
第二阶段
# 创建/root/tools目录
[root@node21 ~]# mkdir /root/tools
[root@node21 ~]# ls -ld /root/tools/
drwxr-xr-x 2 root root 33 7月 9 16:38 /root/tools/
# 进入到/root/tools目录,上传软件包(跟我现在nginx的版本是一致的),进行编译,但不要执行make install
[root@node21 ~]# cd /root/tools/
[root@node21 tools]# rz # 如何没这个命令,用yum install -y lrzsz进行安装
[root@node21 tools]# ll nginx-1.18.0.tar.gz
-rw-r--r-- 1 root root 1039530 6月 10 08:20 nginx-1.18.0.tar.gz
[root@node21 tools]#
[root@node21 tools]# tar xf nginx-1.18.0.tar.gz
[root@node21 tools]# cd nginx-1.18.0
[root@node21 nginx-1.18.0]#
[root@node21 nginx-1.18.0]# ./configure --prefix=/data/apps/nginx-1.18.0 --user=www --group=www --with-stream --with-http_ssl_module --with-http_stub_status_module
[root@node21 nginx-1.18.0]#
[root@node21 nginx-1.18.0]# make # 不要make install哈
[root@node21 nginx-1.18.0]#
[root@node21 nginx-1.18.0]# pwd # 当前所在路径
/root/tools/nginx-1.18.0
[root@node21 nginx-1.18.0]# ll objs/nginx # 当前路径下的objs目录下有一个nginx文件
-rwxr-xr-x 1 root root 6932616 7月 9 16:53 objs/nginx
找到编译的nginx命令,然后去替换之前的nginx命令
[root@node21 ~]# ll /root/tools/nginx-1.18.0/objs/nginx
-rwxr-xr-x 1 root root 6932616 7月 9 16:42 /root/tools/nginx-1.18.0/objs/nginx
[root@node21 ~]# cp -a /root/tools/nginx-1.18.0/objs/nginx /data/apps/nginx/sbin
[root@node21 ~]# ll /data/apps/nginx/sbin/nginx
-rwxr-xr-x 1 root root 6932616 7月 9 16:46 /data/apps/nginx/sbin/nginx
[root@node21 ~]# which nginx
/data/apps/nginx/sbin/nginx
[root@node21 ~]#
[root@node21 ~]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/data/apps/nginx-1.18.0 --user=www --group=www --with-stream --with-http_ssl_module --with-http_stub_status_module
^==可以看到--with-http_stub_status_module已添加成功
[root@node21 ~]# chown www:www /data/apps/nginx/sbin/nginx
[root@node21 ~]# ll /data/apps/nginx/sbin/nginx
-rwxr-xr-x 1 www www 6932616 7月 9 16:53 /data/apps/nginx/sbin/nginx