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

Ubuntu 20.04使用源码安装nginx 1.14.0

nginx安装及使用(详细版)是一篇参考博文。

http://nginx.org/download/可以选择下载源码的版本。

在这里插入图片描述

sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。
在这里插入图片描述

sudo tar xzf nginx-1.14.0.tar.gz进行解压。
在这里插入图片描述

cd nginx-1.14.0进入到源代码目录里边。
在这里插入图片描述

ls -l看一下当前源码目录里边有什么文件。
在这里插入图片描述

ls -l auto可以看一下auto目录有什么文件,而在auto目录里有cc目录(用于编译),lib目录(存放库),os目录(对操作系统的判断)等。
在这里插入图片描述

nginx-1.14.0目录里边CHANGES文件就是写明了当前版本中有什么改变,sudo wc -l CHANGES可以看到此文件中有8069行。
在这里插入图片描述
head -n 12 CHANGES可以看一下前12行内容。
在这里插入图片描述

CHANGES.ru是俄罗斯语的CHANGES文件。

conf目录里边是配置文件,ls -l conf可以看一下配置目录的配置文件。
在这里插入图片描述

configure可执行文件有两个作用:

1.选定编译特性;
2.检查编译环境,是否有编译时所需的库,以及库的版本是否满足编译的需要等。

在这里插入图片描述

contrib目录里边有一些脚本和工具,典型的是vim高亮工具。
在这里插入图片描述

sudo vim conf/nginx.conf打开文件之后可以看到毫无高亮。
在这里插入图片描述

输入:q!
在这里插入图片描述

然后再按Enter之后退出vim
在这里插入图片描述

sudo mkdir ~/.vim/在当前用户的家目录下创建一个.vim目录,然后sudo cp -r contrib/vim/* ~/.vim/contrib/vim/目录下所有的文件都转移到~/.vim/目录下边。
在这里插入图片描述

sudo mkdir /nginx在根目录下创建一个nginx的目录。
在这里插入图片描述

sudo ./configure --prefix=/nginx指定安装目录为/nginx,然后开始检查编译环境。
在这里插入图片描述

完成之后发现报错如下:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

在这里插入图片描述
《./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the mo》是解决方法参考的博客。

sudo apt-get install libpcre3 libpcre3-dev安装依赖包,发现报错如下:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libpcre3-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another sourceE: Package 'libpcre3-dev' has no installation candidate

在这里插入图片描述

我这里执行sudo apt update
在这里插入图片描述

完成之后如下图:
在这里插入图片描述

sudo apt install -y libpcre3 libpcre3-dev安装依赖包。
在这里插入图片描述

sudo ./configure --prefix=/nginx指定安装目录为/nginx,然后再次开始检查编译环境。
在这里插入图片描述

完成之后如下图:
在这里插入图片描述

sudo make进行编译。
在这里插入图片描述

发现报错如下:

src/os/unix/ngx_user.c: In function ‘ngx_libc_crypt’:
src/os/unix/ngx_user.c:26:7: error: ‘struct crypt_data’ has no member named ‘current_salt’26 |     cd.current_salt[0] = ~salt[0];|       ^
make[1]: *** [objs/Makefile:781: objs/src/os/unix/ngx_user.o] Error 1
make[1]: Leaving directory '/root/nginx-1.14.0'
make: *** [Makefile:8: build] Error 2

在这里插入图片描述

《linux异常(四):nginx1.6 |struct crypt_data’ has no member named ‘current_salt’ |[objs/Makefile:473》是我解决问题参考的博客。

sed -i 's#cd.current_salt\[0\] = ~salt\[0\]\;#/* cd.current_salt\[0\] = ~salt\[0\]\; */#' src/os/unix/ngx_user.ccd.current_salt[0] = ~salt[0];注释掉。
在这里插入图片描述

sudo make再次编译。
在这里插入图片描述

报错如下:

src/http/ngx_http_script.c: In function ‘ngx_http_script_add_copy_code’:
src/http/ngx_http_script.c:698:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]698 |     code->code = (ngx_http_script_code_pt) ngx_http_script_copy_len_code;|                  ^
src/http/ngx_http_script.c: In function ‘ngx_http_script_add_var_code’:
src/http/ngx_http_script.c:787:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]787 |     code->code = (ngx_http_script_code_pt) ngx_http_script_copy_var_len_code;|                  ^
src/http/ngx_http_script.c: In function ‘ngx_http_script_add_capture_code’:
src/http/ngx_http_script.c:1181:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]1181 |     code->code = (ngx_http_script_code_pt)|                  ^
src/http/ngx_http_script.c: In function ‘ngx_http_script_add_full_name_code’:
src/http/ngx_http_script.c:1296:18: error: cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *){aka ‘long unsigned int (*)(struct <anonymous> *)} to ‘void (*)(ngx_http_script_engine_t *){aka ‘void (*)(struct <anonymous> *)} [-Werror=cast-function-type]1296 |     code->code = (ngx_http_script_code_pt) ngx_http_script_full_name_len_code;|                  ^
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:886: objs/src/http/ngx_http_script.o] Error 1
make[1]: Leaving directory '/root/nginx-1.14.0'
make: *** [Makefile:8: build] Error 2

