Nginx源码编译安装

news2024/11/18 8:51:26

Nginx

    • Nginx
      • Nginx的特点
      • Nginx的使用场景
      • Nginx 有哪些进程
      • root 和 alias 指定路径的区别
        • root(根目录)
        • alias(别名目录、虚拟目录)
    • 使用源码编译安装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进程:处理请求连接

root 和 alias 指定路径的区别

root(根目录)

处理方式: root路径+location路径

例:

#nginx.conf 配置示例
location /abc {
    root /var/www;
}



url访问:
http://<IP>/abc/kfc/test.html


test.html文件存放在
/var/www/abc/kfc/test.html



http://IP地址/abc/kfc/test.html ------>> /var/www/abc/kfc/test.html

alias(别名目录、虚拟目录)

alias路径替换location路径

例:

#nginx.conf 配置示例
location /abc {
    alias /var/www;
}



url访问:
http://<IP>/abc/kfc/test.html


test.html文件存放在
/var/www/kfc/test.html



http://IP地址/abc/kfc/test.html ------>> /var/www/kfc/test.html

使用源码编译安装Nginx

准备工作

  • 关闭安全防护系统
systemctl disable firewalld.service --now

setenforce 0

	SELINUX=enforcing		-->			SELINUX=0 

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

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

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

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

在这里插入图片描述

  • 解压文件到当前目录
cd /opt

tar xf nginx-1.25.5.tar.gz

ll

在这里插入图片描述

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

id 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 Script
	COM="/usr/local/nginx/sbin/nginx"
	PID="/usr/local/nginx/logs/nginx.pid"
	case "$1" in
	start)
	  $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 1
	
	esac
	exit 0


chmod +x /etc/init.d/nginx			#添加执行权限
chkconfig --add nginx							#添加为系统服务


systemctl start nginx

netstat -lntp | grep 80

在这里插入图片描述

在这里插入图片描述

方法二:
vim /lib/systemd/system/nginx.service
	[Unit]
	Description=nginx
	After=network.target
	[Service]
	Type=forking
	PIDFile=/usr/local/nginx/logs/nginx.pid
	ExecStart=/usr/local/nginx/sbin/nginx
	ExecReload=/bin/kill -s HUP $MAINPID
	ExecStop=/bin/kill -s QUIT $MAINPID
	PrivateTmp=true
	[Install]
	WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service


systemctl 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 /opt
    
    tar xf nginx-1.26.0.tar.gz
    
    ll
    

    在这里插入图片描述

编译安装新版本Nginx

cd /opt/nginx-1.26.0/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_module

make


mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old		#备份老版本Nginx

cp 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.coloradmin.cn/o/1792272.html

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

相关文章

【JavaEE】留言板与图书管理系统

目录 留言板1. 准备工作2. 约定前后端交互接口lombok3. 服务器代码4. 调整前端页面代码 图书管理系统1. 准备工作2. 约定前后端交互接口3. 服务器代码4. 调整前端页面代码 留言板 需求: 界⾯如下图所⽰ 输⼊留⾔信息, 点击提交. 后端把数据存储起来.⻚⾯展⽰输⼊的表⽩墙的信…

用单链表实现集合

一、实验题目 &#xff08;1&#xff09;实验题目 用单链表实现集合 &#xff08;2&#xff09;问题描述 用有序单链表实现集合的判等、交、并和差等基本运算。 二、实验内容 &#xff08;1&#xff09;采用有序单链表存储集合&#xff1b; &#xff08;2&#xff09;实现交…

vue实现pdf下载——html2canvas

html2canvas 官方文档https://html2canvas.hertzen.com/getting-started html2canvas 的原理是通过遍历DOM树,将每一个HTML元素转化为Canvas对象,并叠加到一起形成一张完整的图片或者PDF文件。 1. 安装插件 npm install html2canvas jspdf --save 2.使用&#xff08;页面已经…

PVE安装虚拟主机

本文记录PVE安装其他虚拟主机的步骤&#xff0c;以安装win-server为例。裸机安装PVE则不是本文主题。 准备文件 获取Windows系统镜像 win server镜像可以从官网获取普通Windows镜像可从MSDN获取此外&#xff0c;安装Windows系统还需要从PVE下载特殊驱动 获取Windows必要驱动 …

网络安全形势与WAF技术分享

我一个朋友的网站&#xff0c;5月份时候被攻击了&#xff0c;然后他找我帮忙看看&#xff0c;我看他的网站、网上查资料&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;最近几年这网络安全形势真是不容乐观&#xff0c;在网上查了一下资料&#xff0c;1、中国信息通…

【网络安全的神秘世界】web应用程序安全与风险

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 第一章&#xff1a;web应用程序安全与风险 web攻击基础知识 1、什么是web应用攻击 web攻击的本质&#xff0c;就是通过http协议篡改应用程序&#xff0…

