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命令做了大量的“幕后”工作,包括检测操作系统内核和已经安装的软件,参数的解析,
中间目录的生成以及根据各种参数生成一些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 命令还有问题
还缺少一些东西
如果我们在配置文件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 库用于对 HTTP 包的内容做 gzip 格式的压缩,如果我们在 nginx.conf 里配置了 gzip on , 并指定对于某些类型( content-type )的 HTTP 响应使用 gzip 来进行压缩以减少网络传输量,那么,在编译时就必须把 zlib 编译进 Nginx 。
zlib1g
和zlib1g-dev
是在基于 Debian 的 Linux 发行版(如 Ubuntu)中使用的两个软件包,分别提供了 zlib 库的运行时和开发时支持。
zlib1g:
- 这是 zlib 库的运行时版本,涵盖了用于数据压缩和解压缩的核心功能。
- 安装这个包后,系统上的应用程序就可以使用 zlib 的功能进行数据压缩。
- 例如,许多应用程序和库(如 Nginx 或 Apache)在运行时都依赖于 zlib 来处理 gzip 压缩数据。
zlib1g-dev:
- 这个包包含了 zlib 库的开发文件,包括头文件和用于编译的静态库或共享库。
- 安装这个包后,开发者可以在自己的程序中包含 zlib 的头文件,并将其链接到 zlib 库。
- 这对于编写应用程序或编译依赖 zlib 的软件包是必需的。
安装 zlib库
sudo apt install -y zlib1g zlib1g-dev
如果我们的服务器不只是要支持 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
包中通常包括以下内容:
- 编译器:如
gcc
(GNU Compiler Collection)和g++
(GNU C++ Compiler)。- 构建工具:如
make
,用于自动化构建过程。- 库和头文件:基本的开发库和头文件,提供编译时所需的支持。
安装
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 的开发环境: web.xml 元素顺序: 在 web.xml 中配置 DisPatcherServlet 前端控制器: <!-- 配置前端控制器 --> <servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>…...

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

【架构面试】三、高可用高性能架构设计
高可用高性能架构设计 面试要点引入:架构原理、分布式技术等是面试必考领域,高可用高性能需求考察频繁。面试常通过询问系统架构设计来考察能力,讲解架构设计过程就是证明系统高可用的过程,其中涉及SLA指标。SLA指标详解 定义与衡…...
11.渲染管线——光栅化阶段
光栅化阶段是渲染管线中的一个关键步骤,负责将3D模型转换成屏幕上的2D像素。用通俗易懂的方式来解释: 通俗解释:光栅化就像把3D模型“投影”到2D屏幕上 想象你是一个画家,正在把3D场景画到2D画布上: 3D模型到2D屏幕的…...

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...
二叉树的深度
二叉树深度的定义: 二叉树的深度(高度)是指从根节点到最远叶子节点的最长路径上的节点数。例如,一个只有根节点的二叉树,其深度为1;如果根节点有两个子节点,且每个子节点又分别有两个子节点&…...
MySQL命令及用法(精华版)
目录 DDL(数据定义语言) 数据库操作 表操作 DML(数据操作语言) DQL(数据查询语言) 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL(数据控制语言) 用户…...

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

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

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

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

appium自动化环境搭建
一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用,支持多种编程语言(python,java,Ruby,Javascript、PHP等) 原生应用和混合应用…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

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

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

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