NGINX安装升级

nginx介绍

Nginx的版本分为开发版、稳定版和过期版,nginx以功能丰富著称,它即可以作为http服务器,也可以作为反向代理服务器或者邮件服务器,也可以作为反向代理服务器或者邮件服务器,能够快速的响应静态网页的请求,支持FastCGI/SSL/Virtual Host/URL Rwrite/Gzip/HTTP Basic Auth/http或者TCP的负载均衡(1.9版本以上且开启stream模块)等功能,并且支持第三方的功能扩展
 

nginx功能

  • 静态的web资源服务器html,图片,js,css,txt等静态资源
  • http/https协议的反向代理 7层
  • 结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求
  • tcp/udp协议的请求转发(反向代理) 4层

nginx进程结构

  • 多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务器资源耗尽而无法提供请求。
  • 多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程来个客户方进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定
     

nginx模块

核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

Stream服务模块: 实现反向代理功能,包括TCP协议代理

第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

nginx安装与使用

yum安装nginx

http://nginx.org/en/linux_packages.html #官网
yum install -y epel-release  #安装epel源
yum install nginx -y  #安装nginx
编译安装nginx
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安装依赖包   
useradd -M -s /sbin/nologin nginx
#新建nginx用户便于管理cd /opt/
wget http://nginx.org/download/nginx-1.18.0.tar.gz#官网下载安装包
tar xf nginx-1.18.0.tar.gz #解压软件包
cd nginx-1.18.0/
mkdir /apps/nginx -p./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_modulemake -j2&&make install  # 编译安装chown -R nginx.nginx /apps/nginx
#修改权限/apps/nginx/sbin/nginx#绝对路径启动
ln -s /apps/nginx/sbin/nginx /usr/sbin/ #创建软连接后直接 nginx启动conf:保存nginx所有的配置文件
html目录中保存了nginx服务器的web文件
logs:用来保存nginx服务器的访问日志错误日志等日志
sbin:保存nginx二进制启动脚本
将nginx添加系统服务
vim /usr/lib/systemd/system/nginx.service  #建立.service文件[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid #注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf #注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]systemc	
WantedBy=multi-user.target
通过脚本运行启动
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 #添加为系统服务
chkconfig --list nginxservice nginx start 
service nginx stop #哪个开启用那个关闭
systemctl stop nginx
systemctl start nginx
修改pid文件位置
mkdir /apps/nginx/run/ #创建目录
vim /apps/nginx/conf/nginx.conf #修改配置文件
pid   /apps/nginx/run/nginx.pid; #找到 pid的位置修改  
systemctl daemon-reload  #重新加载配置
nginx信号使用
nginx -h/? #帮助
nginx -v #显示版本号
nginx -V  #显示编译详细信息情况 模块等信息
nginx -s   stop   #立即关闭nginx
nginx -s   quit   #不影响业务的状态下退出
nginx -s   reload #重新加载 
nginx -s   reopen #分割日志
nginx -g 'user zhangsan;'   #以张三身份运行,默认是以nginx身份
nginx -g 'daemon off;'    #前台运行命令
nginx -t  #检查语法格式
nginx -T  #打印配置文件
nginx -c 文件 #指明加载配置文件分割日志
[root@node2 nginx]cd /var/log/nginx/
#切换到
[root@node2 nginx]mv access.log access.log.bak
[root@node2 nginx]touch access.log
#此时日志不会写入到新文件
[root@node2 nginx]ps aux |grep nginx
[root@node2 nginx]kill -s  USR1 117994
[root@node2 nginx]nginx -s reopen 
平滑升级
  1. 将旧Nginx文件换成新Nginx文件(注意备份)
  2. 向master进程发送USR2信号
  3. master进程修改pid文件名,加后缀.oldbin
  4. master进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务
  5. 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止,并删除Nginx.pid.oldbin文件
  6. 向旧master进程发送QUIT信号,关闭老master
  7. 如果发现升级有问题,可以回滚向老master发送HUP,向新master发送QUIT
     
