Nginx 编译安装【CentOS 7】

news2024/12/27 11:26:40
1. 前言

本文使用的操作系统:

名称描述
Oracle VM VirtualBox虚拟机软件
CentOS-7-x86_64-Minimal-2009.isoCentOS 7.9 最小化安装镜像文件

操作系统信息如下所示

 
  1. cat /etc/redhat-release

2. 源码包

进入 nginx 官网:https://nginx.org,查看最新稳定版,复制链接地址,本文使用的是当前最新稳定版本 v1.24.0

 
  1. https://nginx.org/download/nginx-1.24.0.tar.gz

3. 编译安装

本文将 nginx 源码包存放在 /usr/local/src 目录

 
  1. # 进入目录
  2. cd /usr/local/src
  3. # 下载 nginx 源码包
  4. wget https://nginx.org/download/nginx-1.24.0.tar.gz

当使用 wget 下载 nginx 源码包时,提示命令不存在。使用 yum 安装即可,然后重新使用 wget 下载 nginx 源码包

 
  1. yum install wget -y

解压 nginx 源码包,进入源码包目录,执行预编译命令

nginx 的安装目录默认是 /usr/local/nginx--prefix 配置项缺省时默认就是该目录,但不建议省略该参数选项

 
  1. tar -zxf nginx-1.24.0.tar.gz
  2. cd nginx-1.24.0
  3. ./configure --prefix=/usr/local/nginx

当预编译出现以下报错时,表示没有 gcc 编译器,使用 yum 安装即可

nginx 是使用 c 语言编写的程序,因此想要运行 nginx 就需要安装一个编译工具。gcc 就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了 c 语言,运行以下命令安装即可

 
  1. # 安装 gcc 编译器
  2. yum install gcc -y
  3. # 可通过以下命令来查看 gcc 是否安装成功
  4. gcc --version

当预编译出现以下报错时,表示缺少 pcre(兼容正则表达式库),使用 yum 安装即可

nginx 在编译过程中需要使用到 pcre 库,因为在 nginx 的 Rewrite 模块和 http 核心模块都会使用到 pcre 正则表达式语法

 
  1. # 安装 pcre 库
  2. yum install pcre pcre-devel -y
  3. # 可以通过以下命令来查看是否安装成功
  4. rpm -qa pcre pcre-devel

当预编译出现以下报错时,表示缺少 zlib,使用 yum 安装即可

zlib 库提供了开发人员的压缩算法,在 nginx 的各个模块中需要使用 gzip 压缩,所以我们也需要安装其库及源代码

 
  1. # 安装 zlib 库
  2. yum install zlib zlib-devel -y
  3. # 可以通过以下命令来查看是否安装成功
  4. rpm -qa zlib zlib-devel

当看到以下内容,表示预编译成功,目前最小化安装成功了,也就是使用最少的参数

当我们配置 SSL 证书,实现 HTTPS 访问时,会将监听的端口改为 443 ssl,重载配置发现报错了

 
  1. server {
  2. listen 443 ssl;
  3. server_name www.itqaq.com;
  4. }
 
  1. nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:36

这是因为没有安装 SSL 模块,不支持配置 SSL,运行以下命令安装即可

 
  1. # 安装 openssl 库
  2. yum install openssl openssl-devel -y
  3. # 可以通过以下命令来查看是否安装成功
  4. rpm -qa openssl openssl-devel
 
  1. ./configure --prefix=/usr/local/nginx --with-http_ssl_module

4. 安装总结

环境准备:安装 wget 和 编译 nginx 所需要的依赖包

 
  1. yum install wget -y
  2. yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

下载 nginx 源码包

 
  1. # 源码包存放目录
  2. cd /usr/local/src
  3. # 下载 nginx 源码包
  4. wget https://nginx.org/download/nginx-1.24.0.tar.gz
  5. # 解压缩 nginx 源码包
  6. tar -zxf nginx-1.24.0.tar.gz
  7. # 进入源码包目录
  8. cd nginx-1.24.0

执行编译安装

 
  1. # 预编译
  2. ./configure --prefix=/usr/local/nginx \
  3. --with-http_stub_status_module \
  4. --with-http_ssl_module
  5. # 编译并安装
  6. make && make install

当 nginx 安装成功后,/usr/local/nginx 目录内容如下所示

关闭防火墙

 
  1. # 关闭防火墙状态
  2. systemctl stop firewalld
  3. # 关闭防火墙开机自启
  4. systemctl disable firewalld
5. 启动 nginx

进入 /usr/local/nginx/sbin 目录,运行以下命令启动 nginx 服务

 
  1. # 进入 nginx 安装目录下的 sbin 目录
  2. cd /usr/local/nginx/sbin
  3. # 启动 nginx 服务,相对路径写法,./ 不能省略,表示执行 nginx 文件
  4. ./nginx

