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

    2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

    2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

    FastAPI 教程:从入门到实践

    FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

    Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

    Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

    汇编常见指令

    汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

    3403. 从盒子中找出字典序最大的字符串 I

    3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

    Mobile ALOHA全身模仿学习

    一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

    中医有效性探讨

    文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

    作为测试我们应该关注redis哪些方面

    1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

    git: early EOF

    macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

    vue3 daterange正则踩坑

    <el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...