手撸 串口交互命令行 及 AT应用层协议解析框架

在嵌入式系统开发中&#xff0c;命令行接口&#xff08;CLI&#xff09;和AT命令解析是常见的需求。CLI提供了方便的调试接口&#xff0c;而AT命令则常用于模块间的通信控制。本文将介绍如何手动实现一个串口交互的命令行及AT应用层协议解析框架&#xff0c;适用于FreeRTOS系统…

机器学习多场景实战

机器学习已不再局限于理论探讨&#xff0c;而是广泛渗透到我们生活的方方面面&#xff0c;成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品&#xff0c;到金融风控领域精准识别欺诈交易&#xff1b;每一个应用场景都是机器学习技…

Spring Boot项目中,如何在yml配置文件中读取maven pom.xml文件中的properties标签下的属性值

一、前言 在最近的项目开发过程中&#xff0c;有一个需求&#xff0c;需要在Spring Boot项目的yml配置文件中读取到mave的 pom.xml文件中的properties标签下的属性值&#xff0c;这个要怎么实现呢&#xff1f; 二、技术实践 pom.xml文件中增加测试属性 <properties><…

【数据结构】筛选法建堆

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

Golang | Leetcode Golang题解之第134题加油站

题目&#xff1a; 题解&#xff1a; func canCompleteCircuit(gas []int, cost []int) int {for i, n : 0, len(gas); i < n; {sumOfGas, sumOfCost, cnt : 0, 0, 0for cnt < n {j : (i cnt) % nsumOfGas gas[j]sumOfCost cost[j]if sumOfCost > sumOfGas {break}…

Android 14.0 Settings主页面去掉自定义您的设备等菜单相关功能

1.前言 在14.0的系统rom产品定制化开发中,在系统Settings主页面的主菜单中,在测试某些功能的时候,比如开启护眼模式和改变系统密度会在主菜单第一项的网络菜单头部增加 自定义您的设备和设置护眼模式时间安排 等等相关的设置模块 这对于菜单布局显示相当不美观,所以根据系…

TSR,FSR,DLSS超级分辨率的原理分析

先了解一些时域抗锯齿的方法&#xff1a; TAA&#xff1a; 抖动 TAA 的主要原理是跨帧计算多个子像素样本&#xff0c;然后将它们组合成一个最终像素。最简单的方案是在像素内生成随机样本&#xff0c;但有更好的方法来生成固定序列的样本。选择一个好的序列以避免聚集非常重…

MacOS 安装C语言版TensorFlow

文章目录 安装C语言版TensorFlow解压归档环境变量c_api.hC语言示例 安装C语言版TensorFlow 官方文档&#xff1a;https://tensorflow.google.cn/install/lang_c?hlzh-cnTensorFlow 提供了一个 C API&#xff0c;该 API 可用于为其他语言构建绑定。该 API 在 c_api.h 中定义&a…

我有点想用JDK17了

大家好呀&#xff0c;我是summo&#xff0c;JDK版本升级的非常快&#xff0c;现在已经到JDK20了。JDK版本虽多&#xff0c;但应用最广泛的还得是JDK8&#xff0c;正所谓“他发任他发&#xff0c;我用Java8”。 其实我也不太想升级JDK版本&#xff0c;感觉投入高&#xff0c;收…

【TB作品】 51单片机8x8点阵显示滚动汉字仿真

功能 题目5基于51单片机LED8x8点阵显示 流水灯 直接滚动显示HELLO 直接滚动显示老师好 代码 void main( void ) {/** 移位后&#xff0c;右边的是第一个595&#xff0c;接收0X02&#xff0c;显示出0X02* 移位后&#xff0c;左边的是第2个595&#xff0c;接收0Xfe&#xff0c…

C++结合OpenCV进行图像处理与分类

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

人工智能任务5-高级算法工程师需要学习哪些课程与掌握哪些能力

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能的任务5-高级算法工程师需要学习哪些课程&#xff0c;需要掌握哪些能力。高级算法工程师需要掌握的算法模型有&#xff1a;人脸检测模型MTCNN&#xff0c;人脸识别方法Siamese network、center loss、softm…

在VSCode中安装python

引言 Python 是一种广泛使用的高级编程语言&#xff0c;因其易学、易用、强大而受到欢迎。它由 Guido van Rossum 于 1991 年首次发布&#xff0c;并以简洁的语法和丰富的库生态系统而著称。 以下是 Python 的一些关键特点和优势&#xff1a; 关键特点 易于学习和使用&#x…

AWS的EC2之间ping不通,服务之间不通,怎么办

AWS启动的两个EC2实例&#xff0c;互相访问不了 修改安全组规则&#xff0c;添加ICMP 流量的入站规则 参考&#xff1a;AWS的EC2之间ping不通,服务之间不通,怎么办_aws ec2同一个区域的服务器-CSDN博客