当前位置: 首页 > 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…...

    SEO_避开这些常见误区,让你的SEO效果翻倍

    <h2>避开这些常见误区&#xff0c;让你的SEO效果翻倍</h2> <p>在当今的互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为了每个网站和博客运营者必须掌握的技能之一。许多人在进行SEO时却会犯一些常见的错误&#xff0c;这些错误不仅…...

    Swift-All镜像入门:手把手教你快速部署,无需配置轻松上手

    Swift-All镜像入门&#xff1a;手把手教你快速部署&#xff0c;无需配置轻松上手 想体验600大模型和300多模态模型的强大能力&#xff0c;却被复杂的安装配置劝退&#xff1f;Swift-All镜像就是为你准备的"开箱即用"解决方案。本文将带你从零开始&#xff0c;一步步…...

    LVGL字体扩展避坑指南:freetype缓存管理导致的内存泄漏问题排查实录

    LVGL字体扩展深度解析&#xff1a;如何规避freetype缓存管理中的内存泄漏陷阱 在嵌入式GUI开发中&#xff0c;LVGL结合freetype的动态字体加载功能为多语言支持提供了强大支持&#xff0c;但这也带来了内存管理的复杂性。本文将深入探讨一个典型场景&#xff1a;当项目需要频繁…...

    【AI应用开发】-Agent 思考时间那么长,怎么优化前端的用户体验?

    Agent 思考时间那么长&#xff0c;怎么优化前端的用户体验&#xff1f; 文章目录Agent 思考时间那么长&#xff0c;怎么优化前端的用户体验&#xff1f;前言&#xff1a;让等待变成一种享受一、核心策略&#xff1a;透明化 可视化二、实现方案一&#xff1a;Stream 流式输出2.…...

    ArcMap地图数字化实战:从加载地形图到保存成果的完整流程(附常见问题解决)

    ArcMap地图数字化实战&#xff1a;从加载地形图到保存成果的完整流程&#xff08;附常见问题解决&#xff09; 在GIS领域&#xff0c;地图数字化是将纸质地图或图像转换为计算机可识别和处理的数字格式的基础工作。这项技能不仅是GIS专业学生的必修课&#xff0c;也是城市规划、…...

    从“变速齿轮”到“创新引擎”:解码阿里“大中台、小前台”战略的演进与实战

    1. 中台战略的起源与本质 第一次听说"大中台、小前台"这个概念时&#xff0c;我正坐在杭州一家咖啡馆里和几位阿里P8的技术专家聊天。他们用了一个特别形象的比喻&#xff1a;"现在的互联网公司就像一辆老式自行车&#xff0c;前台是拼命蹬车的双腿&#xff0c;…...

    避开这5个坑!VS2019+Doxygen注释实战:从代码规范到HTML文档生成

    VS2019Doxygen注释实战&#xff1a;5个典型陷阱与高效解决方案 在C项目开发中&#xff0c;良好的代码文档是团队协作的基石。Visual Studio 2019与Doxygen的组合为开发者提供了强大的自动化文档生成能力&#xff0c;但许多团队在实际应用中常陷入一些看似简单却影响深远的陷阱。…...

    解决Docker容器中英伟达GPU驱动报错:nvidia-container-toolkit安装指南

    1. 为什么Docker容器无法识别英伟达GPU&#xff1f; 最近在帮朋友调试一个深度学习项目时&#xff0c;遇到了一个典型问题&#xff1a;当尝试在Docker容器中运行需要GPU加速的应用时&#xff0c;系统报错提示无法找到NVIDIA驱动。错误信息是这样的&#xff1a; Error response …...

    Python 3.15 JIT为何在Docker中静默禁用?揭开musl libc与libffi-3.4.6 ABI不兼容的致命链

    第一章&#xff1a;Python 3.15 JIT 的设计目标与 Docker 场景适配性Python 3.15 引入的实验性 JIT&#xff08;Just-In-Time&#xff09;编译器并非追求通用性能提升&#xff0c;而是聚焦于特定高价值场景——尤其是容器化微服务中反复执行的 CPU 密集型工作负载。其核心设计目…...

    手把手教你用PHPStudy部署彩虹云商城二开版(2025修复完整版,含自动对接与漏洞修复)

    零基础实战&#xff1a;PHPStudy环境下的彩虹云商城完整部署指南&#xff08;2025安全强化版&#xff09; 在个人站长和电商创业者的圈子里&#xff0c;彩虹云商城系统一直以其轻量化和易用性备受青睐。最近接触到的这个2025修复版&#xff0c;不仅保留了原系统的核心优势&…...