nginx教程第二篇:nginx命令行控制

2024-08-27 23:58

本文主要是介绍nginx教程第二篇:nginx命令行控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Linux中, 需要使用命令行来控制Nginx服务器的启动与停止、 重载配置文件、 回滚日
志文件、 平滑升级等行为。 默认情况下, Nginx被安装在目录/usr/local/nginx/中, 其二进制文
件路径为/usr/local/nginc/sbin/nginx, 配置文件路径为/usr/local/nginx/conf/nginx.conf。 当然, 在
configure执行时是可以指定把它们安装在不同目录的。

1.默认启动方式

直接执行Nginx二进制程序。 例如:

/usr/local/nginx/sbin/nginx

这时, 会读取默认路径下的配置文件: /usr/local/nginx/conf/nginx.conf

2.指定配置文件启动方式

使用-c参数指定配置文件。 例如:

/usr/local/nginx/sbin/nginx -c tmpnginx.conf

这时, 会读取-c参数后指定的nginx.conf配置文件来启动Nginx

3.另行指定安装目录的启动方式

使用-p参数指定Nginx的安装目录。 例如:

/usr/local/nginx/sbin/nginx -p /usr/local/nginx/
4.另行指定全局配置项的启动方式

可以通过-g参数临时指定一些全局配置项, 以使新的配置项生效。 例如:

/usr/local/nginx/sbin/nginx -g "pid varnginx/test.pid;"

上面这行命令意味着会把pid文件写到varnginx/test.pid中

-g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突, 否
则无法启动。 就像上例那样, 类似这样的配置项: pid logs/nginx.pid, 是不能存在于默认的
nginx.conf中的。

另一个约束条件是, 以-g方式启动的Nginx服务执行其他命令行时, 需要把-g参数也带
上, 否则可能出现配置项不匹配的情形。 例如, 如果要停止Nginx服务, 那么需要执行下面
代码:

/usr/local/nginx/sbin/nginx -g "pid varnginx/test.pid;" -s stop

如果不带上-g"pidvarnginx/test.pid;", 那么找不到pid文件, 也会出现无法停止服务的情
况。

5.测试配置信息是否有错误

在不启动Nginx的情况下, 使用-t参数仅测试配置文件是否有错误。 例如:

/usr/local/nginx/sbin/nginx -t

执行结果中显示配置是否正确。

6.在测试配置阶段不输出信息

测试配置选项时, 使用-q参数可以不把error级别以下的信息输出到屏幕。 例如:

/usr/local/nginx/sbin/nginx -t -q
7.显示版本信息

使用-v参数显示Nginx的版本信息。 例如:

/usr/local/nginx/sbin/nginx -v
8.显示编译阶段的参数

使用-V参数除了可以显示Nginx的版本信息外,还可以显示配置编译阶段的信息, 如GCC编译器的版本、 操作系统的版本、 执行configure时的参数等。 例如:

/usr/local/nginx/sbin/nginx -V
10.快速地停止服务

使用-s stop可以强制停止Nginx服务。 -s参数其实是告诉Nginx程序向正在运行的Nginx服
务发送信号量, Nginx程序通过nginx.pid文件中得到master进程的进程ID, 再向运行中的
master进程发送TERM信号来快速地关闭Nginx服务。 例如:

/usr/local/nginx/sbin/nginx -s stop

实际上, 如果通过kill命令直接向nginx master进程发送TERM或者INT信号, 效果是一样
的。 例如:
先通过ps命令来查看nginx master的进程ID:

computer:root > ps -ef | grep nginx  
root 10800 1 0 02:27 ? 00:00:00 nginx: master process ./nginx
root 10801 10800 0 02:27 ? 00:00:00 nginx: worker process

接下来直接通过kill命令来发送信号:

kill -s SIGTERM 10800

或者:

kill -s SIGINT 10800

上述两条命令的效果与执行usrlocal/nginx/sbin/nginx-s stop是完全一样的

11.“优雅”地停止服务

如果希望Nginx服务可以正常地处理完当前所有请求再停止服务, 那么可以使用-s quit参数来停止服务。 例如:

/usr/local/nginx/sbin/nginx -s quit

该命令与快速停止Nginx服务是有区别的。 当快速停止服务时, worker进程与master进程在收到信号后会立刻跳出循环,退出进程。 而“优雅”地停止服务时, 首先会关闭监听端口,停止接收新的连接, 然后把当前正在处理的连接全部处理完, 最后再退出进程。
与快速停止服务相似, 可以直接发送QUIT信号给master进程来停止服务, 其效果与执行-s quit命令是一样的。 例如:

kill -s SIGQUIT <nginx master pid>

如果希望“优雅”地停止某个worker进程,那么可以通过向该进程发送WINCH信号来停止服务。 例如:

kill -s SIGWINCH <nginx worker pid>
12.使运行中的Nginx重读配置项并生效

使用-s reload参数可以使运行中的Nginx服务重新加载nginx.conf文件。 例如:

/usr/local/nginx/sbin/nginx -s reload

事实上, Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的。 类似的, -s是发送信号, 仍然可以用kill命令发送HUP信号来达到相同的效果。

kill -s SIGHUP <nginx master pid>
13.日志文件回滚

使用-s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份, 再重新打开时就会生成新的日志文件。 这个功能使得日志文件不至于过大。 例如:

/usr/local/nginx/sbin/nginx -s reopen

当然, 这与使用kill命令发送USR1信号效果相同。

kill -s SIGUSR1 <nginx master pid>
14.平滑升级Nginx

当Nginx服务升级到新的版本时, 必须要将旧的二进制文件Nginx替换掉, 通常情况下这是需要重启服务的,但Nginx支持不重启服务来完成新版本的平滑升级。
升级时包括以下步骤:

  • 通知正在运行的旧版本Nginx准备升级。通过向master进程发送USR2信号可达到目的。 例如:
kill -s SIGUSR2 <nginx master pid>

这时, 运行中的Nginx会将pid文件重命名,如将/usr/local/nginx/logs/nginx.pid重命名为/usr/local/nginx/logs/nginx.pid.oldbin,这样新的Nginx才有可能启动成功。

  • 启动新版本的Nginx, 可以使用以上介绍过的任意一种启动方法。 这时通过ps命令可以发现新旧版本的Nginx在同时运行。
  • 通过kill命令向旧版本的master进程发送SIGQUIT信号, 以“优雅”的方式关闭旧版本的Nginx。 随后将只有新版本的Nginx服务运行, 此时平滑升级完毕。
15.显示命令行帮助

使用-h或者-?参数会显示支持的所有命令行参数

这篇关于nginx教程第二篇:nginx命令行控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113150

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配