[root@localhost ~]ps aux |grep nginx #先查看是否开启nginx
[root@localhost ~]vim /apps/nginx/conf/nginx.conf
#开启 两核
#user  nobody;
worker_processes  2;  #worker_processes  1 原来是1核
[root@localhost ~]ln -s /apps/nginx/sbin/nginx /usr/bin/
[root@localhost ~]nginx -s reload  #重新加载配置文件
[root@localhost ~]wget https://nginx.org/download/nginx-1.20.2.tar.gz -P /usr/local/src/   #下载安装包到src目录
[root@localhost ~]cd /usr/local/src
[root@localhost src]tar xf nginx-1.20.2.tar.gz #解压
[root@localhost src]cd nginx-1.20.2/
[root@localhost nginx-1.20.2]nginx -V  #查看详细信息
[root@localhost nginx-1.20.2]./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module  #重新编译
[root@localhost nginx-1.20.2]make  #不要make install
[root@localhost objs]cd objs #此文件夹中有新版本的nginx  运行程序
[root@localhost objs]./nginx -v #查看版本
nginx version: nginx/1.20.2
[root@localhost objs]mv /apps/nginx/sbin/nginx   /apps/nginx/sbin/nginx.bak  #将低版本的nginx主程序改名
[root@localhost objs]cp /usr/local/src/nginx-1.20.2/objs/nginx /apps/nginx/sbin/  #将新版本 拷入进去
[root@localhost objs]/apps/nginx/sbin/nginx -t  #检查语法问题
[root@localhost nginx]kill -USR2 `cat /apps/nginx/logs/nginx.pid` #发送信号[root@localhost nginx]dd if=/dev/zero of=/apps/nginx/html/m.img bs=1G count=10  #校验
[root@localhost nginx]wget --limit-rate=1M http://192.168.65.110/m.img  #开启新机器下载
[root@localhost nginx]ss -ntap|grep 80  #查看进程管理下载
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=8850,fd=6),("nginx",pid=8849,fd=6),("nginx",pid=8848,fd=6),("nginx",pid=5489,fd=6),("nginx",pid=5488,fd=6),("nginx",pid=5146,fd=6))
ESTAB      0      0      192.168.65.110:22                 192.168.65.1:59680               users:(("sshd",pid=1785,fd=3))
ESTAB      0      461224 192.168.65.110:80                 192.168.65.103:38450               users:(("nginx",pid=5488,fd=3))[root@localhost nginx]ls /apps/nginx/logs/  #有新老两个进程
access.log  error.log  nginx.pid  nginx.pid.oldbin[root@localhost nginx]cat /apps/nginx/logs/nginx.pid.oldbin 
5146
[root@localhost nginx]kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`  #关闭老进程[root@localhost nginx]#pstree -p |grep nginx  #查看老进程|-nginx(5146)---nginx(8848)-+-nginx(8849)|                           `-nginx(8850)

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

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

相关文章

vue+django 开发环境跨域前后端联调配置

vue环境是127.0.0.1:8080,django环境是127.0.0.1:8000 要解决url相对路径和Axios跨域权限问题。 注意:程序发起了一个 POST 请求,但请求的 URL 没有以斜杠结尾。Django 默认设置是无法执行重定向到带斜杠 URL的。例如:url http:/…

远传智能水表一般应用于哪些场景?

远传智能水表是一种在水表领域应用广泛的创新技术,它利用物联网和无线通信技术使水表具备了远程监测和数据传输的能力。这种智能水表的应用场景多种多样,可适用于各个领域和环境。那么,远传智能水表一般应用于哪些场景呢? 首先&am…

ElasticSearch之Refresh API

使用本方法,显式的执行refresh操作。 默认情况下,ElasticSearch启动后台任务,周期性执行refresh操作,周期使用参数index.refresh_interval控制。 本方法触发的refresh为同步操作,运行完毕之后才会返回任务的执行结果。…

CPU密集型和IO密集型任务

1. CPU密集型任务 1.1 定义 CPU密集型任务是指在任务执行过程中,主要由计算操作占用大部分时间,而不是等待外部资源的任务类型。 1.2 特点 计算密集性: 需要大量的数学运算、逻辑判断和数据处理。高CPU利用率: 任务执行期间&a…

9.关于Java的程序设计-基于Springboot的家政平台管理系统设计与实现

摘要 随着社会的进步和生活水平的提高,家政服务作为一种重要的生活服务方式逐渐受到人们的关注。本研究基于Spring Boot框架,设计并实现了一种家政平台管理系统,旨在提供一个便捷高效的家政服务管理解决方案。系统涵盖了用户注册登录、家政服…

mybatis数据输出-map类型输出

1、建库建表 create table emp (empNo varchar(10) null,empName varchar(100) null,sal int null,deptno varchar(10) null ); 2、pom.xml <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis<…

氧化性低密度脂蛋白抗体原料——博迈伦生物

氧化性低密度脂蛋白抗体原料——博迈伦生物 引言 氧化性低密度脂蛋白&#xff08;oxLDL&#xff09;是动脉粥样硬化等心血管疾病的关键因素之一。抗体作为诊断和研究工具&#xff0c;在oxLDL的检测和相关疾病的研究中发挥着重要作用。本文将深入探讨氧化性低密度脂蛋白抗体原料…

Elasticsearch 8.9 flush刷新缓存中的数据到磁盘源码

