hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

Nginx 热布置和日记切割,你学会了吗?

2019-11-18杂谈搜奇网49°c
A+ A-

上篇文章,我们已装置好 Nginx,而且设置好 Nginx 文件后,这个时刻我就须要操纵 Nginx 的敕令行了,这篇文章重要解说 Nginx 敕令行相干学问,并经由过程一样平常碰到的热布置、切割日记文件场景来熟习 Nginx 敕令行操纵。

引荐浏览:Nginx 相识一下?

Nginx 敕令行

  1. 花样:nginx -s stop
  2. 协助:-? -h
  3. 运用指定的设置文件:-c
  4. 指定设置指令:-g (用处是掩盖设置文件中的指令)
  5. 指定运转目次:-p
  6. 发送信号:-s(马上住手效劳:stop,文雅的住手效劳:quit,从新设置文件:reload,从新开始纪录日记文件:reopen)
  7. 测试设置文件是不是有语法错误:-t -T
  8. 打印 nginx 的版本信息、编译信息等:-v -V

Nginx 敕令和大部分的 Linux 的敕令很类似,都是 nginx 加基础指令,再加指令相干的参数。默许情况下 nginx 会去寻觅之前实行 configure 敕令时指定位置的设置文件,然则能够经由过程 -c 来指定设置文件,而且能够经由过程 -g 来指定设置指令。

nginx 去操纵运转中历程的要领平常是经由过程发送信号,能够经由过程 linux 通用的 kill 敕令,也能够用 nginx 的 -s 敕令来发送信号。

接下来,让我们经由过程几个栗子来熟习 Nginx 的敕令行操纵。

重载设置文件

设置文件默许是在装置目次的 conf 文件下,文件名为 nginx.conf,我们能够翻开看一下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

假如我们须要开启 gzip 紧缩,我们能够把它前面的解释去掉,当我们在修正完 nginx 设置文件后,我们能够经由过程 nginx 的敕令 ./nginx -s reload 重启 nginx 效劳。

Nginx 热布置

当从老版本替代为新版本的 nginx 的时刻,假如不热布置的话,会须要作废 nginx 效劳并重启效劳才替代胜利,如许的话会使正在接见的用户在断开衔接,所以为了在不影响用户的体验下举行版本升级,就须要热布置来升级版本。

接下来,让我们一同举行一次热布置吧。

由于举行升级重如果替换二进制文件,所以在升级前先备份旧的二进制文件。

# 备份旧版本的 nginx 二进制文件
mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old

然后下载最新版本的 nginx,解压后举行编译,再把编译好的最新版本的 nginx 二进制文件拷贝到装置目次下的 sbin 目次下。

# 到官网下载最新版本的 nginx
wget http://nginx.org/download/nginx-1.17.2.tar.gz
# 解压
tar -xzvf nginx-1.17.2.tar.gz
cd nginx-1.17.2
./configure --prefix=/usr/local/nginx
# 编译
make
# 替代旧的 nginx 的实行顺序
cp -r /usr/local/nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/ -f

经由过程 ps -ef | grep nginx 来检察 nginx 运转状况:

[root@wupx sbin]# ps -ef | grep nginx 
root      1752     1  0 20:39 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    1783  1752  0 20:41 ?        00:00:00 nginx: worker process
root      1787     1  0 20:41 ?        00:00:00 wget http://nginx.org/download/nginx-1.17.2.tar.gz
root      4357  1708  0 21:00 pts/2    00:00:00 grep --color=auto nginx

能够看到现在启动的 nginx 的 PID 为 1752,下面须要给正在运转的 nginx 的 master 历程发送信号,关照它我们要举行热布置了。

# 发送 USR2 信号给旧版本主历程号,使 nginx 的旧版本住手吸收要求,用 nginx 新版本代替
kill -USR2 1752

再经由过程 ps -ef | grep nginx 来检察 nginx 运转状况:

[root@wupx sbin]# ps -ef | grep nginx 
root      1752     1  0 20:39 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    1783  1752  0 20:41 ?        00:00:00 nginx: worker process
root      1787     1  0 20:41 ?        00:00:00 wget http://nginx.org/download/nginx-1.17.2.tar.gz
root      4391  1752  0 21:02 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    4392  4391  0 21:02 ?        00:00:00 nginx: worker process
root      4394  1708  0 21:07 pts/2    00:00:00 grep --color=auto nginx

这个时刻我们须要给老的 nginx 发送信号,关照老的 nginx 请文雅的封闭一切的 worker 历程。

# 发送 WINCH 信号到旧的主历程,它会关照旧的 worker 历程文雅的封闭,然后退出
kill -WINCH 1752

从新在检察 nginx 状况:

[root@wupx sbin]# ps -ef | grep nginx 
root      1752     1  0 20:39 ?        00:00:00 nginx: master process ./sbin/nginx
root      1787     1  0 20:41 ?        00:00:00 wget http://nginx.org/download/nginx-1.17.2.tar.gz
root      4391  1752  0 21:02 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    4392  4391  0 21:02 ?        00:00:00 nginx: worker process
root      4402  1708  0 21:08 pts/2    00:00:00 grep --color=auto nginx

也能够发明老的 nginx maser 历程还存在,它的意义是:假如存在题目,须要退回到老版本中,我们能够给它发送 reload 敕令,让他从新把 worker 历程拉起来、把新版本关掉。保存在这里轻易我们做版本回退。

假如要退出保存的 master 历程,能够经由过程 kill -QUIT 敕令来完成:

# 发送 QUIT 信号到旧的主历程,它会退出保存的 master 历程
kill -QUIT 1752

实行完后,1752 历程退出,经由过程 netstat lntup 能够看到 80 端口已被 4391 历程监听了(新版本 nginx 的历程)。

到此为止,我们就完成了 nginx 的热布置。

日记切割

为了防止日记文件过大不轻易检察,因而须要对日记切割。首先将本来的日记举行备份:

# 备份原日记
mv error.log old_error.log

检察日记大小:

[root@wupx logs]# ll
total 20
-rw-r--r-- 1 root root 6789 Nov  6 22:28 access.log
-rw-r--r-- 1 root root    5 Nov  6 22:16 nginx.pid
-rw-r--r-- 1 root root 7831 Nov  6 22:28 old_error.log

接下来举行日记切割:

# 日记切割
/usr/local/nginx/sbin/nginx -s reopen

再次检察:

[root@wupx logs]# ll
total 24
-rw-r--r-- 1 nobody root 6789 Nov  6 22:28 access.log
-rw-r--r-- 1 nobody root   60 Nov  6 22:30 error.log
-rw-r--r-- 1 root   root    5 Nov  6 22:16 nginx.pid
-rw-r--r-- 1 root   root 7831 Nov  6 22:28 old_error.log

经由上面的操纵,我们就完成了日记的切割,以上操纵只是为了相识日记切割的操纵流程,不发起直接生产这么运用。引荐先写成一个 shell 剧本,经由过程 shell 剧本去定时实行。

示例剧本:

#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs/history
CUR_LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${CUR_LOGS_PATH}/access.log ${LOGS_PATH}/old_access_${YESTERDAY}.log
mv ${CUR_LOGS_PATH}/error.log ${LOGS_PATH}/old_error_${YESTERDAY}.log
## 向 NGINX 主历程发送 USR1 信号。USR1 信号是从新翻开日记文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

总结

这篇文章重要引见了 Nginx 敕令行相干学问,并引见了重载设置文件、Nginx 热布置、日记切割等操纵,照样须要多实践操纵,实践出真知。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Nginx 热布置和日记切割,你学会了吗?

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282010.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>