nginx的启停控制

1、Nginx信号控制:

nginx中可以通过发送信号的方式来控制服务器的启停等,但要达成这些操作首先要知道nginx的PID。

获取pid的方式有两种:

  • 利用linux的ps命令查看:ps -ef | grep nginx 或者是 ps aux | grep nginx
  • 直接查看nginx的PID存储文件:vim nginx存储目录/logs/(如,我本地为vi /usr/local/nginx/logs/)


找到PID后便可以通过PID来发送信号了,目前nginx提供了如下几种信号。

信号

用法

TERM/INT

快速停止nginx服务

QUIT

平缓的停止nginx服务

HUP

平滑重启,即使用新的配置文件启动后平缓停止原有进程

USR1

重新打开日志,常用于日志的切割·

USR2

使用新的nginx版本启动服务,之后平缓停止原有的进程,也就是所谓的“平滑升级”,

WINCH

平缓停止worker prcess ,用于nginx服务平滑升级

同样的向Nginx服务进程发送信号也有两种方式:一种是使用Nginx二进制文件,另外一种是使用kill命令发送信号。

当然我们也可以动态的指定pid,kill 信号 filepath(filepath=nginx pid路径)。

1 kill QUIT /usr/local/nginx/logs/

2、Nginx服务启动:

linux下在nginx安装目录下的sbin命令中执行nginx二进制文件即可.

1 cd /usr/local/nginx/sbin
2 ./nginx

关于其它的命令可通过-h或?查看:

1 ./nginx -h
2 ./nginx -?

3、Nginx服务停止:

1、快速停止:立马丢弃手上的工作,停掉但取nginx正在处理的所有网络请求。

2、平缓停止:完成当前工作后再停止nginx。

 1 ./nginx -s stop # 快速停止(习惯的方式) 2 ./nginx -g INT  # 快速停止 3 ./nginx -g TERM # 快速停止 4 ./nginx -g QUIT # 平缓停止5 6 # 使用PID方式 7kill INT PID8kill TERM PID9kill QUIT PID
1011 # kill -912 kill -9 信号 PID
13 kill -9 PID      # 不推荐,容易导致部分用户丢失连接

4、Nginx服务重启:

1 # 可以指定新的配置文件2 ./nginx -g 信号 [新的配置文件]
34 # 可以使用PID,或者是pid文件所在的文件5kill HUB PID
67 # 在工作中常用的重启方式:平滑重启我们的nginx服务器,生产环境中经常使用8 ./nginx -s reload  

5、Nginx服务升级:

如果我们需要对当前的Nginx服务进行升级 ,应用新的模块,最简单的方式是停下来,然后开启新的Nginx服务,那么给我们的用户体验是非常差的,会导致用户在一段时间内无法访问我们的服务器为了解决这个问题,Nginx提供了平滑升级的方案:

注意:为了实现nginx服务器的平滑升级,新安装的服务器路径应该和旧的一致。因此建议用新安装的服务器之前先备份一下我们的旧nginx服务器,如果由于种种原因不能保持新旧客户端路径一致则可以做一下操作,将旧的服务器路径更改为新的路径,新的服务器放入旧的路径中。

 1# newinstallpath新文件的路径2 ./nginx -p new_install_path3 4# 备份旧的服务器5 6# 安装新的服务器7 8# 使新旧服务器实现平滑升级9 ./nginx -g USR2
1011# 或者使用
12kill USR2 路径
1314# 查看新服务器的启动情况
15 ps -ef |grpe nginx
1617# 发送平滑停止旧的服务器信号
18 ./nginx -g WINCH

执行过程:

  • Nginx服务接受到USR2的信号后,首先将旧的文件后面添加一个.oldbin。
  • 变成了,.oldbin 然后执行新版本的Nginx服务器的二进制文件启动服务,如果启动成功那么我们将会有两个Nginx服务在提供服务。
  • 之后需要向旧的发送WINCH信号,使旧的nginx服务平缓的停止并删除.oldbin文件 在发送WINCH信号前我们可以随时停止新的服务。

