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 讲》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132504.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python算法练习 10.12

leetcode 649 Dota2参议院 Dota2 的世界里有两个阵营&#xff1a;Radiant&#xff08;天辉&#xff09;和 Dire&#xff08;夜魇&#xff09; Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每…

掌动智能:UI自动化测试工具几点优势

UI自动化测试工具在现代软件开发中扮演着重要的角色&#xff0c;它们能够有效地验证应用程序的用户界面&#xff0c;确保其在不同平台和设备上的正常运行。本文将介绍掌动智能UI自动化测试工具的优势有哪些! 掌动智能UI自动化测试工具优势 1、零成本入门 自然语言编写&#xff…

2023年中国划船机产量、销量及市场规模分析[图]

划船机是一种健身器材&#xff0c;它模拟了划船的运动&#xff0c;可以锻炼身体的肌肉力量和协调性。划船机通常由座椅、把手、脚踏板和传动装置组成&#xff0c;使用者可以通过拉动把手来模拟划船的动作&#xff0c;从而达到锻炼身体的目的。 划船机产业链 资料来源&#xff…

聊聊分布式架构05——[NIO基础]BIO到NIO的演进

目录 I/O I/O模型 BIO示例 BIO与NIO比较 NIO的三大核心 NIO核心之缓冲区 Buffer常用子类&#xff1a; Buffer常用API Buffer中的重要概念 NIO核心之通道 FileChannel 类 FileChannel常用方法 NIO核心之选择器 概述 应用 NIO非阻塞原理分析 服务端流程 客户端…

ESP32-S3上手开发

1、搭建开发环境 首先搭建开发环境&#xff0c;这里采用了windows下集成开发环境ide进行开发&#xff0c;具体的安装方法&#xff1a;ESP-IDF安装配置 这里使用的乐鑫的esp32s3&#xff0c;N16R8 2、esp32s3模块 从上面图中可以看到&#xff0c;N16R8这里使用了外扩16M的fl…

将网站域名访问从http升级到https(腾讯云/阿里云)

文章目录 1.前提说明2.服务器安装 docker 与 nginx2.1 安装 docker&#x1f340; 基于 centos 的安装&#x1f340; 基于ubuntu 2.2 配置阿里云国内加速器&#x1f340; 找到相应页面&#x1f340; 创建 docker 目录&#x1f340; 创建 daemon.json 文件&#x1f340; 重新加载…

基于工业5G网关的工业机器人监测控制方案

随着智能制造、自动化生产的发展进步&#xff0c;工业机器人的身影越来越多地出现在工厂现场&#xff0c;成为新型无人化、智能化生产制造的中坚力量。 工业机器人的运行伴生着海量的数据采集、传输、分析和反馈执行&#xff0c;因此也需要高速、低延迟的5G网络&#xff0c;支撑…

基于SpringBoot的健身房管理系统

目录 前言 一、技术栈 二、系统功能介绍 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步…

PowerManagerServcie

PowerManagerServcie&#xff08;PMS&#xff09; 1. 电源管理架构2.电源管理4个层次3.电源管理服务 - PowerManagerService 1. 电源管理架构 PowerManagerService是android系统电源管理的核心服务。 PowerManagerService继承自SystemService,在SystemServer的main()方法中&am…

Python 单元测试设置

单元测试检查特定代码单元或模块是否按照开发人员的预期执行。 大多数时候&#xff0c;我们测试的代码单元是一个函数。 同样&#xff0c;我们可以测试所有功能。 作为最佳实践&#xff0c;至少在开发过程中&#xff0c;我们应该进行单元测试。 因此&#xff0c;在开发过程的…

windows创建服务:更新服务信息乱码问题(ChangeServiceConfig)

因为小项目需要创建windows服务&#xff0c;安装微软官方示例一切都挺顺利&#xff0c;代码运行后发现配置的信息在系统里显示乱码。打开注册表发现的确是乱码。这就排除软件读取得问题&#xff0c;而是调用ChangeServiceConfig系统函数写入时就发生了乱码。让我在网上查找了一…

读书笔记-《ON JAVA 中文版》-摘要26[第二十三章 注解]

文章目录 第二十三章 注解1. 基本语法1.1 基本语法1.2 定义注解1.3 元注解 2. 编写注解处理器2.1 编写注解处理器2.2 注解元素2.3 默认值限制 3. 使用javac处理注解4. 基于注解的单元测试5. 本章小结 第二十三章 注解 注解&#xff08;也被称为元数据&#xff09;为我们在代码…