End.

yum安装的nginx或者编译安装的nginx,添加模块

因为开发途中,突然需要给nginx增加新的模块,或者第三方模块,用于优化nginx或者做一些资源合并,路由规则之类的。我们会经常需要在已经安装好了nginx的机械上,继续完成操作。

yum安装nginx可参考《centos7 搭建 LNMP环境 (PHP7、Mysql5.7)》 编译安装nginx可参考《CentOS 编译安装nginx,安装第三方模块


概括

1、查看已安装nginx的版本和模块信息 2、下载一个同版本的可编译的nginx 3、备份、备份、备份 4、配置nginx编译参数 5、验证编译信息 6、文件替换,并重启 7、查看新的nginx的模块信息


1、查看已安装nginx的版本和模块信息

为了保持重新编译添加新模块,需要保持两个版本一致性 查看nginx版本和模块信息,命令:

nginx -V

2、下载一个同版本的可编译的nginx

上一步查看到版本为 nginx/1.12.2

下载列表:http://nginx.org/download 选择相应版本的下载,命令如下:

# 切换到需要下载到的目录
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.12.2.tar.gz
# 解压
tar -xzvf nginx-1.12.2.tar.gz

3、备份、备份、备份

备份文件: 主要是将原本的sbin的nginx备份,以及原来的nginx安装目录备份 命令如下:(需要根据自己的原本安装目录 改变哦)

mv /usr/sbin/nginx /usr/sbin/nginx.20190421
cp -r /etc/nginx /etc/nginx.20190421

4、配置nginx编译参数

按照第一步查看的模块信息,进行 configure配置 首先要进入刚刚解压的nginx包,cd nginx-1.12.2 然后执行./configure 即可:

./configure --user=nginx --group=nginx --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-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-debug --add-module=../nginx-http-concat-master

参数说明:

    --user = 指定用户;
    --group = 指定组;
    --prefix = 安装路径;
    --sbin-path = sbin的路径;
    --modules-path = 模块的路径;
    --conf-path = 配置文件路径;
    --error-log-path = 错误日志路径;
    --http-log-path = 请求日志路径;
    --with-xxx_module 编译的模块;
    --add-module = 第三方模块;
4.1 需要增加nginx自带的模块

那么在 ./configure 后面加上 --with-xxx_module ,比如: --with-mail_ssl_module

4.2 增加第三方模块

先下载第三方模块,然后使用--add-module = 第三方模块,比如:

cd /usr/local/src/
# 下载 第三方模块
wget https://github.com/alibaba/nginx-http-concat/archive/master.zip -O nginx-http-concat-master.zip
# 解压
unzip nginx-http-concat-master.zip

# ./configure 添加 --add-module
./configure –-user=www –-group=www ....(省略其它配置信息) --add-module=/usr/local/src/nginx-http-concat-master

5、验证编译信息

以下命令都是在 下载的nginx-1.12.2目录下执行哦~

编译命令:

make -j2

注意禁止:千万不要继续输入“make install”,以免现在的nginx出现问题

以上完成后,会在objs目录下生成一个nginx文件,先验证:

./objs/nginx -t
./objs/nginx -V

6、文件替换,并重启

将nginx-1.12.2目录下的 objs/nginx 拷贝到 sbin下,命令:

cp objs/nginx /usr/sbin/

重新加载nginx配置:

nginx -s reload

重启:

nginx -s stop && nginx

7、查看新的nginx的模块信息

使用 nginx -V 即可


总结

1、查看已安装nginx的版本和模块信息 2、下载一个同版本的可编译的nginx 3、备份、备份、备份 4、配置nginx编译参数 5、验证编译信息 6、文件替换,并重启 7、查看新的nginx的模块信息


the End.

End.