nginx的配置文件解读

  1#user  nobody;       # 设定访问的用户或组,若不设置默认所有人都可以访问2 worker_processes  1; # 设定工作组的数量,理论上越大越好,但是很多原因限制了性能,一般的跟我们服务器核心数一样就可以了3  4# 日志文件存储的地方,默认是nginx下的logs 注释为释放的话没有日志生成5 #error_log  logs/error.log;6 #error_log  logs/error.log  notice;7# 日志的级别设置8 #error_log  logs/error.log  info;9 10# 进程的pid存放以及生成,如果你不释放开那么就不会在logs下生成文件11 #pid        logs/;12 13# events块14# 这里设置的属性一般和网络连接有关的,所以没事别瞎折腾他,网络会出现很多莫名其妙的异常 15# 常用到的有worker_processes的设置,比如是否序列化,是否允许,同时接受多个网络请求 16# 选取什么样的时间模型等等17events {18     # 设置最大的连接数为,一般默认512,但是常用的时候,一般是1024-2048 19    # 一般不要超过你的操作系统的最大文件句柄数20     worker_connections  1024;21}22 23# 后续章节再述24http {25    include       mime.types;26     default_type  application/octet-stream;27 28     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '29     #                  '$status $body_bytes_sent "$http_referer" '30     #                  '"$http_user_agent" "$http_x_forwarded_for"';31 32     #access_log  logs/access.log  main;33 34    sendfile        on;35    #tcp_nopush     on;36 37     #keepalive_timeout  0;38     keepalive_timeout  65;39 40    #gzip  on;41 42    server {43         listen       80;44        server_name  localhost;45 46         #charset koi8-r;47 48         #access_log  logs/host.access.log  main;49 50         location / {51            root   html;52            index  index.html index.htm;53        }54 55         #error_page  404              /404.html;56 57         # redirect server error pages to the static page /50x.html58        #59         error_page   500 502 503 504  /50x.html;60         location = /50x.html {61            root   html;62        }63 64         # proxy the PHP scripts to Apache listening on 127.0.0.1:8065        #66         #location ~ \.php$ {67         #    proxy_pass   http://127.0.0.1; 68        #}69 70         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:900071        #72         #location ~ \.php$ {73        #    root           html;74         #    fastcgi_pass   127.0.0.1:9000;75        #    fastcgi_index  index.php;76         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;77        #    include        fastcgi_params;78        #}79 80         # deny access to .htaccess files, if Apache's document root81         # concurs with nginx's one82        #83         #location ~ /\.ht {84        #    deny  all;85        #}86    }87 88 89     # another virtual host using mix of IP-, name-, and port-based configuration90    #91    #server {92     #    listen       8000;93     #    listen       somename:8080;94    #    server_name  somename  alias  another.alias;95 96     #    location / {97    #        root   html;98    #        index  index.html index.htm;99    #    }
100    #}
101102103    # HTTPS server
104    #
105    #server {
106     #    listen       443 ssl;
107    #    server_name  localhost;
108109    #    ssl_certificate      cert.pem;
110    #    ssl_certificate_key  cert.key;
111112    #    ssl_session_cache    shared:SSL:1m;
113    #    ssl_session_timeout  5m;
114115     #    ssl_ciphers  HIGH:!aNULL:!MD5;
116    #    ssl_prefer_server_ciphers  on;
117118     #    location / {
119    #        root   html;
120    #        index  index.html index.htm;
121    #    }
122    #}
123124 }

nginx 访问图片404_Nginx学习笔记(二、Nginx配置文件详解) - 被猪附身的人相关推荐

  1. hibernate框架学习笔记2:配置文件详解

    实体类: package domain;public class Customer {private Long cust_id;private String cust_name;private Str ...

  2. java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解

    Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...

  3. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  4. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

  5. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  6. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  7. mmdetection学习笔记(二)配置文件详解

    配置文件详解 四项基础配置 1. _base_/datasets 2. _base_/models 3. _base_/schedules 4. _base_/default_runtime.py 基 ...

  8. MyBatis复习笔记2:配置文件详解

    配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...

  9. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址,IP 则承载要发 送的消息.数据链路层可以从 ARP 得到数据的传送信息,而从 ...

最新文章

  1. Python之字符串格式化(format)
  2. 计算机桌面文件管理窗口,隐藏Win10此电脑窗口的6个额外文件夹
  3. opengl加载显示3D模型ZAE类型文件
  4. 汇编loop指令及用法解释
  5. 纳尼???我JVM优化过头了,直接把异常信息优化没了?怎么办
  6. SQL 语句执行顺序
  7. hdfs 多租户_Hadoop多租户架构配置
  8. [转载] python3 格式化字符串 f-string 介绍
  9. 天勤 数据结构 P80 T10
  10. 用windows电脑制作macos系统安装U盘
  11. 这么简单!安卓手机投屏到电脑的神器
  12. 图解域名解析DNS过程
  13. 用telnet逛bbs
  14. adcclk最大_关于STM32 在进行ADC采样时,ADCCLK时钟频率的确定
  15. 爬取Google Play中app的用户评论(1)
  16. 洛谷P1046陶陶摘苹果题解--zhengjun
  17. 支付宝商家二维码收款、订单状态查询、退款API试用笔记
  18. nginx添加ssl证书
  19. 考研报名时,需要准备哪些信息?
  20. RTP Payload H264

热门文章

  1. 将dwg文件转为shp文件
  2. 拼多多面试——算法实习面试
  3. 拓嘉启远电商:如何搭建拼多多的私域流量池
  4. 2023年中职网络安全技能竞赛网络安全事件响应解析(保姆级)
  5. 微信小程序动态添加class样式
  6. STM32F103单片机控制SG90舵机
  7. CentOS7下MySQL服务启动失败原因及解决方法
  8. 一起来聊一聊MySQL:从B树到B+树到索引再到存储引擎
  9. sql 约束(sql server 环境)
  10. 【手册】如何编译/修改三星手机Rom(三)