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

Linux实操笔记2 Ubuntu安装Nginx的不同方法

今天来了解Ubuntu或者说Linux系统安装Nginx的几种办法。包括从Ubuntu的库安装到官方源码编译安装。

一、Nginx是什么?

以下是来自Nginx中文文档的内容。

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。

这是Nginx的优势。

具体能做到什么以及怎么做到还需要后续学习。

Nginx能做什么?

  1. 基本 HTTP 服务器功能
  2. 其他 HTTP 服务器功能
  3. 邮件代理服务器功能
  4. TCP/UDP 代理服务器功能

要看更具体的介绍:

nginx

Nginx的平台

Nginx支持大部分的常用操作系统尤其是咱们作为服务器使用的系统。

你不仅可以在Ubuntu使用它,也可以在CentOs,Windows上使用它。是的。你可以就在Windows系统上使用它。你可以访问Nginx官网下载它。 

你可以在自己Windows系统上体验它,但是如果你想要做点更酷的事情,我建议还是使用Ubuntu或者CentOs,乃至于WindowsServer等服务器来部署它,至少你可以更轻松的让世界上的其他人访问它。

Nginx的功能非常强大,值得我们去了解它的细节。

在知道它的功能之后不是说咱们立刻就会用了,可以研究其代码,阅读它的文档,以及一些中文的书籍。

最新的消息:你可以访问Nginx官网去了解以下现在Nginx的情况。

nginx news

二、Nginx怎么安装

Nginx事实上支持很多的操作系统,有多重安装方式,我们来看看怎么个回事。

预先给出下面的链接:

github上的Nginx项目。

GitHub - nginx/nginx: The official NGINX Open Source repository.

Windows选择版本下载。

nginx: download

编译安装Nginx的文档

Building nginx from Sources

1、从存储仓库下载安装

在新机器上首次安装 nginx 之前,您需要 设置 nginx 包存储库。 之后,您可以从存储库安装和更新 nginx。

你可以从官方仓库也可以从Ubuntu软件仓库下载安装。涉及到的知识点不多,比较适合我们这样的初学者。

官方源:

下载配套工具

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

 这些工具包感兴趣的话可以一个个去了解具体是做什么的。这里简要说明一下:

curl用来下载网络资源,gnupg2用来校验资源,ca-certificates用来校验https证书,lsb-release用来获取版本信息,ubuntu-keyring用来验证ubuntu软件仓库公钥。

获取签名密钥

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

验证下载的文件是否包含正确密钥 

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

 将仓库版本设置为稳定版本:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \| sudo tee /etc/apt/sources.list.d/nginx.list

命令解释: 

添加 Nginx 官方仓库:这条命令将 Nginx 官方的 APT 仓库添加到系统中,具体的仓库地址根据你当前系统的版本自动调整。例如,如果你运行的是 Ubuntu 22.04,lsb_release -cs 会返回 jammy,所以仓库地址将会是 http://nginx.org/packages/ubuntu jammy nginx。

使用指定的签名密钥:仓库源中指定的 [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg],确保 APT 包管理器会使用 nginx-archive-keyring.gpg 来验证从 Nginx 官方仓库下载的软件包的签名。

保存仓库地址:最终,仓库源地址被保存到 /etc/apt/sources.list.d/nginx.list 文件中。APT 包管理器会从这个文件中读取 Nginx 仓库的地址,以便安装和更新 Nginx。

其实这里就是对源进行了更换。 

 也可以设置为主线版本:和上面二选一即可。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \| sudo tee /etc/apt/sources.list.d/nginx.list

设置仓库优先级:

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \| sudo tee /etc/apt/preferences.d/99nginx

之后就可以进行常规的安装了:

sudo apt update
sudo apt install nginx

Ubuntu软件仓库

如果你从Ubuntu软件仓库下载,这将是最简单的一部分。

sudo apt update
sudo apt install nginx

可以使用下述代码检测是否正常工作。 

sudo systemctl status nginx

 

2、代码编译安装

这种手段就和我们Windows平时安装软件一样,去官网下载安装包然后安装?但是我们下的是源代码,需要进行编译。

官网直接下载

当然上面给出的nginx的windows安装链接就是从这里下载,不过Ubuntu就麻烦许多了,下载下来可不能直接跑哇。

5f469495596641fdaee6f83ef800214b.png

Mainline、Stable 和 Legacy 是 Nginx 官方维护的三个版本分支,每个分支都有不同的更新频率和使用场景,适用于不同需求的用户。它们的主要区别在于开发阶段、功能和稳定性。 

 mainline是最活跃的分发版本。是最新的版本,可能具有最新的功能,也不是一定不稳定。

