当前位置: 首页 > news >正文

Ubuntu环境 nginx 源码 编译安装

ubuntu 终端 使用 wget 下载源码

sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz

 解压刚下载的源码压缩包  nginx-1.24.0.tar.gz

sudo tar -zxvf nginx-1.24.0.tar.gz

解压完成 产生 nginx-1.24.0 目录

进入该目录

cd ./nginx-1.24.0

目录下有一个可执行文件 configure

关于这个 configure 

configure命令做了大量的幕后工作,包括检测操作系统内核和已经安装的软件,参数的解析,

中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等

可以参考官方介绍:

nginx documentationhttps://nginx.org/en/docs/https://nginx.org/en/docs/https://nginx.org/en/docs/

进入 nginx 官网

点击  Installing nginx

选择  

  • Building nginx from Sources

或者 直接点击

  • Building nginx from Sources

    执行:

    ./configure --help

    根据需求选择配置编译选项

    这里我的 配置编译选项如下:

     sudo ./configure \--sbin-path=/home/wsd/test/nginx/Nginx \--conf-path=/home/wsd/test/nginx/conf/nginx.conf \--error-log-path=/home/wsd/test/nginx/LOG/error.log \--http-log-path=/home/wsd/test/nginx/LOG/access.log \--with-pcre \--with-http_ssl_module \--with-http_v2_module \--with-http_gzip_static_module \--with-stream \--with-stream_ssl_module

    说明:

    --sbin-path: 指定Nginx可执行文件的安装路径。
    --conf-path: 指定Nginx配置文件的位置。
    --error-log-path & --http-log-path: 指定日志文件的位置。
    --with-pcre: 启用PCRE支持(正则表达式)。
    --with-http_ssl_module: 启用SSL模块。
    --with-http_v2_module: 启用HTTP/2支持。
    --with-http_gzip_static_module: 启用Gzip静态压缩模块。
    --with-stream & --with-stream_ssl_module: 启用TCP/UDP流支持及其SSL模块。
     

       

    现在 执行 上面的  configure  命令还有问题 

    还缺少一些东西

    PCRE PCRE Perl Compatible Regular Expressions Perl 兼容正则表达式)

    如果我们在配置文件nginx.conf里使用了正则表达式,那么在编译Nginx时就必须把PCRE

    库编译进Nginx,因为Nginx的HTTP模块要靠它来解析正则表达式。当然,如果你确认不会使

    用正则表达式,就不必安装它。

    `libpcre3` 和 `libpcre3-dev` 是与 Perhentional Compiling Regular Expressions (PCRE) 库相关的两个软件包,它们的作用如下:

    1. **libpcre3**:
       - 这是 PCRE 库的运行时版本,提供了用 C 语言实现的正则表达式匹配功能。许多程序和库依赖于这个库来处理正则表达式。安装这个库后,任何依赖它的程序都可以使用其提供的 API。

    2. **libpcre3-dev**:
       - 这是 `libpcre3` 的开发包,包含了编译和链接 PCRE 库所需的头文件和其他开发工具。开发者在编写需要使用正则表达式的应用程序时,通常需要安装这个包,以便包含相关的头文件并链接到库。

    简单来说,你需要 `libpcre3` 来运行依赖该库的程序,而在开发新软件时则需要 `libpcre3-dev` 来编译和链接使用到 PCRE 功能的代码。

    更新系统包列表

    sudo apt update

     此命令用于更新可用软件包的索引信息。它会从软件源(repositories)下载最新的软件包列表,确保你的系统知道有哪些软件包可以安装或更新。执行该命令后,系统会显示可用的软件包更新信息,但并不会实际进行更新。

    安装 `libpcre3` 和 `libpcre3-dev`

    sudo apt install -y libpcre3 libpcre3-dev

    好像 nginx-1.24.0 使用的是 PCRE2

    所以:

    sudo apt install libpcre2-dev

    zlib
    zlib 库用于对 HTTP 包的内容做 gzip 格式的压缩,如果我们在 nginx.conf 里配置了 gzip on 并指定对于某些类型( content-type )的 HTTP 响应使用 gzip 来进行压缩以减少网络传输量,那
    么,在编译时就必须把 zlib 编译进 Nginx

    zlib1g 和 zlib1g-dev 是在基于 Debian 的 Linux 发行版(如 Ubuntu)中使用的两个软件包,分别提供了 zlib 库的运行时和开发时支持。

    1. zlib1g

      • 这是 zlib 库的运行时版本,涵盖了用于数据压缩和解压缩的核心功能。
      • 安装这个包后,系统上的应用程序就可以使用 zlib 的功能进行数据压缩。
      • 例如,许多应用程序和库(如 Nginx 或 Apache)在运行时都依赖于 zlib 来处理 gzip 压缩数据。
    2. zlib1g-dev

      • 这个包包含了 zlib 库的开发文件,包括头文件和用于编译的静态库或共享库。
      • 安装这个包后,开发者可以在自己的程序中包含 zlib 的头文件,并将其链接到 zlib 库。
      • 这对于编写应用程序或编译依赖 zlib 的软件包是必需的。

    安装 zlib

    sudo apt install -y zlib1g zlib1g-dev

    OpenSSL 开发库:
    如果我们的服务器不只是要支持 HTTP ,还需要在更安全的 SSL 协议上传输 HTTP ,那么
    就需要拥有 OpenSSL 了。另外,如果我们想使用 MD5 SHA1 等散列函数,那么也需要安装

    `openssl` 和 `libssl-dev` 是 OpenSSL 项目中的两个不同组件,它们的作用有所不同,具体区别如下:

    1. openssl

    - 类型:工具包
    - 用途:`openssl` 是一个命令行工具,用于执行各种与加密相关的操作,如生成密钥、创建证书请求、管理证书、加密和解密数据、计算哈希等。可以通过命令行直接使用 OpenSSL 的功能。
    - 安装后的位置:通常会在 `/usr/bin/openssl` 路径下。

    2. libssl-dev

    - 类型:开发库
    - 用途:`libssl-dev` 是 OpenSSL 的开发包,包含了开发使用 OpenSSL 库所需的头文件和其它开发文件。开发者在编写 C/C++ 应用程序时,需要使用这些库来调用 OpenSSL 提供的加密和安全功能。
    - 内容:包括了 OpenSSL 的头文件(例如 `openssl/ssl.h` 和 `openssl/evp.h`)以及编译时所需的静态链接库和动态链接库。
    - 安装后的位置:头文件通常位于 `/usr/include/openssl`,库文件通常位于 `/usr/lib/x86_64-linux-gnu`(取决于你的系统架构)。

    综上所述:
    - `openssl`:用于用户直接操作的命令行工具。
    - `libssl-dev`:用于开发者编写程序时链接的库和头文件。

    如果你只是想使用 OpenSSL 的命令行功能,安装 `openssl` 就可以了;如果你想在 C/C++ 程序中使用 OpenSSL 的加密功能,那么必须安装 `libssl-dev`。

    安装 openssl 

    sudo apt install -y openssl

    安装 libssl-dev

    sudo apt install -y libssl-dev

    build-essential :

    build-essential 是一个软件包,包含了一组用于编译和构建软件的基本工具和库。这个包通常用于 Debian 和基于 Debian 的发行版(如 Ubuntu)。

    build-essential 包中通常包括以下内容:

    1. 编译器:如 gcc(GNU Compiler Collection)和 g++(GNU C++ Compiler)。
    2. 构建工具:如 make,用于自动化构建过程。
    3. 库和头文件:基本的开发库和头文件,提供编译时所需的支持。

    安装 build-essential 包后,系统就具备了编译其他软件包的基本环境,特别是在从源代码构建软件时尤为重要。

    安装 build-essential

    sudo apt install -y build-essential 

    再次执行:

     sudo ./configure \--sbin-path=/home/wsd/test/nginx/Nginx \--conf-path=/home/wsd/test/nginx/conf/nginx.conf \--error-log-path=/home/wsd/test/nginx/LOG/error.log \--http-log-path=/home/wsd/test/nginx/LOG/access.log \--with-pcre \--with-http_ssl_module \--with-http_v2_module \--with-http_gzip_static_module \--with-stream \--with-stream_ssl_module

    编译:

    sudo make
    make 命令根据 configure 命令生成的 Makefile 文件编译 Nginx 工程,并生成目标文件、最终
    的二进制文件。

    在编译完成后,最终的 Nginx 可执行文件(通常命名为 nginx)会被放置在 objs 目录中

    安装 编译后的 nginx:

    sudo make install
    make install 命令根据 configure 执行时的参数将 Nginx 部署到指定的安装目录,包括相关目
    录的建立和二进制文件、配置文件的复制。

     在 安装目录下执行

    ./nginx -v

    nginx 官网

    nginx

     点击 右侧 

    • documentation

    选择 

    • Beginner’s Guide

    根据 指南 开始使用 nginx

     执行 nginx

     sudo ./nginx

    打开浏览器访问

    http://localhost:80

    退出:

    sudo ./nginx -s quit
     

    相关文章:

    Ubuntu环境 nginx 源码 编译安装

    ubuntu 终端 使用 wget 下载源码 sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz解压刚下载的源码压缩包 nginx-1.24.0.tar.gz sudo tar -zxvf nginx-1.24.0.tar.gz 解压完成 产生 nginx-1.24.0 目录 进入该目录 cd ./nginx-1.24.0 目录下有一个可执行文件 con…...

    K8S中的数据存储之基本存储

    基本存储类型 EmptyDir 描述:当 Pod 被调度到节点上时,Kubernetes 会为 Pod 创建一个空目录,所有在该 Pod 中的容器都可以访问这个目录。特点: 生命周期与 Pod 绑定,Pod 删除时,数据也会丢失。适用于临时…...

    编码器和扩散模型

    目录 摘要abstract1.自动编码器2.变分编码器(VAE)3.论文阅读3.1 介绍3.2 方法3.3 结论 4.总结参考文献 摘要 本周学习了自动编码器(AE)和变分自动编码器(VAE)的基本原理与实现,分析其在数据降维…...

    PAT甲级-1024 Palindromic Number

    题目 题目大意 一个非回文数,加上它的翻转数所得的和,进行k次,有可能会得到一个回文数。给出一个数n,限制相加次数为k次,如果小于k次就得到回文数,那么输出该回文数和相加的次数;如果进行k次还…...

    FS8405 Release FS0B

    复位场景:FS8405正常工作后,RSTB后期产生拉低复位信号。 1 故障与PGOOD、RSTB和FS0B引脚的联系 FS8405出现故障时,会对PGOOD、RSTB和FS0B引脚产生不同的影响,具体影响如下: 橙色标记,反应是不可配置的。…...

    IGBT的损耗计算的学习【2025/1/24】

    可以通过示波器实测IGBT电压电流波形,然后通过示波器的math功能将电压电流波形乘积后积分求损耗。 软开管:给了导通信号,但是电流并没有从此IGBT流过 IGBT(绝缘栅双极晶体管)的损耗主要分为 导通损耗 和 开关损耗 两部…...

    Unity|小游戏复刻|见缝插针1(C#)

    准备 创建Scenes场景,Scripts脚本,Prefabs预制体文件夹 修改背景颜色 选中Main Camera 找到背景 选择颜色,一种白中透黄的颜色 创建小球 将文件夹里的Circle拖入层级里 选中Circle,位置为左右居中,偏上&…...

    No.1|Godot|俄罗斯方块复刻|棋盘和初始方块的设置

    删掉基础图标新建assets、scenes、scripts文件夹 俄罗斯方块的每种方块都是由四个小方块组成的,很适合放在网格地图中 比如网格地图是宽10列,高20行 要实现网格的对齐和下落 Node2D节点 新建一个Node2D 添加2个TileMapLayer 一个命名为Board&…...

    SSM框架探秘:Spring 整合 SpringMVC 框架

    搭建和测试 SpringMVC 的开发环境&#xff1a; web.xml 元素顺序&#xff1a; 在 web.xml 中配置 DisPatcherServlet 前端控制器&#xff1a; <!-- 配置前端控制器 --> <servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>…...

    2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传

    题目来源&#xff1a;buuctf BUU UPLOAD COURSE 1 1 目录 一、打开靶机&#xff0c;查看信息 二、解题思路 step 1&#xff1a;上传一句话木马.php文件康康回显 step 2&#xff1a;蚁剑连接 三、小结 一、打开靶机&#xff0c;查看信息 这里提示到了文件会被上传到./uplo…...

    【架构面试】三、高可用高性能架构设计

    高可用高性能架构设计 面试要点引入&#xff1a;架构原理、分布式技术等是面试必考领域&#xff0c;高可用高性能需求考察频繁。面试常通过询问系统架构设计来考察能力&#xff0c;讲解架构设计过程就是证明系统高可用的过程&#xff0c;其中涉及SLA指标。SLA指标详解 定义与衡…...

    11.渲染管线——光栅化阶段

    光栅化阶段是渲染管线中的一个关键步骤&#xff0c;负责将3D模型转换成屏幕上的2D像素。用通俗易懂的方式来解释&#xff1a; 通俗解释&#xff1a;光栅化就像把3D模型“投影”到2D屏幕上 想象你是一个画家&#xff0c;正在把3D场景画到2D画布上&#xff1a; 3D模型到2D屏幕的…...

    【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

    气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…...

    二叉树的深度

    二叉树深度的定义&#xff1a; 二叉树的深度&#xff08;高度&#xff09;是指从根节点到最远叶子节点的最长路径上的节点数。例如&#xff0c;一个只有根节点的二叉树&#xff0c;其深度为1&#xff1b;如果根节点有两个子节点&#xff0c;且每个子节点又分别有两个子节点&…...

    MySQL命令及用法(精华版)

    目录 DDL&#xff08;数据定义语言&#xff09; 数据库操作 表操作 DML&#xff08;数据操作语言&#xff09; DQL&#xff08;数据查询语言&#xff09; 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL&#xff08;数据控制语言&#xff09; 用户…...

    R语言学习笔记之高效数据操作

    一、概要 数据操作是R语言的一大优势&#xff0c;用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作&#xff0c;包括排序、更新、分组汇总等。R数据操作包&#xff1a;data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具&#xff0c;可以实现快…...

    将 OneLake 数据索引到 Elasticsearch - 第二部分

    作者&#xff1a;来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分&#xff0c;第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中&#xff0c;我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…...

    Linux——冯 • 诺依曼体系结构

    目录 一、冯•诺依曼体系结构原理二、内存提高冯•诺依曼体系结构效率的方法三、当用QQ和朋友聊天时数据的流动过程四、关于冯诺依曼五、总结 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 流程&#…...

    Java进阶(一)

    目录 一.Java注解 什么是注解&#xff1f; 内置注解 元注解 二.对象克隆 什么是对象克隆? 为什么用到对象克隆 三.浅克隆深克隆 一.Java注解 什么是注解&#xff1f; java中注解(Annotation)又称java标注&#xff0c;是一种特殊的注释。 可以添加在包&#xff0c;类&…...

    appium自动化环境搭建

    一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用&#xff0c;支持多种编程语言(python&#xff0c;java&#xff0c;Ruby&#xff0c;Javascript、PHP等) 原生应用和混合应用&#xf…...

    PCL点云凹包计算实战:从2D投影到3D建模的Alpha-Shape算法解析

    1. Alpha-Shape算法&#xff1a;点云凹包计算的灵魂 第一次接触点云凹包计算时&#xff0c;我被这个看似简单实则精妙的问题难住了。传统凸包算法就像给点云套上一个紧绷的橡皮筋&#xff0c;而实际项目中我们经常需要保留物体表面的凹陷特征。这时候Alpha-Shape算法就派上了大…...

    RustFS集群部署避坑指南:我用Ansible踩过的3个坑及解决方案

    RustFS集群部署实战&#xff1a;Ansible自动化中的三大典型问题与深度解决方案 当你在凌晨三点收到集群告警通知时&#xff0c;会不会希望当初的部署方案能更健壮些&#xff1f;作为经历过数十次生产环境部署的老兵&#xff0c;我想分享那些官方文档不会告诉你的实战经验。本文…...

    无代码爬虫方案:OpenClaw调度Qwen3.5-9B解析动态网页数据

    无代码爬虫方案&#xff1a;OpenClaw调度Qwen3.5-9B解析动态网页数据 1. 为什么需要无代码爬虫&#xff1f; 作为一个经常需要从网页抓取数据的技术博主&#xff0c;我经历过太多抓取数据的痛苦时刻。传统爬虫开发需要处理反爬机制、解析动态加载内容、维护复杂的XPath或CSS选…...

    B端拓客号码核验行业:痛点剖析、技术突围与发展思考氪迹科技法人 号码筛选系统,阶梯式价格

    B端拓客的效率与质量&#xff0c;很大程度上取决于核心决策人触达的精准度&#xff0c;而企业法人、股东、董监高等群体的有效联系方式&#xff0c;正是打通这一环节的关键。作为拓客工作的前置基础性步骤&#xff0c;号码核验的质量直接关联拓客投入的回报效率&#xff0c;更是…...

    Magisk完整指南:Android设备终极Root与系统定制解决方案

    Magisk完整指南&#xff1a;Android设备终极Root与系统定制解决方案 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk Magisk是一款革命性的Android系统定制工具套件&#xff0c;它通过独特的系统无痕修改…...

    Firefox用户福音:免破解!一键安装HackBar 2.1.3旧版本完整教程

    Firefox用户福音&#xff1a;免破解&#xff01;一键安装HackBar 2.1.3旧版本完整教程 在安全测试领域&#xff0c;HackBar作为一款经典的渗透测试工具&#xff0c;长期受到开发者和安全研究人员的青睐。然而&#xff0c;随着版本的迭代更新&#xff0c;新版本开始引入许可证验…...

    优化实践:结合ResNet与CBAM注意力机制提升垃圾分类模型性能

    1. ResNet与CBAM模块技术解析 1.1 ResNet的核心设计思想 ResNet&#xff08;残差网络&#xff09;之所以能成为深度学习领域的里程碑&#xff0c;关键在于它解决了传统深度神经网络的两大痛点&#xff1a;梯度消失问题和网络退化现象。想象一下教小朋友搭积木&#xff0c;当积木…...

    SAS(Serial Attached SCSI)在企业级存储中的核心设计与实战解析

    1. SAS技术在企业级存储中的核心价值 如果你拆开过企业级存储设备&#xff0c;大概率会看到那些带着蓝色或黑色连接器的硬盘背板——这就是SAS技术的战场。作为存储架构师&#xff0c;我经手过的全闪存阵列和磁盘柜里&#xff0c;90%的核心连接都依赖SAS协议。和消费级SATA相比…...

    基于MATLAB的模拟退火粒子群算法在含分布式电源配电网多目标优化中的应用

    310.基于matlab的模拟退火粒子群算法对含分布式电源的配电网进行多目标优化&#xff0c;目标函数包括总有功网损、总投资与运行成本、电压稳定欲度。 和目标函数相关参数有单位分布式电源投资成本、运行成本&#xff0c;分布式电源设备使用年限、贴现率等。 经过优化得到最佳结…...

    OpenClaw备份策略:GLM-4.7-Flash智能管理本地与云端存储

    OpenClaw备份策略&#xff1a;GLM-4.7-Flash智能管理本地与云端存储 1. 为什么需要智能备份方案 上周我的移动硬盘突然罢工&#xff0c;导致三个月的项目文档全部丢失。这次惨痛经历让我意识到&#xff1a;传统备份方式已经无法满足现代工作需求。手动备份不仅耗时耗力&#…...