Nginx 在Linux环境下安装和增加新模块

Nginx 在Linux环境下安装和增加新模块

在Linux环境下安装Nginx,以及安装完成以后增加新模块。两种模块编译方式——静态编译和动态编译。

1、测试环境

CentOS 7;
Nginx-1.22.1
依赖环境安装

yum install -y gcc-c++ \
pcre pcre-devel \
zlib zlib-devel \
openssl openssl-devel

2、Nginx安装

2.1 下载和安装

下载链接 nginx: download

新建一个Nginx安装目录,解压安装文件

mkdir -p /soft/ngxinstall
cp /mnt/data/nginx-1.22.1.tar.gz /soft/ngxinstall/
tar -xzvf /soft/ngxinstall/nginx-1.22.1.tar.gz

切换路径到nginx安装目录,使用默认配置安装

cd /soft/ngxinstall/nginx-1.22.1
./configure
make
make install

查看安装路径

whereis nginx
#默认配置下查看nginx版本信息
/usr/local/nginx/sbin/nginx -V

2.2 增加模块

以vts模块为例,进行演示

下载vts模块

下载链接 GitHub - vozlt/nginx-module-vts: Nginx virtual host traffic status module

解压缩

#移动文件
cp /mnt/data/nginx-module-vts-master.zip /soft/
#解压缩
cd /soft
unzip /soft/nginx-module-vts-master.zip

查看Nginx安装参数

/usr/local/nginx/sbin/nginx -V
# 例如如下输出
nginx version: nginx/1.22.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments:--with-stream

进入Nginx文件目录,注意不要make install

cd /soft/ngxinstall/nginx-1.22.1
./configure --with-stream --add-module=/soft/nginx-module-vts-master
make

备份旧的Nginx

cp -r /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-`date "+%Y%m%d-%H%M%S"`.bak

复制前停止nginx

/usr/local/nginx/sbin/nginx -s stop

复制编译好的Nginx

cp -r objs/nginx /usr/local/nginx/sbin/nginx

2.3 编译增加动态模块

进入Nginx文件目录

1、–add-dynamic-module=path

2、make modules

cd /soft/ngxinstall/nginx-1.22.1
./configure --with-stream \
--add-dynamic-module=/soft/nginx-module-vts-master \
--add-dynamic-module=/soft/nginx-module-sts-master \
--add-dynamic-module=/soft/nginx-module-stream-sts-master \
--with-compat
make modules

将动态模块复制到安装目录

cp objs/*.so /usr/local/nginx/modules/

在nginx.conf 中加载动态模块

#load_module modules/ngx_module_name.so;
load_module modules/ngx_http_stream_server_traffic_status_module.so;
load_module modules/ngx_http_vhost_traffic_status_module.so;
load_module modules/ngx_stream_server_traffic_status_module.so;

检查nginx配置是否正确

/usr/local/nginx/sbin/nginx -t

报错:

nginx: [emerg] module “.so” is not binary compatible in /usr/local/nginx/conf/nginx.conf

nginx: [emerg] dlopen() “.so” failed (.so: undefined symbol: ngx_ ) in /usr/local/nginx/conf/nginx.conf

如果动态模块加载不成功,可以使用nginx -v命令,检查Nginx的编译参数和编译模块时使用的编译参数是否一致

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值