日常运维|Nginx重新编译添加模块

2023-11-30 22:56:44 浏览数 (2)

在我们编译安装Nginx的时候,在默认情况下,我们使用的是HTTP,这也是在默认的内网都是在使用这种模式。有些模块在默认情况下并不会被安装,比如http_ssl_module,那么为了让Nginx支持HTTPS,必须添加这个模块。

下面讲解如何在已经安装过后再次添加新的模块。

1、找到源码目录

找到安装nginx的源码根目录(即安装包存放目录),如果没有的话下载新的源码并解压,然后执行下面的命令。默认情况下,我们都会在用户配置文件配置环境变量,例如NGINX_HOME。默认情况下,nginx的安装目录在/usr/local/nginx/sbin/nginx

代码语言:javascript复制
$ cd /data/software/
$ ls
nginx-1.23.3  nginx-1.23.3.tar.gz

$ cd nginx-1.23.3

2、重新编译的代码和模块

如果还需要其他的参数可以在后面使用--with来增加。

代码语言:javascript复制
$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module

$ make

# 下面是一些执行信息
........

Configuration summary
  using system PCRE library
  OpenSSL library is not used
  using system zlib library

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
# 到这里基本上结束了

当然,你还可以这样子

代码语言:javascript复制
$ ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/  --with-http_stub_status_module --with-http_ssl_module
$ make

关于其他模块可以酌情参考或者去官网查询下。

代码语言:javascript复制
$ ./configure 
--prefix=/usr/local/nginx 
--pid-path=/var/run/nginx/nginx.pid 
--lock-path=/var/lock/nginx.lock 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log 
--with-http_gzip_static_module 
--http-client-body-temp-path=/var/temp/nginx/client 
--http-proxy-temp-path=/var/temp/nginx/proxy 
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi 
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi 
--http-scgi-temp-path=/var/temp/nginx/scgi --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module

注意事项:

执行make(注意:千万别make install,否则就覆盖安装了), make完之后在/data/software/nginx-1.23.3/objs目录下就多了个nginx,这个就是新版本的程序了,其实每次我们执行make的时候一些文件等都在这里,如果上一次这个文件还在,可以删除后重新make。

3、备份旧nginx程序,拷贝新nginx程序

代码语言:javascript复制
$ cd /usr/local/nginx/sbin/

$ mv nginx nginx_bak20230228

$ cp /data/software/nginx-1.23.3/objs/nginx /usr/local/nginx/sbin/

4、测试安装是否正确

测试安装主要是测试两个方面,一个是测试配置文件是否有错误,另外一个是测试新版本是否已经安装HTTPS模块。当测试没有问题的时候,我们就可以重新启动服务来让nginx进入工作了。

代码语言:javascript复制
# 测试配置文件是否有错误
$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# 测试新版本是否已经安装HTTPS模块
$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.23.2
built by gcc 4.8.5 20120623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2022
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module

5、重启Nginx,或者重载服务

下面进行重新加载Nginx,来让服务运行起来。

$ /usr/local/nginx/sbin/nginx -s reload $ ./nginx -s quit $ ./nginx

6、查看当前笔记本nginx已经安装的模块

7、写在最后

作为一名运维工程师需要了解掌握很多技能,比如说操作系统、开源组件、监控相关、编程知识、网络知识、数据库知识、自动化技能和日志分析能力。当然也不能缺少一些软技能,例如沟通、抗压等,要和同事、领导以及客户保持良好的沟通,理解需求,提供有效的解决方案,需要应对高强度的工作压力,保持冷静,快速解决问题。


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