Nginx源码编译安装

Nginx

    • Nginx
      • Nginx的特点
      • Nginx的使用场景
      • Nginx 有哪些进程
    • 使用源码编译安装Nginx
      • 准备工作
      • 安装依赖包
      • 编译安装Nginx
      • 检查、启动、重启、停止 nginx服务
      • 配置 Nginx 系统服务
        • 方法一:
        • 方法二:
      • 访问Nginx页面
    • 升级Nginx
      • 准备工作
      • 编译安装新版本Nginx
      • 验证

Nginx

在这里插入图片描述

Nginx的特点

最核心的区别在于Nginx 采用异步非阻塞机制 ,多个连接可以对应一个进程;Apache 采用的是同步阻塞+多进程/线程模型,一个连接对应一个进程

  • Nginx 抗并发能力更高
  • Nginx 更轻量,内存、CPU资源消耗更少
  • Nginx 配置简洁,使用场景多,稳定性高

Nginx的使用场景

  1. 用作Web网站服务,处理http静态页面请求
  2. 用作虚拟主机,实现一个服务器用于做多个网站站点
  3. 用作反向代理、负载均衡,可以作为网关代理服务器接收客户端的请求转发给后端节点服务器集群
  4. 用作web缓存服务器

Nginx 有哪些进程

  • master进程:管理worker进程,加载配置文件
  • worker进程:处理请求连接

使用源码编译安装Nginx

准备工作

  • 关闭安全防护系统
systemctl disable firewalld.service --nowsetenforce 0SELINUX=enforcing		-->			SELINUX=0 

在这里插入图片描述
在这里插入图片描述

  • 下载源码安装包,并上传至/opt目录下
    Nginx官网
    Nginx下载页面
    在这里插入图片描述
    在这里插入图片描述

当前我选择 Nginx1.25.5,以便等会进行平滑升级到最新版本 Nginx1.26.0

使用XFTP进行文件传输——上传到/opt目录下

在这里插入图片描述

  • 解压文件到当前目录
cd /opttar xf nginx-1.25.5.tar.gzll

在这里插入图片描述

  • 创建运行用户、组
useradd -M -s /sbin/nologin nginxid nginx

在这里插入图片描述

安装依赖包

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

在这里插入图片描述

编译安装Nginx

cd /opt/nginx-1.25.5/./configure \
--prefix=/usr/local/nginx \							#指定nginx的安装路径
--user=nginx \										#指定用户名
--group=nginx \										#指定组名
--with-http_stub_status_module						#启用 http_stub_status_module 模块以支持状态统计make && make install		ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		#让系统识别nginx的操作命令

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

检查、启动、重启、停止 nginx服务

  • 检查nginx服务配置
nginx -t								#检查配置文件是否配置正确

在这里插入图片描述

  • 启动nginx服务
/usr/local/nginx/sbin/nginx	netstat -lntp | grep 80

在这里插入图片描述

  • 查看PID进程号
cat /usr/local/nginx/logs/nginx.pid##只有在运行时才能查看PID号

在这里插入图片描述

  • 停止nginx服务
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx

在这里插入图片描述

  • 重启nginx服务
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx

配置 Nginx 系统服务

方法一:
vim /etc/init.d/nginx#!/bin/bash#chkconfig: - 99 20#description:Nginx Service Control ScriptCOM="/usr/local/nginx/sbin/nginx"PID="/usr/local/nginx/logs/nginx.pid"case "$1" instart)$COM;;stop)kill -s QUIT $(cat $PID);;restart)$0 stop$0 start;;reload)kill -s HUP $(cat $PID);;*)echo "Usage: $0 {start|stop|restart|reload}"exit 1esacexit 0chmod +x /etc/init.d/nginx			#添加执行权限
chkconfig --add nginx							#添加为系统服务systemctl start nginxnetstat -lntp | grep 80

在这里插入图片描述

在这里插入图片描述