在这里插入图片描述

参考《Nginx安装时make部分报错解决 类型装换异常 不兼容》解决。

sed -i 's/-Werror//g' objs/Makefile-Werror去掉。
在这里插入图片描述

sudo make再次编译。
在这里插入图片描述

完成之后如下图:
在这里插入图片描述

sudo make install进行安装。
在这里插入图片描述

sudo vim /etc/profilePATH=${PATH}:/nginx/sbin添加到最后一行。
在这里插入图片描述

source /etc/profile使配置生效。
在这里插入图片描述

nginx -v显示nginx version: nginx/1.14.0就是安装成功了。
在这里插入图片描述

此文章为10月Day 7学习笔记,内容来源于极客时间《Nginx 核心知识 150 讲》

相关文章:

Ubuntu 20.04使用源码安装nginx 1.14.0

nginx安装及使用&#xff08;详细版&#xff09;是一篇参考博文。 http://nginx.org/download/可以选择下载源码的版本。 sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。 sudo tar xzf nginx-1.14.0.tar.gz进行解压。 cd nginx-1.14.0进入到源代码…...

springboot框架拦截器中HttpServletRequest 请求如何区分是图片上传流还是普通的字符流?

在Spring Boot框架中的拦截器&#xff08;Interceptor&#xff09;中&#xff0c;可以通过检查Content-Type请求头来区分图片上传流和普通的字符流。 当客户端发送POST请求并携带文件时&#xff0c;Content-Type请求头通常会包含multipart/form-data或者类似的值。这表明该请求…...

简单聊聊 TCP 协议

简单聊聊 TCP 协议 如何实现可靠传输 ?完全可靠存在比特差错存在丢包流水线可靠数据传输协议回退N步 (GBN)选择重传 (ARQ) 小结 TCPTCP 连接报文段结构序号和确认号 可靠数据传输避免重传超时时间加倍快速重传回退N步还是选择重传 流量控制连接管理拥塞控制拥塞原因拥塞控制方…...

钡铼BL124PN:简单快速转换Profinet到Ethernet/IP

钡铼技术BL124PN是一款高性能的Profinet转Ethernet/IP网关设备。该网关专为工业自动化领域设计&#xff0c;用于实现不同协议之间的互连和通信。BL124PN采用可靠稳定的硬件和先进的通信技术&#xff0c;具有以下主要特点&#xff1a; 协议转换能力&#xff1a;BL124PN能够将Pr…...

【golang】go 空结构体 详解 空结构体内容占用及大小

一、空结构体基础 空结构实例 和 空结构体变量 本质是一样的 1、所有空结构体地址都是一样的2、大小都为0&#xff08;最独特的&#xff09; package mainimport ("fmt""time""unsafe" )type EST struct { }func main() {// 一、基础// 空结构…...

身为产品经理该如何向客户推广API商品数据接口

在当今数字化的时代&#xff0c;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;已成为各种软件应用程序之间交互数据的主要方式。API商品数据接口作为一种特殊类型的API&#xff0c;能够让不同的系统之间共享商品数据&#xff0c;…...

【数据结构】460. LFU 缓存