也可以使用绝对路径写法

 
  1. /usr/local/nginx/sbin/nginx

绝对路径命令比较长,可以定义命令的别名简化命令

 
  1. # 定义命令别名
  2. alias nginx=/usr/local/nginx/sbin/nginx
  3. # 使用别名控制 nginx 服务启停
  4. nginx # 启动
  5. nginx -s stop # 停止
  6. nginx -s reload # 重启

命令补充:

 
  1. ./nginx -s stop # 快速停止
  2. ./nginx -s quit # 优雅关闭,在关闭前完成已经接受的连接请求
  3. ./nginx -s reload # 重新加载配置

使用 curl 命令测试访问,看到以下内容说明启动成功

 
  1. curl 127.0.0.1

6. 关闭防火墙

通过以下命令查看虚拟主机的局域网 IP

 
  1. ip addr | grep 192.168

目前局域网内其他电脑无法访问虚拟主机,如下所示,这是因为防火墙是开启状态

运行以下命令,即可关闭防火墙,如果只是使用虚拟机进行测试,可以直接关闭防火墙

在正式环境中,可以开启防火墙,只需要开放相应端口即可。https://www.lengleng.net

 
  1. # 查看防火墙状态(running|not running)
  2. firewall-cmd --state
  3. # 关闭防火墙状态
  4. systemctl stop firewalld
  5. # 关闭防火墙开机自启
  6. systemctl disable firewalld

此时,就可以发现能访问了

7. 设置系统服务

创建服务脚本

 
  1. vi /usr/lib/systemd/system/nginx.service

服务脚本内容

 
  1. [Unit]
  2. Description=nginx - web server
  3. After=network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
  7. ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  8. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  9. ExecStop=/usr/local/nginx/sbin/nginx -s quit
  10. PrivateTmp=true
  11. [Install]
  12. WantedBy=multi-user.target

运行以下命令,创建的 nginx 系统服务生效

 
  1. # 重新加载系统服务
  2. systemctl daemon-reload

nginx 系统服务相关命令,可以更加方便的管理 nginx 服务

 
  1. # 查看 nginx 服务状态
  2. systemctl status nginx
  3. # 启动 nginx 服务
  4. systemctl start nginx
  5. # 关闭 nginx 服务
  6. systemctl stop nginx
  7. # 重载 nginx 配置
  8. systemctl reload nginx
  9. # 启用 nginx 服务开机自启
  10. systemctl enable nginx
  11. # 关闭 nginx 服务开机自启
  12. systemctl disable nginx
8. 卸载 nginx

步骤一:停止 nginx 服务

 
  1. /usr/local/nginx/sbin/nginx -s stop

步骤二:将安装的 nginx 删除

 
  1. rm -rf /usr/local/nginx

步骤三:将安装包之前编译的环境清除掉

 
  1. cd /usr/local/src/nginx-1.24.0
  2. make clean

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL B树 和B+数据的区别

MySQL B树 和B数据的区别 树分类:二叉树完全二叉树满二叉树堆红黑树 B树B树 首先我们搞清楚数据结构中的 树这个概念 树 分类: 二叉树 限定每个节点的子节点最多只有2个子节点,且有左右之分。完全二叉树 满二叉树 堆 红黑树 B树 B树 …

深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

前言 本期给大家分享介绍如何基于滑动窗方法进行数据样本增强 背景 深度学习模型训练需要大量的样本。在故障诊断领域,每个类别大都会达到300个样本。但是在实际公开数据集中,以CWRU数据集为例,每个类别只有24组数据,这明显是不…

拓扑排序_和邻接表

首先认识邻接表,两种写法一种原始写法相当复杂,一种二维vector写法稍简单,邻接表,意思就是,该节点的下一个节点有哪些. 首先来看原始写法,记住下面这张图 可以看到这就是原始的邻接表,我们需要三个数组,终点数组e[],上一条边的索引位置fr[],和辅助数组h[],h[i]表示上一条i为起…

【面试经典150 | 】最长递增子序列

文章目录 Tag题目来源解题思路方法一:动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 300. 最长递增子序列 解题思路 方法一:动态规划 定义状态 dp[i] 表示以位置 i 对应整数为末尾的最长递增子序列的长度。 状态转移 我们从小到大计算 dp…

SpringBoot实现RabbitMQ的简单队列(SpringAMQP 实现简单队列)

文章目录 1. 前言2. Basic Queue 简单队列模型2.1 父工程导入依赖2.2 消息发送2.2.1 消息发送方必要的配置2.2.2 发消息 3. 消息接收3.1 消息接收方必要的配置3.2 接收消息 1. 前言 SpringAMQP 是基于 RabbitMQ 封装的一套模板,并且还利用 SpringBoot 对其实现了自…

