当前位置: 首页 > article >正文

Linux操作命令之Nginx基本功能

一、安装

开始安装
yum install pcre-devel openssl-devel -y

添加nginx用户
useradd -s /sbin/nologin -M nginx

解压nginx-1.24.0.tar.gz包
tar –zxvf  nginx-1.24.0.tar.gz –C /usr/local/src

cd /usr/local/src/nginx-1.24.0

配置Nginx的编译参数,使其以nginx用户和nginx组的身份运行,同时启用stub_status模块和SSL模块。执行这条命令后,你将能够生成一个Makefile文件,随后可以使用make和make install命令来编译和安装Nginx
./configure --user=nginx --group=nginx --with-http_stub_status_module --with-
http_ssl_module?          

make && make install

--with-http_stub_status_module 启用status网页(模块能够获取Nginx自上次启动以来的工作状态)
--with-http_ssl_module 支持ssl模块

二、启动

/usr/local/nginx/sbin/nginx  -h  查看命令帮助
-v               查看nginx版本
-V               查看编译参数
-t                测试默认配置文件
-c              加载非默认位置配置文件

/usr/local/nginx/sbin/nginx 启动

elinks -dump http://127.0.0.1 测试连接

三、停止

Nginx的停止 一般通过发送信号给nginx主进程的方式来停止nginx

[root@controller ~]# ps -ef | grep nginx
root       2096      1  0 14:40 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      2097   2096  0 14:40 ?        00:00:00 nginx: worker process
root       6726   5093  0 16:59 pts/0    00:00:00 grep --color=auto nginx

1个nginx进程备注信息为”master process” 表示为主进程
另外进程备注信息为”worker process”,表示为子进程

四、信号

TERM, INT 快速关闭

QUIT 从容关闭

HUP 重载配置用新的配置开始新的工作进程从容关闭旧的工作进程

USR1 重新打开日志文件

USR2 平滑升级可执行程序

WINCH 从容关闭工作进程

(1)从容停止nginx
Kill –信号
Kill – QUIT nginx主进程号
或者
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`
(2)
Kill –TERM nginx主进程号
或
Kill –INT Nginx
(3)
Kill -9 nginx主进程号

五、Nginx的平滑升级

        当需要将正在运行中的nginx升级,添加/删除服务模块时,可以在不中断服务的情况下,使用新版本,重编译的Nginx可执行程序替换旧版本的可执行程序,步骤如下:

• 使用新的可执行程序替换旧的可执行程序,对于编译安装的Nginx,可以将新版本编译安装到旧版本的nginx安装路径中.替换之前,最好备份一下旧的可执行程序

• 发送以下指令:

Kill –USR2 旧版本的nginx主进程号

• 旧版本的主进程将重命名它的pid文件为.oldbin (例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的nginx可执行程序,依次启动新的主进程和新的工作进程.

• 此时,新,旧版本的nginx实例会同时运行,共同处理输入的请求.要逐步停止旧版本的nginx实例,你必须发送WINCH信号给旧的主进程,然后,它的工作进程就将开始从容关闭:kill –WINCH 旧版本的Nginx主进程号

• 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了.

• 这时候,我们可以决定是使用新版本,还是回复到旧的版本;

Kill –HUP 旧的主进程号:Nginx将在不重载配置文件的情况下启动它的工作进程;
Kill –QUIT 新的主进程号:从容关闭其他工作进程(woker process);
Kill –TERM 新的主进程号:强制退出;
Kill 新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号.

          新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复为他的.pid文件,这样,一切就都恢复到升级之前了,如果尝试升级成功,而你也希望保留新的服务器时,可发送QUIT信号给旧的主进程,使其退出而只留下新的服务器运行:

        操作:

        平滑升级0.8.55-1.09

        平滑升级到新的二进制代码

你可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。

[root@controller nginx-1.27.3]# cd /usr/local/src/nginx-1.27.3/
[root@controller nginx-1.27.3]#  ./configure --prefix=/usr/local/nginx273 --with-http_stub_status_module --with-http_ssl_module //--user=nginx --group=nginx
[root@controller nginx-1.27.3]# make && make install  //安装新版本nginx放在nginx109目录
[root@controller nginx-1.27.3]# ps -ef | grep nginx   //查看旧的进程主进程号和工作进程号

[root@controller nginx-1.27.3]# cat /usr/local/nginx/logs/nginx.pid //查看当前nginx状态
[root@controller nginx-1.27.3]# mv /usr/local/nginx/sbin/{nginx,nginx.bak} //替换旧的执行程序
[root@controller nginx-1.27.3]# cp /usr/local/nginx273/sbin/nginx /usr/local/nginx/sbin/
[root@controller nginx-1.27.3]# /usr/local/nginx/sbin/nginx -v 查看新的nginx的版本
[root@controller nginx-1.27.3]# kill -USR2 9839

主进程将重命名它的 .pid 文件为 .oldbin,然后执行新的可执行程序,依次启动新的主进程和新的工作进程。

kill -WINCH 9839

发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭

这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:

•       发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程

•       发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程

•       发送 TERM 信号给新的主进程,迫使其退出

•       如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号

新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了。

如果尝试升级成功,而你也希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行。


http://www.kler.cn/a/508946.html

相关文章:

  • C++ 强化记忆
  • turtle教学课程课堂学习考试在线网站
  • Python GUI Pyside6 实例笔记
  • C++(二十一)
  • 深入理解 Entity、VO、QO、DTO 的区别及其在 MVC 架构中的应用
  • 【力扣Hot 100】普通数组1
  • 搜维尔科技:Haption遥操作解决方案特点和优势
  • 实在RPA研究|万字解析实在RPA:概念、原理、优势、场景及与爬虫、python区别
  • User analysis 思考,持续 几秒 如何看待自动驾驶技术的现状与未来:挑战与机遇
  • 游戏引擎学习第82天
  • 网络编程 | UDP套接字通信及编程实现经验教程
  • 利用 Composition API 与 Teleport 实现高效的动态弹窗组件
  • 通俗易懂:RustDesk Server的搭建及使用
  • 【Qt】04-Lambda表达式
  • Formality:参考设计/实现设计以及顶层设计
  • ChatGPT大模型极简应用开发-目录
  • 【深度学习】Java DL4J 2024年度技术总结
  • Redis - 环境搭建
  • 1、ansible自动化运维模块
  • 8.Python 编程中优化货币对象的方法实现与测试解耦
  • 32单片机综合应用案例——物联网(IoT)环境监测站(四)(内附详细代码讲解!!!)
  • 推荐11个Excel读写查询等操作的.Net开源库
  • 【学习总结|DAY032】后端Web实战:登录认证
  • 什么是DNS缓存?DNS缓存有什么用?
  • 数字孪生发展及应用
  • ODIN:用于 2D 和 3D 分割的单一模型