我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于Nginx命令行控制的问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于Nginx命令行控制的问题

Nginx 介绍

Nginx 是一个高性能的 Web 服务器,从 2001 年发展至今,由于 Nginx 对硬件和操作系统内核特性的深度挖掘,使得在保持高并发的同时还能够保持高吞吐量。Nginx 还采用了模块设计,有大量的第三方模块可以扩展 Nginx 的功能,因此 Nginx 的场景非常丰富,同时 Nginx 采用的是 BSD 许可证,赋予了 Nginx 最大的灵活性。简单来说,Nginx 具有以下几个优点:

  • 高并发,高性能
  • 可扩展性好
  • 高可靠,一年之中停机时间可能只有几秒
  • 热部署,可以不重启升级
  • 灵活性高,采用BSD 许可证

BSD开源协议是一个给予使用者者很大自由的协议。基本上使用者可以“为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

在Linux中,Nginx默认被安装在目录 /usr/local/nginx 中,其中二进制文件路径为 /usr/local/nginx/sbin/nignx ,配置文件路径为 /usr/local/nginx/conf/nginx.conf 。注:在 configure 执行时是可以指定把它们安装在不同的目录的。

在Linux中,Nginx默认被安装在目录 /usr/local/nginx 中,其中二进制文件路径为 /usr/local/nginx/sbin/nignx ,配置文件路径为 /usr/local/nginx/conf/nginx.conf

注:在 configure 执行时是可以指定把它们安装在不同的目录的。

1、默认方式启动

直接执行Nginx二进制程序:

/usr/local/nginx/sbin/nginx/sbin/nginx

这时,会读取默认路径下的配置文件: /usr/local/nginx/conf/nginx.conf
实际上,在没有显式指定 nginx.conf 配置文件路径时,将打开 configure 命令执行时使用 --conf-path=PATH 指定nginx.conf文件

2、另行指定配置文件的启动方式

/usr/local/nginx/sbin/nginx -c /tmp/nginx.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 /var/nginx/test.pid"

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

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

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

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

如果不带上 -g "pid /var/nginx/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

9、快速的停止服务

使用 -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

[root@VM_0_16_centos ~]# ps -ef | grep nginx
root      1413     1  0  2021 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    1414  1413  0  2021 ?        00:18:51 nginx: worker process
root     26388 26323  0 13:52 pts/0    00:00:00 grep --color=auto nginx

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

kill -s SIGTERM 1413

或者

kill -s SIGINT 1413

上面两条命令的效果与执行 /usr/local/nginx/sbin/nginx -s stop 是完全一致的

10、优雅的停止服务

如果系统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>

11、使运行中的Nginx重读配置项并生效

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

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

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

kill -s SIGHUP <nginx master pid>

12、日志文件回滚

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

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

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

kill -s SIGUSR1 <nginx master pid>

13、平滑升级Nginx

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

1.通知正在运行的旧版本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才有可能启动成功

2.启动新版本的Nginx,可以使用上面任意一种启动方法。这时通过ps命令可以发现新旧版本的Nginx在同时运行。

3.通过 kill 命令向旧版本的master进程发送SIGQUIT信号,以优雅的方式关闭旧版本的Nginx。随后将只有新版本的Nginx服务运行,此时平滑升级完毕。

14、显示命令行帮助

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

到此这篇关于Nginx 命令行控制的文章就介绍到这了,更多相关nginx 命令行内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于Nginx命令行控制的问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于Nginx命令行控制的问题

Nginx是一个高性能的Web服务器,从2001年发展至今,由于Nginx对硬件和操作系统内核特性的深度挖掘,使得在保持高并发的同时还能够保持高吞吐量,这篇文章主要介绍了Nginx命令行控制,需要的朋友可以参考下
2022-11-13

MySQL关于命令的问题、Exists关键字

truncate 与 delete 的区别truncate table :删除内容、不删除定义、释放空间。delete table : 删除内容、不删除定义、不释放空间。drop table :删除内容和定义,释放空间。1、truncate table 表名,
MySQL关于命令的问题、Exists关键字
2017-12-20

windows7系统下关于IPv6的命令行快速关闭问题探讨

但对于IPv6隧道的概念比较陌生吧,一般用户肯定很少能接触到,但是如果有接触到的用户肯定是想要了解关于IPv6隧道命令行快速关闭的方法,方法其实也很简单,大家往下看就是了。 IPv6隧道是将IPv6报文封装在IPv4报文中,让IPv6数据包
2023-05-30

iptables删除命令中的相关问题

最近在做一个V*P*N中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。iptables: Bad rule (does a matching rule ex
2023-06-04

关于JavaScript执行机制的面试题

小编给大家分享一下关于JavaScript执行机制的面试题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行为。2.JavaScript可以直接
2023-06-14

linux shell命令执行顺序的控制方法

&&命令1 && 命令2:如果这个命令执行成功&&那么执行这个命令。[jb]/usr/xxxx/ytcclb>ls -l test.sql-rwxr--r-- 1 xxxx group 225 Nov 15 14:12 test.sql[j
2022-06-04

Java11中如何解决基于嵌套关系的访问控制优化问题

这篇文章主要为大家展示了Java11中如何解决基于嵌套关系的访问控制优化问题,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Java11中如何解决基于嵌套关系的访问控制优化问题”这篇文章吧。Java
2023-06-26

编程热搜

目录