一、相关API的handler1、接收HTTP请求的hander2、每一个数据节点(node)执行分片刷新的action是TransportShardFlushAction 二、对indexShard执行刷新请求1、首先获取读锁&#xff0c;再获取刷新锁&#xff0c;如果获取不到根据参数决定是否直接返回还是等待2、在刷新之后transl…

芯知识 | 如何选择合适的单片机语音芯片?

随着科技的飞速发展&#xff0c;单片机语音芯片已经广泛应用于各个领域。然而&#xff0c;在众多的芯片产品中&#xff0c;如何选择合适的单片机语音芯片成为了一个重要的问题。本文将为您提供一些建议&#xff0c;助您找到最适合您需求的单片机语音芯片。 一、明确需求 在选…

Android Audio实战——音频链路分析(二十五)

在 Android 系统的开发过程当中,音频异常问题通常有如下几类:无声、调节不了声音、爆音、声音卡顿和声音效果异常(忽大忽小,低音缺失等)等。尤其声音效果这部分问题通常从日志上信息量较少,相对难定位根因。想要分析此类问题,便需要对声音传输链路有一定的了解,能够在链…

AI发展下服务器的选择非常重要

在AI发展下&#xff0c;服务器的选择非常重要。以下是一些选择服务器时需要考虑的因素&#xff1a; 1. 计算能力&#xff1a;AI需要大量的计算资源来进行训练和推理。因此&#xff0c;选择具有强大计算能力的服务器是至关重要的。 2. 内存容量&#xff1a;AI需要大量的内存来…

cryptojs加密和java解密:AES算法

试了一下午终于跑通了&#xff0c;一开始尝试RC4算法生成的密文在java中解密不出来&#xff0c;放弃了&#xff0c;改用AES。 js代码 import aes from crypto-js/aes; import base from crypto-js/enc-base64;function encrypt(plaintext: string) {const iv base.parse(ZGY…

【论文解读】:大模型免微调的上下文对齐方法

本文通过对alignmenttuning的深入研究揭示了其“表面性质”&#xff0c;即通过监督微调和强化学习调整LLMs的方式可能仅仅影响模型的语言风格&#xff0c;而对模型解码性能的影响相对较小。具体来说&#xff0c;通过分析基础LLMs和alignment-tuned版本在令牌分布上的差异&#…

测试:SSE VS WebSocket

SSE&#xff08;Server-Sent Events&#xff09; SSE&#xff08;Server-Sent Events&#xff09;接口是一种实现服务器到客户端单向实时通信的技术。通过SSE&#xff0c;服务器可以主动向客户端推送数据&#xff0c;而不需要客户端不断地向服务器请求数据。这种技术特别适合于…

100多种视频转场素材|专业胶片,抖动,光效电影转场特效PR效果预设

100多种 Premiere Pro 效果预设&#xff0c;包含&#xff1a;“胶片框架”、“胶片烧录”、“彩色LUT”、“相机抖动”、“电影Vignette”和“胶片颗粒”。非常适合制作复古风格的视频&#xff0c;添加独特的色彩。包括视频教程。 来自PR模板网&#xff1a;https://prmuban.com…

git 本地有改动,远程也有改动,且文件是自动生成的配置文件

在改动过的地方 文件是.lock文件&#xff0c;自动生成的。想切到远程的分支&#xff0c;但是远程的分支也有改动过。这时候就要解决冲突&#xff0c;因为这是两个分支&#xff0c;代码都是不一样的&#xff0c;要先把这改动的代码提交在本地或者提交在本分支的远程才可以切到其…

在Arch Linux上安装yay

有点麻烦。 准备 # pacman -Syu # pacman -S --needed base-devel git 变身为普通用户 不能使用root下载代码。所以要变身为普通用户&#xff1a; # sueradd tsit # su tsit 下载代码 $ git clone https://aur.archlinux.org/yay.git 编译安装 $ cd yay $ makepkg -si…

ke13--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

在 CentOS 或 Red Hat 系统上安装 Citus 组件

要在 CentOS 或 Red Hat 系统上安装 Citus 组件&#xff0c;你可以按照以下步骤操作&#xff1a; 首先&#xff0c;使用 curl 命令下载 Citus 社区版的安装脚本&#xff1a; curl https://install.citusdata.com/community/rpm.sh > add-citus-repo.sh接着&#xff0c;使用 …

使用 PyInstaller 将 Python 脚本转换为可执行文件(.exe)

安装库&#xff1a; pip install pyinstaller 使用方法&#xff1a; pyinstaller --onefile your_python_file.py 自定义可执行文件的特性 你可以使用一些可选参数来自定义生成的可执行文件的特性。例如&#xff0c;你可以使用 --icon 参数设置生成的可执行文件的图标&#…