方法二:
vim /lib/systemd/system/nginx.service[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetchmod 754 /lib/systemd/system/nginx.servicesystemctl start nginx.service
systemctl enable nginx.service

说明

[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径[Install]服务安装的相关设置,可设置为多用户

在这里插入图片描述

在这里插入图片描述

访问Nginx页面

浏览器访问

http://<本机IP>:80
在这里插入图片描述

升级Nginx

准备工作

  • 查看当前安装Nginx的版本及已模块
nginx -v			#查看当前安装的Nginx版本nginx -V			#查看当前安装的Nginx已安装的模块

在这里插入图片描述

  • 下载新版本源码安装包,并上传至/opt目录下

    在这里插入图片描述

  • 解压文件到当前目录

    cd /opttar xf nginx-1.26.0.tar.gzll
    

    在这里插入图片描述

编译安装新版本Nginx

cd /opt/nginx-1.26.0/./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_modulemakemv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old		#备份老版本Nginxcp objs/nginx /usr/local/nginx/sbin/nginx	#将新版本的Nginx移动到安装目录make upgrade#要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的,而不是通过查找环境变量中那个 nginx 命令启动的
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

验证

  • 查看Nginx是否正常启动
	netstat -lntp | grep 80

在这里插入图片描述

  • 检查当前Nginx的版本
nginx -v

在这里插入图片描述

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

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

相关文章

【HarmonyOS】Stage 模型 - UIAbility 的启动模式

Stage 模型这样的应用&#xff0c;它在启动的时候会先准备 Ability Stage 舞台&#xff0c;接着呢&#xff0c;就可以基于它去创建 UIAbility 的实例&#xff0c;并去启动它。 UIAbility 组件启动模式 有四种&#xff1a; singletonstandardmultitonspecified 修改模块的 mod…

SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表

在前端页面上列表 我们首先看看前端页面 我们已经把数据传入前端控制台 再看看我们的代码是怎么写的 我们展示 数据来自图dataList 在这里 我们要把数据填进去 就能展示在前端页面上 用的是前端数据双向绑定 axios发送异步请求 函数 //钩子函数&#xff0c;VUE对象初始化…

【四大组件】-- 活动 Activity

目录 活动活动是什么活动的相关操作手动创建活动活动中使用Toast活动中使用Menu销毁一个活动 使用Intent实现活动间启动显示启动隐式启动 活动间数据传递活动的生命周期返回栈活动的状态活动的生存期 活动的启动流程活动的回收和重建如何在活动销毁前保存状态 活动的启动模式st…

设计模式(十四)行为型模式---访问者模式(visitor)

文章目录 访问者模式简介分派的分类什么是双分派&#xff1f;结构UML图具体实现UML图代码实现 优缺点 访问者模式简介 访问者模式&#xff08;visitor pattern&#xff09;是封装一些作用于某种数据结构中的元素的操作&#xff0c;它可以在不改变这个数据结构&#xff08;实现…

红队内网攻防渗透:内网渗透之windows内网权限提升技术:手工篇

红队内网攻防渗透 1. 内网权限提升技术1.1 windows内网权限提升技术--手工篇1.1.1 Web到Win-系统提权-人工操作1.1.1.1 信息收集1.1.1.2 补丁筛选1.1.1.3 EXP获取执行1.1.2 Web到Win-系统提权-土豆家族1.1.2.1 Test in:Windows 10/11(1809/21H2)1.1.2.2 Test in:Windows Se…

全新市场阶段,Partisia BlockChain 将向 RWA、DeFi 等领域布局

Partisia Blockchain 是一个全新范式的 Layer1&#xff0c;该链通过 MPC 方案来构建链上隐私方案&#xff0c;同时该链通过系列独特且创新的设计&#xff0c;旨在进一步解决目前 Web3 中所面临的不可能三角问题&#xff0c;包括安全性、互操作性和可扩展性&#xff0c;为更多的…

NTFS磁盘格式读写工具:Tuxera NTFS 2021 for Mac

Tuxera NTFS 是一款用于 macOS 系统的 NTFS 文件系统驱动程序。NTFS 是 Windows 系统中常用的文件系统&#xff0c;而 macOS 默认只支持读取 NTFS 格式的磁盘&#xff0c;不能进行写入操作。因此&#xff0c;如果你需要在 macOS 上进行 NTFS 磁盘的写入操作&#xff0c;就需要安…

提交一个Bug需要哪些信息?

软件在使用过程中存在的任何问题都叫做软件的缺陷&#xff0c;简称Bug&#xff0c;我认为要提交一个Bug首先得将这个Bug的核心内容说明一下&#xff0c;比如Bug的核心问题是什么、产生的前提、预期结果是什么、但实际结果是什么、以及附上一个证据图片。 然后提交时需要Bug报告…

【一刷《剑指Offer》】面试题 28:字符串的排列

牛客对应题目链接&#xff1a;字符串的排列_牛客题霸_牛客网 (nowcoder.com) 力扣对应题目链接&#xff1a;LCR 157. 套餐内商品的排列顺序 - 力扣&#xff08;LeetCode&#xff09; 核心考点 &#xff1a;全排列问题&#xff0c; DFS。 一、《剑指Offer》对应内容 二、分析题…

JS(DOM、事件)

DOM 概念:Document Object Model&#xff0c;文档对象模型。将标记语言的各个组成部分封装为对应的对象: Document:整个文档对象Element:元素对象Attribute:属性对象Text:文本对象Comment:注释对象 JavaScript通过DOM&#xff0c;就能够对HTML进行操作: 改变 HTML 元素的内…

Windows端口本地转发

参考 微软Netsh interface portproxy 命令 界面端口代理的 Netsh 命令 | Microsoft Learn 使用Windows系统的portproxy功能配置端口转发 使用Windows系统的portproxy功能配置端口转发-阿里云帮助中心 (aliyun.com) 将来自0.0.0.0地址对端口35623的访问转发到172.18.106.16…

SpringBoot @ModelAttribute注解的深入指南

文章目录 前言一、基本概念二、方法级别的@ModelAttribute1. 用途2. 示例三、参数级别的@ModelAttribute1. 用途2. 示例四、处理多个@ModelAttribute1. 示例五、继承与@ModelAttribute注解的结合使用1. 示例1.1 基类(父类)1.2 子类(具体控制器)<

多维数组找最大值

调用JavaScript的一个内置函数&#xff1a;Math.max() <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

虚拟机VMware Workstation 常用的快捷方式

1、 虚拟机软件&#xff0c;如 VMware Workstation、VirtualBox 等 所使用的是 VMware Workstation 2、快捷方式 2.1 切换鼠标和键盘焦点 CtrlAlt&#xff1a;从虚拟机中释放鼠标和键盘&#xff0c;回到主机 2.2 全屏模式 2.2.1 进入全屏模式: CtrlAltEnter 2.2.2 退出全…

政安晨:【Keras机器学习示例演绎】(五十一)—— 利用广义网络、深度网络和交叉网络进行结构化数据学习

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文目标&#xff1a;使用 "宽深 "和 …

Python 技能提升(三)

global 和 nonlocal b 全局变量 global variabledef foo():a 局部变量 local variable# 在局部里面操作全局变量&#xff0c;需要加上声明global bb b &#xff01;&#xff01;&#xff01;print(b)foo() # 全局变量 global variable&#xff01;&#xff01;&#xff01…

Python 递归函数一例

现有示例数据 # 示例数据 pending_join [ {increment: "department Finance", statement_index: 0}, {increment: "name Lisa", statement_index: 2}, {increment: "gender Female", statement_index: 3}, {increment: "hire_date <…

redis如何实现分布式锁

Redisson是怎么实现分布式锁的 分布式锁&#xff1a;Redisson 提供了一种简单而强大的方式来实现分布式锁。 它支持多种锁模式&#xff0c;如公平锁、可重入锁、读写锁等&#xff0c;并且提供了锁的超时设置和自动释放功能。 锁的获取 在Redisson中常见获取锁的方式有 lock() …

【代码随想录训练营】【Day 37】【贪心-4】| Leetcode 840, 406, 452

【代码随想录训练营】【Day 37】【贪心-4】| Leetcode 840, 406, 452 需强化知识点 python list sort的高阶用法&#xff0c;两个key&#xff0c;另一种逆序写法python list insert的用法 题目 860. 柠檬水找零 思路&#xff1a;注意 20 块找零&#xff0c;可以找3张5块升…

Mysql基础教程(13):GROUP BY

MySQL GROUP BY 【 GROUP BY】 子句用于将结果集根据指定的字段或者表达式进行分组。 有时候&#xff0c;我们需要将结果集按照某个维度进行汇总。这在统计数据的时候经常用到&#xff0c;考虑以下的场景&#xff1a; 按班级求取平均成绩。按学生汇总某个人的总分。按年或者…