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,一经查实,立即删除!

相关文章

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

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

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

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

全新市场阶段,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;就需要安…

【一刷《剑指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…

多维数组找最大值

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

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

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

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; 按班级求取平均成绩。按学生汇总某个人的总分。按年或者…

“世界酒中国菜”系列活动如何助推乡村振兴和文化交流?

"世界酒中国菜"系列活动如何助推乡村振兴和文化交流&#xff1f; 《经济参考报》&#xff08;2024年5月24日 第6版&#xff09; 新华社北京&#xff08;记者 张晓明&#xff09; “世界酒中国菜”系列活动自启动以来&#xff0c;已在国内外产生了广泛影响。这一国家…

mysql面试之分库分表总结

文章目录 1.为什么要分库分表2.分库分表有哪些中间件&#xff0c;不同的中间件都有什么优点和缺点&#xff1f;3.分库分表的方式(水平分库,垂直分库,水平分表,垂直分表)3.1 水平分库3.2 垂直分库3.3 水平分表3.4 垂直分表 4.分库分表带来的问题4.1 事务一致性问题4.2 跨节点关联…

强化学习中Q值的概念

在强化学习中&#xff0c;Q值是一个非常核心的概念&#xff0c;用来表示在给定的状态下&#xff0c;采取某个特定动作所期望获得的总回报。Q值基本上是一种衡量“动作价值”的方式&#xff0c;即在当前状态采取一个动作能带来多大价值。 定义和计算 Q值通常表示为 (Q(s, a))&…

RabbitMQ小结

MQ分类 Acitvemq kafka 优点&#xff1a;性能好&#xff0c;吞吐量高百万级&#xff0c;分布式&#xff0c;消息有序 缺点&#xff1a;单机超过64分区&#xff0c;cpu会飙高&#xff0c;消费失败不支持重试 &#xff0c; Rocket 阿里的mq产品 优点&#xff1a;单机吞吐量也…

香橙派 Kunpeng Pro:基于ncnn的深度学习模型量化与部署实践

一 引言 近10年里以深度学习为代表的机器学习技术在图像处理&#xff0c;语音识别&#xff0c;自然语言处理等领域里取得了非常多的突破&#xff0c;其背后的核心算法是深度学习为代表的AI基础模型。 一般来讲&#xff0c;我们进行AI项目研发时&#xff0c;遵循三个步骤。 第…

LabVIEW步进电机的串口控制方法与实现

本文介绍了在LabVIEW环境中通过串口控制步进电机的方法&#xff0c;涵盖了基本的串口通信原理、硬件连接步骤、LabVIEW编程实现以及注意事项。通过这些方法&#xff0c;用户可以实现对步进电机的精确控制&#xff0c;适用于各种自动化和运动控制应用场景。 步进电机与串口通信…

python3.8环境下安装pyqt5

1.实验目的 测试python可视化工具包pyqt5,为后期做系统前端页面做铺垫 2.实验环境 1.软件 anaconda2.5 pycharm2024.1.1 pyqt5 2.硬件 GPU 4070TI Intel I7 1400K 3. 安装步骤 (base) C:\Users\PC>conda -V conda 23.7.4(base) C:\Users\PC>conda create qttest p…