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

    RestClient

    什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

    日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

    在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

    OpenLayers 可视化之热力图

    注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

    Vue记事本应用实现教程

    文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

    2025盘古石杯决赛【手机取证】

    前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

    NFT模式:数字资产确权与链游经济系统构建

    NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

    python报错No module named ‘tensorflow.keras‘

    是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

    Kafka入门-生产者

    生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

    python爬虫——气象数据爬取

    一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

    【LeetCode】算法详解#6 ---除自身以外数组的乘积

    1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...