Ubuntu之源码编译安装nginx

参考:Ubuntu之源码编译安装nginx_ubuntu编译安装nginx-CSDN博客

1.下载源码后进入源码目录,如下:

cd /home/jq/wf/nginx-1.26.1

2.下载相应依赖库:

apt-get install libpcre3-dev
apt-get install openssl libssl-dev
apt-get install zlib1g-dev

3.运行配置命令:(--prefix指定make install 后的目录,也就是nginx生成目录)

 ./configure    --with-http_ssl_module    --with-debug  --prefix=/home/jq/wf/nginx-1.26.1/bin

打印如下:

...
checking for OpenSSL library ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE2 library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/"
  nginx binary file: "//sbin/nginx"
  nginx modules path: "//modules"
  nginx configuration prefix: "//conf"
  nginx configuration file: "//conf/nginx.conf"
  nginx pid file: "//logs/nginx.pid"
  nginx error log file: "//logs/error.log"
  nginx http access log file: "//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"
 

4.运行make命令: make

打印如下:

...

objs/src/http/modules/ngx_http_upstream_zone_module.o \
objs/ngx_modules.o \
-ldl -lpthread -lcrypt -lpcre2-8 -lssl -lcrypto -ldl -lpthread -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/home/jq/wf/nginx-1.26.1/bin|" \
    -e "s|%%PID_PATH%%|/home/jq/wf/nginx-1.26.1/bin/logs/nginx.pid|" \
    -e "s|%%CONF_PATH%%|/home/jq/wf/nginx-1.26.1/bin/conf/nginx.conf|" \
    -e "s|%%ERROR_LOG_PATH%%|/home/jq/wf/nginx-1.26.1/bin/logs/error.log|" \
    < man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/home/jq/wf/nginx-1.26.1'
 

sed后面的路径那里就是编译出来的目录

5.运行make install 安装命令: make install

到/home/jq/wf/nginx-1.26.1目录下,发现生成了bin文件夹,再进入bin文件夹看到如下:

进入sbin目录,就是生成的nginx文件

输入: ./nginx,运行nginx后,输入ps aux | grep 'nginx',可以看到已经有nginx进程

在浏览器中输入http://127.0.0.1/

6.如果有自定义的handler和自定义的filter,则需要在源码中找个地方放置handler和filter模块,比如在源码的根目录下的objs下,创建一个目录,用于放置这2个模块代码

additon_filter目录下是这样:

config里面的配置文件内容:

ngx_addon_name=ngx_http_encrypt_filter_module
HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_encrypt_filter_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_encrypt_filter_module.c"

addition_module下的目录是这样:

config里面的内容:

ngx_addon_name=ngx_http_encrypt_module
HTTP_MODULES="$HTTP_MODULES ngx_http_encrypt_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_encrypt_module.c"

然后再在编译时的./configure命令中添加项  --add-module,如下:

 ./configure    --with-http_ssl_module    --with-debug --prefix=/home/jq/wf/nginx-1.26.1/bin   \
   --add-module="objs/addtion_module/addition_filter  objs/addtion_module/addition_module"

就可以运行以上配置命令了。

7.如果还有自己定义的.h和.c文件,如需要用到cjson库的cJson.h和cJson.c,还有自定义的.h和.c文件,如test.h和test.c,需要将cJson.h和cJson.c放到源码的core目录下,如果test.h/.c里面没有用到nginx其他模块的api,也可以放到core目录下,如果用到了其他模块,比如nginx http的api,比如我的就用到了#include <ngx_http.h>,那么就将test.h/.c放到http目录下,然后修改源码的auto目录的sources,将cjson.h 文件加到CORE_DEPS项,将cjson.c文件添加到CORE_SRCS项;修改auto/modules文件将test.h添加到http的ngx_module_deps项, test.c添加到ngx_module_srcs项,即ngx_module_type=HTTP下面的部分里面添加。如下的modules文件位置:

修改完后,就可以运行./confiure命令和make,make install命令了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32设计的ECG+PPG人体参数测量系统(华为云IOT)(217)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路【4】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发…

神经网络骨架nn.Module

文章目录 一、认识nn.Module二、nn.Module的基础加1操作 一、认识nn.Module nn.Module 是 PyTorch 中的一个核心类&#xff0c;它是所有神经网络模块的基类。在 PyTorch 中构建模型时&#xff0c;通常会继承这个类来创建自定义的网络结构。nn.Module 提供了一系列用于构建神经…

MATLAB 中的矩阵切片操作详解(细节无敌)

在 MATLAB 中&#xff0c;矩阵切片&#xff08;Matrix Slicing&#xff09;是一种非常常用的操作&#xff0c;用于从矩阵或数组中提取子集。这种操作非常灵活&#xff0c;可以通过指定行和列的索引来获取子矩阵。矩阵切片在数据处理、算法设计、图像处理等许多领域都非常有用。…

QT中tr的作用是什么

在Qt框架中&#xff0c;tr() 函数是一个非常重要的宏&#xff0c;它用于国际化和本地化&#xff08;i18n和l10n&#xff09;支持。tr() 函数使得Qt应用程序能够根据不同的语言环境&#xff08;locale&#xff09;显示相应的翻译文本&#xff0c;从而支持多种语言。 具体来说&a…

如何在Word中插入复选框

如何在Word中插入复选框&#xff1a;详细教程与技巧 在Word中插入复选框是一项非常实用的技巧&#xff0c;尤其是在制作问卷调查、待办事项清单、交互式表单或文档中需要用户进行选择时&#xff0c;复选框不仅能提高文档的功能性&#xff0c;还能显得更加专业。本文将详细讲解…

2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略 完整参考论文