【教程】iOS 手机抓包工具介绍及教程

📱 最近又发现APP Store一款宝藏软件,克魔助手抓包工具,app刚上架,功能不断迭代中,目前18软妹币实惠价可享受终身版!现在是下手的最好时机。 引言 移动端开发中,抓包工具已成为必备的工具之一…

数据库 05-05 优化

01.查询优化的概念 02.例子:优化关系代数 转换关系代数: 03.优化查询执行计划 04.这些都是查询优化器,详细介绍: 一. 等价表达式 等价规则: 01. 02. 03. 04. E1 X E2 是全部笛卡尔积 什么是自然连…

c++的学习之路:5、类和对象(1)

一、面向对象和面向过程 在说这个定义时,我就拿c语言举例,在c语言写程序的时候,基本上就是缺什么函数,就去手搓一个函数,写的程序也只是调用函数的,而c就是基于面向对象的开发,他关注的不再是单…

AXI Memory Mapped to PCI Express 学习笔记(五)—— Test Bench

本文包含有关Vivado Design Suite环境中提供的测试平台(Test Bench)的信息。 一、Endpoint的Root Port模型测试平台 PCI Express Root Port Model是一个强大的测试平台环境,它提供了一个测试程序接口,可以与提供的PIO设计&#…

【技术】实现MES系统与其他系统集成的关键步骤和技术

在当今数字化的制造环境中,MES系统(制造执行系统)已成为企业提高生产效率和管理水平的重要工具。然而,要实现MES系统与其他系统的集成,充分发挥其潜力,并非易事。本文将探讨实现MES系统与其他系统集成的关键…

Matplotlib数据可视化实战-2绘制折线图(2)

2.11营业额可视化 已知某学校附近一个烧烤店2022年每个月的营业额如下图所示。编写程序绘制折线图对该烧烤店全年营业额进行可视化,使用红色点画线连接每个月的数据,并在每个月的数据处使用三角形进行标记。 烧烤店营业额 月份123456789101112营业额/万…

8.HelloWorld小案例

文章目录 一、Java程序开发运行流程如何理解编译? 二、HelloWorld案例的编写1、新建文本文档文件,修改名称为HelloWorld.java。2、用记事本打开HelloWorld.java文件,输写程序内容。代码要跟我编写的完全保持一致。3、ctrl s 保存&#xff0c…

基于springboot实现图书个性化推荐系统项目【项目源码+论文说明】

基于springboot实现图书个性化推荐系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

【vue3学习笔记(二)】(第141-143节)初识setup;ref函数_处理基本类型;ref函数_处理对象类型

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 本篇内容对应课程第141-143节 课程 P141节 《初识setup》笔记 1、setup是所有组合式API“表演的舞台”,组件中所用到的所有数据、方法、监视数据、生命周期钩子等都需要配置在setup中。 2、setup的两种返回值&…

技术导读 | 如何为SecOps插上AI的翅膀

随着数字经济的蓬勃发展,数据安全和网络安全的重要性日益凸显。在数字经济时代,数据已成为企业的核心资产,而网络安全则是保障数据安全的基石。然而,面对不断变化的攻击模式、扩大的攻击面以及日益复杂的安全事件,许多…

国内IP切换软件:解锁网络世界的新钥匙

在数字化快速发展的今天,互联网已成为我们生活中不可或缺的一部分。然而,伴随着网络使用的深入,许多用户逐渐意识到,不同的IP地址可能会带来截然不同的网络体验。为了应对这一问题,国内IP切换软件应运而生,…

阿里云倚天服务器是什么?倚天服务器c8y、g8y和r8y详细介绍

阿里云倚天云服务器CPU采用倚天710处理器,租用倚天服务器c8y、g8y和r8y可以享受优惠价格,阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持: 阿里云倚天云服务…

证书(公钥):网络安全的关键

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【软考】UML中的图之状态图

目录 1. 说明2. 图示 1. 说明 1.状态图(State Diagram)展现了一个状态机。2.由状态、转换、事件和活动组成。3.关注系统的动态视图。4.对于接口、类和协作的行为建模尤为重要。5.强调对象行为的事件顺序。6.通常包括简单状态和组合状态、转换&#xff0…

TensorRT的两种INT8量化方式: QTA, PTQ

TensorRT的两种INT8量化方式: QTA, PTQ 深度学习 (DL) 模型的训练阶段包括学习大量密集的浮点权重矩阵,这导致推理过程中需要进行大量的浮点计算。 研究表明,可以通过强制某些权重为零来跳过其中许多计算,而对最终精度的影响很小。 与此同时…