`

nginx的命令行控制

 
阅读更多

   我们在Linux中,需要使用命令行来控制nginx服务器的启动和关闭、重载配置文件、回滚日志文件、平滑升级等行为。我们假设nginx的安装目录为/usr/local/nginx/ 其二进制文件路径为/usr/local/nginx/sbin/nginx 配置文件路径为:/usr/local/nginx/conf/nginx.conf。

  •    1.默认nginx的启动方式

直接执行nginx的二进制程序

/usr/local/nginx/sbin/nginx

 这时会读取默认路径下的配置文件:/usr/local/nginx/conf/nginx.conf。(其实,如果没有显示指定nginx的配置文件路径,将会打开configure命令执行时使用--config-path=PATH指定的nginx.conf文件)

  • 2.另行指定配置文件的配置方式

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

/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参数是存在约束条件的:

 

  •       -g参数指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,否则无法启动nginx。如上例中,如果nginx默认的nginx.conf中存在类似:pid /tmp/nginx.conf的配置 则nginx是无法启动的
  •       以-g方式启动的nginx服务执行其他命令行时,需要把-g参数也带上,否则可能出现配置项不匹配的情形。例如,如果要停止nginx服务 则命令行代码如下:
/usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid" -s stop
#因为如果不带上-g参数 则pid文件无法找到 也是无法启动nginx的
  •  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 aux| grep nginx#找出nginx master的进程ID
#接下来直接通过kill命令来发送信号
kill -s SIGTERM <nginx master进程ID>
或
kill -s SIGINT <nginx master 进程ID>
#上面指令执行效果与/usr/local/nginx/sbin/nginx -s stop 是一样的
  •  10.“优雅”地停止服务

如果我们希望nginx能够处理完当前所有请求之后再停止服务,那么可以使用-s quit参数来停止服务。

/usr/local/nginx/sbin/nginx -s quit
  •       -s stop属于快速停止服务,相对比较粗暴一点儿,worker和master进程在接收到信号后就会立即跳出循环,退出进程。
  •       -s quit的做法就比较优雅一点儿,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。

当然这种优雅的方式,也可以通过直接发送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

    第 1 章 研究 Nginx 前的准备工作 / 2 1.1 Nginx 是什么 / 2 1.2 为什么选择 Nginx / 4 1.3 准备工作 / 7 1.3.1 Linux 操作系统 / 7 1.3.2 使用 Nginx 的必备软件 / 7 ...1.6 Nginx 的命令行控制 / 24 1.7 小结 / 27

    nginx官方文档中文版

    * 控制 Nginx 连接处理方式 * 设置哈希调试日志记录 * 配置文件度量单位 * 命令行参数 * 在 Windows 平台上使用 Nginx Nginx 核心功能 * ngx_http_core_module * ngx_http_access_module * ngx_...

    nginx-1.3.13

    可以在命令行运行tasklist命令来查看nginx进程: C:\nginx-1.3.13&gt;tasklist /fi "imagename eq nginx.exe" Image Name PID Session Name Session# Mem Usage =============== ======== ============== ========== ...

    shell配置nginx反向代理

    shell配置nginx反向代理 作用:可以使用完全脚本配置,免去vi编辑nginx配置文件,可以集成到python或者java代码中,存命令行控制。 资源可运行,主要提供一个配置的思路。 此资源在一个api接口添加反向代理时使用到

    easyengine:engine的命令行控制面板,用于管理在Nginx,PHP,MySQL和Let's Encrypt上运行的WordPress网站

    EasyEngine使管理Nginx变得非常容易,nginx是一种快速的Web服务器软件,在处理大量并发用户时占用很少的内存。 要求 码头工人 Docker组合 PHP CLI(&gt; = 7.1) PHP模块- curl , sqlite3 , pcntl 正在安装 Linux ...

    LNMP/Nginx 虚拟主机面板 AMH v5.0.zip

    02) 高效: 使用高性能Nginx服务器软件支持,面板基于AMH命令行运行,实现过程快速高效。 03) 安全: 安全/兼容模式可自由切换,安全模式不同虚拟主机之间互不影响,避免跨站攻击,让服务器安全性能倍增。 04) 独立:...

    napkin:一个命令行工具,旨在帮助管理nginx和PHP的配置文件并自动创建安全虚拟主机

    与庞大的Web控制面板(例如CPanel,ISPConfig,Webmin,Plesk,DirectAdmin等)不同,餐巾纸背后的想法是具有很少的“自动魔术”行为,以便保持对配置文件的完全控制并实现自定义和手动编辑功能。 底层的核心-解析...

    lnmp虚拟主机控制面板.zip

    03) 高效: 使用高性能Nginx服务器软件支持,面板基于AMH命令行运行,实现过程快速高效。 04) 独立: 简易全局管理与及支持不同主机进行独立运行维护。 05) 备份: 数据无忧保护,支持即时、定时、本地、远程FTP/SSH ...

    zero-downtime-daemon:Golang中可配置的零停机守护程序(如nginx)框架

    它只需要集成对gozd.Daemonize()的一个简单调用即可。...args_n_conf.go 演示如何通过命令行参数从文件控制守护程序重新加载配置 fcgi_std.go 演示典型的fcgi服务守护程序 fcgi_daemon.go 演示扩展的fcgi服务守护

    胡伟煌 Linux学习笔记

    * Shell是Linux系统的命令行接口,提供了交互式命令行环境,允许用户输入命令并执行操作。 五、运维工具 *Ansible:是一个自动化配置管理工具,用于自动化IT基础设施的配置和管理。 * Supervisor:是一个进程管理...

    hestiacp:Hestia控制面板| 适用于现代网络的轻巧而强大的控制面板

    Hestia控制面板旨在为管理员提供易于使用的Web和命令行界面,使他们能够从一个中央仪表板快速部署和管理Web域,邮件帐户,DNS区域和数据库,而无需手动部署和配置单个组件的麻烦或服务。功能与服务带有PHP-FPM的...

    K8s-cks进阶技能攻略

    首先,通过kubectl命令行创建nginx服务,kubectl会调用APIServer往ETCD里面写入一个Deployment对象。然后,Controller-Manager监听到有新的Deployment对象被写入,获取对象信息后,根据对象信息做任务调度,创建出...

    alfio-k8s:ALF.io kubernetes部署

    alfio-k8s 有关如何使用带有Kubernetes和NGINX Ingress控制器并自我更新“让我们加密HTTPS证书”在Google Cloud上设置ALF.io的文档。先决条件您必须安装: 码头工人Kubectl Google Cloud SDK,因为我们将从终端执行...

    terraform-gke-cluster:支持使用 Longhorn、Haproxy 入口控制器、CertManager、External-DNS、NetData 自动声明机制和 Nginx 的集群持久卷的 Google Kubernetes 集群自动配置脚本

    在所有相关安装完成后,您将通过命令行提示创建用户名和密码以保护 Longhorn 和 Netdata 的 UI,并将作为机密提交给 Kubernetes API。 最后,您的 kubernetes 节点将被自动声明,您将可以立即访问所有指标。使用的...

    轻量级办公平台Sandbox.zip

    sandbox是一个基于django框架开发的轻量级办公平台,主要模块有:权限控制、资产(库存)管理、设备管理、客户信息管理和工单流程管理,其目的在于建立一套规范化、统一化和清晰化的标准服务流程,能够清晰的处理、...

    chili:轻量级简单的 RPC 守护进程

    控制脚本和 NGINX 配置文件在./assets/scripts Chili 可以从命令行运行,使用命令 Chili chili --port=8080 。 端口默认为 8000。这将在指定的端口上启动一个 HTTP 服务器,为请求做好准备。 Chili 可以从命令行...

    Node.js 开发指南.pdf

    1.4.2 Node.js与PHP+Nginx 6 1.5 JavaScript简史 6 1.5.1 Netscape与LiveScript 7 1.5.2 Java与Javascript 7 1.5.3 微软的加入——JScript 8 1.5.4 标准化——ECMAScript 8 1.5.5 浏览器兼容性问题 9 ...

    Deployment实验手册1

    kubectl 命令是 Kubernetes 的命令行工具,提供了丰富的命令来管理和维护 Kubernetes 集群。 使用 kubectl get 命令 使用 kubectl get 命令可以查看资源对象的状态,例如: ``` [root@k8s-master /]# kubectl get ...

    Node.js+开发指南

    1.4.2 Node.js与PHP+Nginx 6 1.5 JavaScript简史 6 1.5.1 Netscape与LiveScript 7 1.5.2 Java与Javascript 7 1.5.3 微软的加入——JScript 8 1.5.4 标准化——ECMAScript 8 1.5.5 浏览器兼容性...

Global site tag (gtag.js) - Google Analytics