460. LFU 缓存 解题思路 get操作 返回key对应的val 然后增加对应的freq插入操作 如果key已经存在 直接进行更新 如果不存在 但是容器已经满了 直接进行删除freq最小的Key 之后进行插入 class LFUCache {// key到 val的映射 KVHashMap<Integer,Integer> keyToVal;// …...

文字转语音播报模块(一):阿里云nls服务使用示例

一、业务场景 最近笔者在业务中涉及到语音告警的模块&#xff0c;需要讲告警内容以文件或流形式返回给前端进行语音播报&#xff0c;具体的分析与处理如下 二、业务分析 首先告警内容提示信息这里做的处理是通过专门字段去存储、编辑&#xff0c;根据拟定好的代码逻辑判断是…...

Vscode配置C#编程环境(win10)

目录 1、安装好Vscode 2、下载安装.NetCore SDK 3、配置C#环境 3.1 打开Vscode并下载扩展 3.2 Vscode中打开文件夹并配置环境 3.3 调试运行 1、安装好Vscode 2、下载安装.NetCore SDK 官网如下&#xff0c;下载完成后双击打开一路走到底就行.NetCore SDK官网 软件显示安…...

python:xlrd 读取 Excel文件,显示在 tkinterTable 表格中

pip install xlrd xlrd-1.2.0-py2.py3-none-any.whl (103 kB) 摘要: Library for developers to extract data from Microsoft Excel (tm) spreadsheet files pip install tkinterTable tkintertable-1.3.3.tar.gz (58 kB) 摘要: Extendable table class for Tkinter 源代…...

深度学习——深度学习计算一

深度学习——深度学习计算一 文章目录 前言一、层和块1.1. 自定义块1.2. 顺序块1.3. 在前向传播函数中执行代码1.4. 小结 二、参数管理2.1. 参数访问2.1.1. 目标参数2.1.2. 一次性访问所有参数2.1.3. 从嵌套块收集参数 2.2. 参数初始化2.2.1. 内置初始化2.2.2. 自定义初始化 2.…...

yolov5及yolov7实战之剪枝

之前有讲过一次yolov5的剪枝&#xff1a;yolov5实战之模型剪枝_yolov5模型剪枝-CSDN博客 当时基于的是比较老的yolov5版本&#xff0c;剪枝对整个训练代码的改动也比较多。最近发现一个比较好用的剪枝库&#xff0c;可以在不怎么改动原有训练代码的情况下&#xff0c;实现剪枝的…...

力扣第257题 二叉树的所有路径 c++ 树 深度优先搜索 字符串 回溯 二叉树

题目 257. 二叉树的所有路径 简单 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2-&g…...

保研之旅·终

一.背景 学校&#xff1a; 中211 通信工程专业 成绩&#xff1a; 绩点前3% 英语&#xff1a; CET4&#xff1a;523 CET6&#xff1a;505 竞赛&#xff1a;两个国奖&#xff0c;若干省奖 科研&#xff1a;两项校级大创&#xff0c;无论文产出 二.基本情况 夏令营入营: 哈工大…...

达梦数据库 视图 错误 [22003]: 数据溢出

今天通过DBeaver连接访问达梦数据库的一个视图&#xff0c;报错&#xff1a;错误 [22003]: 数据溢出 经过分析&#xff0c;原因是视图字段的数据类型和原表的数据类型不一致造成的...

【文献阅读】【NMI 2022】LocalTransform :基于广义模板的有机反应性准确预测图神经网络

预测有机反应产物是有机化学的一个基本问题。基于成熟有机化学知识&#xff0c;化学家现在能够设计实验来制造用于不同目的的新分子。但是&#xff0c;它需要经验丰富的专业化学家来准确预测化学反应的结果。为了进一步帮助有机化学家并在数字化学时代实现全自动发现&#xff0…...

QQ浏览器怎么才能设置默认搜索引擎为百度

问题&#xff1a; 打开QQ浏览器&#xff0c;搜索相关信息时发现总是默认为”搜狗搜索引擎“&#xff0c;想将其转为”百度搜索引擎“ 解决&#xff1a; 1、点击浏览器右侧”菜单“图标&#xff0c;选择”设置“&#xff0c;如下图所示&#xff1a; 2、在”常规设置“中的”搜…...

Go Gin Gorm Casbin权限管理实现 - 3. 实现Gin鉴权中间件

文章目录 0. 背景1. 准备工作2. gin中间件2.1 中间件代码2.2 中间件使用2.3 测试中间件使用结果 3. 添加权限管理API3.1 获取所有用户3.2 获取所有角色组3.3 获取所有角色组的策略3.4 修改角色组策略3.5 删除角色组策略3.6 添加用户到组3.7 从组中删除用户3.8 测试API 4. 最终目…...

js 封装一个异步任务函数

// 异步任务 封装 // 1,定义函数 // 2&#xff0c;使用核心api(queueMicrotask,MutationObserver,setTimeout) function runAsynctask (callback){if(typeof queueMicrotask "function" ){queueMicrotask(callback)}else if( typeof MutationObserver "functio…...

目标检测YOLO实战应用案例100讲-基于无人机航拍图像的目标检测

目录 前言 国内外研究现状 目标检测研究现状 无人机航拍目标检测研究现状...

PyQt5配置踩坑

安装步骤比较简单&#xff0c;这里只说一下我踩的坑&#xff0c;以及希望一些大佬可以给点建议。 一、QtDesigner 这个配置比较简单&#xff0c;直接就能用&#xff0c;我的配置如下图&#xff1a; C:\Users\lenovo\AppData\Roaming\Python\Python311\site-packages\qt5_app…...

内网渗透笔记之内网基础知识

0x01 内网概述 内网也指局域网&#xff08;Local Area Network&#xff0c;LAN&#xff09;是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的历程安排、电子邮件和传真通信服务等功能。 内…...

vue3+elementPlus:el-select选择器里添加按钮button

vue3elementPlus&#xff1a;el-select选择器里添加按钮button&#xff0c;在el-select的option后面添加button //html <el-select class"selectIcon" value-key"id" v-model"store.state.HeaderfilterText" multiple collapse-tagscollapse-…...

Android 模拟点击

Android 模拟点击 1.通过代码的方式实现 通过模拟MotionEvent的方式实现 //----------------模拟点击--------------------- private void simulateClick(View view, float x, float y) {long downTime SystemClock.uptimeMillis();final MotionEvent downEvent MotionEve…...

css自学框架之选项卡

这一节我们学习切换选项卡&#xff0c;两种切换方式&#xff0c;一种是单击切换选项&#xff0c;一种是鼠标滑动切换&#xff0c;通过参数来控制&#xff0c;切换方法。 一、参数 属性默认值描述tabBar.myth-tab-header span鼠标触发区域tabCon.myth-tab-content主体区域cla…...

Element Plus组件库中的input组件如何点击查看按钮时不可编辑,点击编辑时可编辑使用setup

如果你正在使用 Vue 3 和 Composition API&#xff0c;你可以使用 setup 函数来实现 Element Plus 的 Input 组件在点击查看按钮时不可编辑&#xff0c;点击编辑按钮时可编辑的功能。 以下是一个使用 setup 的示例代码&#xff1a; <template><div><el-input …...

小米、华为、iPhone、OPPO、vivo如何在手机让几张图拼成一张?

现在很多手机自带的相册APP已经有这个拼图功能了。 华为手机的拼图 打开图库&#xff0c;选定需要拼图的几张图片后&#xff0c;点击底部的【创作】&#xff0c;然后选择【拼图】就可以将多张图片按照自己想要的位置&#xff0c;组合在一起。 OPPO手机的拼图 打开相册&#…...

物联网AI MicroPython传感器学习 之 WS2812 RGB点阵灯环

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 ws2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同&#xff0c;每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路&a…...

【GPU常见概念】GPU常见概念及分类简述

随着大模型和人工智能的爆火&#xff0c;大家对GPU的关注持续上升&#xff0c;本文简单简述下GPU经常用的概念。 GPU&#xff08;图形处理器&#xff09;&#xff0c;又称显示核心、视觉处理器、显示芯片&#xff0c;是一种专门在个人电脑、工作站、游戏机和一些移动设备&…...

JVM篇---第九篇

系列文章目录 文章目录 系列文章目录一、什么是指针碰撞&#xff1f;二、什么是空闲列表三、什么是TLAB&#xff1f; 一、什么是指针碰撞&#xff1f; 一般情况下&#xff0c;JVM的对象都放在堆内存中&#xff08;发生逃逸分析除外&#xff09;。当类加载检查通过后&#xff0…...

小程序推广网站/百度网络推广怎么收费

中石油校内的比赛&#xff0c;只能后续补题了&#xff0c;题目来说还是比较的不错 A 数方格&#xff08;思维&#xff09; 规定了都是正方形&#xff0c;那么枚举就可以一行的按照规律也好枚举列数也好枚举 代码 #include <bits/stdc.h> using namespace std; int main()…...

网站关键词基础排名怎么做/东莞网络营销优化

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…...

wordpress中文连接/赣州网站建设

本文转载自知乎《Pandas | 一文看懂透视表pivot_table》&#xff0c;在原文基础上略有增删改。感谢原作者非常生动的例子。 目录 一、概述 1.1 什么是透视表&#xff1f; 1.2 为什么要使用pivot_table&#xff1f; 二、如何使用pivot_table 2.1 读取数据 2.2 Index 2.3 …...

申请免费网站域名/百度信息流投放

企业电脑监控软件是以桌面管理软件以终端监控系统为依托的&#xff0c;在统一的管理平台系统中集成了终端管理、网络管理、内容管理、资产管理等诸多功能的综合性电脑监控软件。 网管家电脑监控软件采用主动发现和主动防御的方式&#xff0c;对信息资产进行管理&#xff0c;以终…...

十大网页设计网站/襄阳seo推广

递归法总体来说&#xff0c;递归法是从最后一个Node开始&#xff0c;在弹栈的过程中将指针顺序置换的。递归法实现图为了方便理解&#xff0c;我们以 1->2->3->4这个链表来做演示。输出的效果是4->3->2->1首先定义Node&#xff1a;packagecn.liuhaihua;publi…...

做网站还有价值吗/seo排名快速上升

有一个需求需要将前端传过来的10张照片&#xff0c;然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的&#xff0c;所以就直接上网找了一个例子改了一下用了&#xff0c;改完以后也能使用&#xff0c;但是随着前端所传图片的大小越来越…...