stable就字面意思理解:稳定版本,是长期维护或者说当前的稳定版本,这个分支不包含最新的功能,更新也比较少,最重视稳定性和安全性。

legacy版本是旧版本,或者说遗留版本,与我们使用的目的不同有关,提供给需要指定版本的nginx的用户。

下载下来之后,你会得到一个压缩包。

这个压缩包解压后可以用来编译代码。

c711e08e79584598a05f621dd82ad98f.png

这个包可以在后面用到。 

 pgp是什么?

PGP (Pretty Good Privacy) 是一种广泛使用的加密程序,主要用于 加密电子邮件数字签名,以保护通信的隐私和真实性。PGP 结合了对称加密和非对称加密,并广泛应用于数据加密和解密、身份验证和文件完整性验证。

编译安装

下载工具:

在之前建议先更新一下仓库哈:

sudo apt-get update
apt-get install build-essential
apt-get install libtool

选定源码目录:

cd /usr/local/src

 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz 
tar -zxvf pcre-8.34.tar.gz
cd pcre-8.34
./configure
make
make install

下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib:

cd /usr/local/srcwget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install

安装ssl;

cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz

Nginx有两个版本,分别是稳定版和开发版,可以根据你的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到/usr/local/nginx 目录下:注意这里的wget获取的就是nginx的版本代码包,如果你已经下载了其他的版本的代码包,可以直接解压你下载好的包。

版本列表:

Index of /download/ (nginx.org)

cd /usr/local/src
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2

编译选项以及构建最终安装 

./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.34 \
--with-zlib=/usr/local/src/zlib-1.2.8 \
--with-openssl=/usr/local/src/openssl-1.0.1cmake
make install

 下面这个更全:

./configure \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat  \ --with-pcre-jit makemake install

编译的选项可以参照下面链接: 

从源构建 nginx

自己编译安装会更加自由,但是对初学者不是很友好。

三、 检查Nginx状态

检查端口状态: 

netstat -ano|grep 80

启动nginx: 

sudo /usr/local/nginx/nginx

 

 

相关文章:

Linux实操笔记2 Ubuntu安装Nginx的不同方法

今天来了解Ubuntu或者说Linux系统安装Nginx的几种办法。包括从Ubuntu的库安装到官方源码编译安装。 一、Nginx是什么? 以下是来自Nginx中文文档的内容。 Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比…...

QCustomPlot笔记(一)

文章目录 简介将帮助文档添加到Qt Creator中编译共享库cmake工程编译提示ui_mainwindow.h找不到qcustomplot.h文件 环境:windowsQt Creator 10.0.1cmake 简介 QT中用于绘制曲线的第三方工具 下载地址:https://www.qcustomplot.com/index.php/download 第一个压缩…...

【机器学习】多模态AI——融合多种数据源的智能系统

随着人工智能的快速发展,单一模态(如文本、图像或语音)已经不能满足复杂任务的需求。多模态AI(Multimodal AI)通过结合多种数据源(如文本、图像、音频等)来提升模型的智能和表现,适用…...

QT学习与数据库连接

1.基础 1. 安装最后一个非在线版本 5.14, 没有的话联系我 新建一个.cpp文件 #include <QApplication> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> #include <QVBoxLayout> #include <Q…...

泛读笔记:从Word2Vec到BERT

自然语言处理(NLP)模型的发展历史 1.统计方法时期&#xff1a;使用贝叶斯方法、隐马尔可夫模型、概率模型等传统统计方法 2.机器学习时期&#xff1a;支持向量机(SVM)、决策树模型、随机森林、朴素贝叶斯等传统机器学习方法 3.深度学习革命&#xff1a;各种新的深度学习模型&am…...

redis实现分布式锁详细教程,可续锁(看门狗)、可重入

前言 本文将讨论的做一个高并发场景下避不开的话题&#xff0c;即redis分布式锁。比如在淘宝 的秒杀场景、热点新闻和热搜排行榜等。可见分布式锁是一个程序员面向高级的一门必修课&#xff0c;下面请跟着本篇文章好好学习。 redis分布式锁有哪些面试题 1.Redis做分布式的时…...

代码随想录打卡Day32

今天有点事&#xff0c;先做一题&#xff0c;剩下的明天补。 509. 斐波那契数 这道题目太简单了&#xff0c;递归几行代码就结束了&#xff0c;用动态规划做也可以&#xff0c;主要是学习一下动态规划五部曲。 这是递归的代码 class Solution { public:int fib(int n) {//确…...

数学学习记录

目录 学习资源&#xff1a; 9月14日 1.映射&#xff1a;​编辑 2.函数: 9月15日 3.反函数&#xff1a; 4.收敛数列的性质 5.反三角函数&#xff1a; 9月16日 6.函数的极限&#xff1a; 7.无穷小和无穷大 极限运算法则&#xff1a; 学习资源&#xff1a; 3Blue1…...