持续更新中,2024年数学建模比赛思路代码论文都会发布到专栏内,只需订阅一次! 完整论文+代码+数据结果链接在文末! 订阅后可查看参考论文文件 1 介绍 1.1 背景 乡村振兴是我国现代化建设的重要战略之一,而农业产业的可持续发展则是其中的核心内容。特别是在耕地资源有限的…

嵌入式软件--51单片机 DAY 4

一、蜂鸣器 当电流通过线圈时会产生电磁场&#xff0c;电磁场与永磁体相互作用&#xff0c;从而使金属膜产生震动而发声。为使金属膜持续震动&#xff0c;蜂鸣器需要使用震荡电路进行驱动。有些蜂鸣器元件内部自带震荡驱动电路&#xff0c;这种蜂鸣器叫做有源蜂鸣器&#xff0…

idea问题解决:java: -source 7 中不支持 方法引用 (请使用 -source 8 或更高版本以启用 方法引用)

以下是AI生成 &#xff1a;鱼聪明AI - 做您强大的AI助手 这个错误信息表明你尝试使用了Java 8中引入的方法引用特性&#xff0c;但是你的编译器设置使用的源代码版本是Java 7。方法引用是Java 8中引入的一个新特性&#xff0c;允许你以更简洁的方式调用方法。 要解决这个问题…

计算机网络 TCP/IP协议篇

今天学习了TCP/IP协议的相关知识&#xff0c;学习笔记如下&#xff1a; 在学习之前&#xff0c;我们先抛出几个问题&#xff0c;什么是TCP/IP协议簇&#xff1f;TCP/IP协议簇是怎么工作的&#xff1f; TCP/IP模型 协议分层 每层通过协议完成各自特定的功能上层依赖下层提供…

24/9/6算法笔记 kaggle 房屋价格

预测模型主要分为两大类&#xff1a; 回归模型&#xff1a;当你的目标变量是连续的数值时&#xff0c;你会使用回归模型进行预测。回归模型试图找到输入特征和连续输出之间的关联。一些常见的回归模型包括&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;岭回归…

some electronic products

纽扣电池 button cell 运动手环 sports wristband 智能手环 smart bracelet 皮卡丘夜灯 pikachu night lamp 数字显示充电器 Charger with a digital display 磁吸无线充 magnetic wireless charger 直流电机调速器 DC motor speed controller 继电器模块 relay module 锂离子电…

学不会虚拟列表?10分钟带你实现高度固定的Vue虚拟列表方案及原理

前言 本文主要介绍长列表的一种优化方案&#xff1a;虚拟列表。本文主要是对传统的虚拟列表方案进行更加详尽的刨析&#xff0c;以便我们能够更加深入理解虚拟列表的原理。 虚拟列表目录 1、为什么需要使用虚拟列表2、什么是虚拟列表与懒加载的区别(重要) 3、实现思路4、通过节…

SAP PO附件上传报错 输入时错

SAP PO附件上传报错 场景&#xff1a; 在SAP采购订单上传附件时&#xff0c;出现了SO424报错 Error occurred during import(输入时错)&#xff0c;报错界面如下图所示&#xff1a; 分析&#xff1a; 输入事务代码SLG1&#xff0c;在User处输入自己的用户名并运行报表。本案例…

统计学习方法与实战——统计学习方法之感知机

感知机 感知机三要素分析模型策略损失函数选择 算法原始形式对偶形式 相关问题 例子iris数据集分类实战数据集查看 显示结果sklearn 实战感知机 习题解答习题2.1解题步骤反证法 习题2.2习题2.3凸壳线性可分线性可分证明凸壳不相交证明充分性&#xff1a;凸壳不相交\Rightarrow⇒…

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1&#xff1a;安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件&#xff0c;完成后可能需要重启 Jenkins。 步骤 2&#xff1a;配置…

c#如何实现触发另外一个文本框的回车事件

一.需求 我需要实现listview中的一行双击后&#xff0c;将其中的一个值传给一个文本框&#xff0c;传完后&#xff0c;给文本框一个回车指令。 我的方法&#xff1a;后面加上 \rthis.txt_ID.Text this.listView1.SelectedItems[0].Text"\r" 结果无效。 二.问通义…

【C#】DrawCurve的用法

DrawCurve 方法在 C# 中通常用于绘制一条平滑的曲线通过一系列给定的点。不过&#xff0c;需要注意的是 DrawCurve 并不是 C# 语言本身的一部分&#xff0c;而是在 .NET Framework 的 System.Drawing 命名空间中 Graphics 类的一个方法。 1. 如何使用 DrawCurve 方法&#xff…

TCP 和 UDP 区别

UDP UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种无连接的网络传输协议&#xff0c;提供了简单的消息传送服务。UDP位于传输层&#xff0c;允许应用程序向其他主机发送封装在IP数据报中的消息&#xff0c;而无需先建立连接。由于UDP不…

ultralytics实现DeepSort目标追踪算法之特征提取网络

文章目录 DeepSort基本流程DeepSort特征提取网络Market-1501数据集目录结构命名规则 数据集划分 网络模型训练过程参数设置数据集加载特征提取网络定义预训练模型加载损失函数与优化器定义mian函数调用训练过程验证过程平均指标与结果 DeepSort基本流程 DeepSort&#xff08;D…

微博视频无水印下载的方法

在如今的数字时代&#xff0c;社交媒体平台如微博已经成为人们分享日常生活、获取新闻和娱乐内容的重要渠道。我们时常会在刷微博时看到一些有趣的视频图片&#xff0c;或是名人的访谈&#xff0c;或是搞笑的短片&#xff0c;有时甚至是一些珍贵的历史资料。这些视频不仅内容丰…