R语言统计分析——散点图1(常规图)

参考资料&#xff1a;R语言实战【第2版】 R语言中创建散点图的基础函数是plot(x,y)&#xff0c;其中&#xff0c;x和y是数值型向量&#xff0c;代表着图形中的&#xff08;x,y&#xff09;坐标点。 attach(mtcars) plot(wt,mpg,main"Basic Scatter plot of MPG vs. Weigh…...

蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)

新建工程教程见http://t.csdnimg.cn/JySLg 点亮LED教程见http://t.csdnimg.cn/Urlj5 末尾含所有代码 目录 按键原理图 一、按键使用需要解决的问题 1.抖动 1.什么是抖动 2.抖动类型 3.如何去消除抖动 FIRST.延时函数消抖&#xff08;缺点&#xff1a;浪费CPU资源&#xff…...

基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示&#xff0c;设置电流阈值为80&#xff0c;电流小阈值为50&#xff0c;电压阈值为60&#xff0c;温度阈值…...

Linux - iptables防火墙

目录 一、iptables概述 二、规则表与规则链结构&#xff08;四表五链&#xff09; 1.简述 2.四表&#xff08;规则表&#xff09; 3.五链&#xff08;规则链&#xff09; 三、数据链过滤的匹配流程 四、iptables命令行配置方法 1.命令格式 2.基本匹配条件 3.隐含匹配 …...

【C语言零基础入门篇 - 3】:格式化输入输出、字符操作和sizeof运算符揭秘

文章目录 格式化输入与输出格式化输入输出演示基本格式化输入输出 字符的输入输出sizeof运算符 格式化输入与输出 什么是数据的输出? 计算机向输出设备输出数据 什么是数据的输入? 从输入设备向计算机输入数据 #include<stdio.h>&#xff1a;标准的输入输出库&#…...

JVM字节码与局部变量表

文章目录 局部变量表javap字节码指令分类 指令指令数据类型前缀加载和存储指令加载常量算术指令其他指令 字节码示例说明 局部变量表 每个线程的帧栈是独立的&#xff0c;每个线程中的方法调用会产生栈帧&#xff0c;栈帧中保存着方法执行的信息&#xff0c;例如局部变量表。 …...

Java许可政策再变,Oracle JDK 17 免费期将结束!

原文地址&#xff1a;https://www.infoworld.com/article/3478122/get-ready-for-more-java-licensing-changes.html Oracle JDK 17的许可协议将于9月变更回Oracle Technology Network License Agreement&#xff0c;这将迫使用户重新评估他们的使用策略。 有句老话说&#xf…...

网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作

目录 一、理论基础 1.1 网页交互模拟的重要性 1.2 网页交互的基本原理 二、常用工具介绍 2.1 Selenium 2.2 Puppeteer 2.3 Cypress 2.4 TestCafe 三、实战案例 3.1 模拟用户输入 3.2 模拟用户点击 3.3 模拟用户选择 3.4 模拟滚动操作 四、最佳实践与优化 4.1 代…...

C sharp 学习 笔记

介绍 这篇文章是我学习C#语言的笔记 学的是哔哩哔哩刘铁锰老师2014年的课程 在学习C#之前已经学习过C语言了。看的是哔哩哔哩比特鹏哥的课程。他们讲的都很不错 正在更新&#xff0c; 大家可以在我的gitee仓库中下载笔记源文件、项目资料等 笔记源文件可以在Notion中导入…...

文章资讯职场话题网站源码整站资源自带2000+数据

介绍&#xff1a; 数据有点多&#xff0c;数据资源包比较大&#xff0c;压缩后还有250m左右。值钱的是数据&#xff0c;网站上传后直接可用&#xff0c;爽飞了 环境&#xff1a;NGINX1.18 mysql5.6 php7.2 代码下载...

c++ templates常用函数

说明 c templates学习中会遇到大量的模版常用函数&#xff0c;书上不会详细介绍&#xff0c;查看一个之后要永久记录一段时间之后再看看&#xff0c;这里总结一下。 undeclared(); undeclared();//若undeclared();未定义&#xff0c;则在第一阶段编译时报错 undeclared(t);…...

【重学 MySQL】三十一、字符串函数

【重学 MySQL】三十一、字符串函数 函数名称用法描述ASCII(S)返回字符串S中的第一个字符的ASCII码值CHAR_LENGTH(s)返回字符串s的字符数&#xff0c;与CHARACTER_LENGTH(s)相同LENGTH(s)返回字符串s的字节数&#xff0c;和字符集有关CONCAT(s1,s2,…,sn)连接s1,s2,…,sn为一个字…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...