Nginx에 뜨거운 배포 및 로그 절단, 당신은 그것을 배울?

마지막 기사에서는, 우리는 Nginx에 설치되어, 좋은 Nginx의 구성 파일 후, 이번에는 내가 절단, 매일 뜨거운 전개를 통해, Nginx의 명령 행을 주로 Nginx의 명령 줄 지식과 경험이 문서가 필요합니다 로그 파일 명령 행에 Nginx에 익숙한 장면.

추천 도서 : Nginx에 알아?

Nginx의 명령 행

  1. 형식 : nginx를 중지 -s
  2. 도움말 : - -H
  3. -c : 지정된 구성 파일을 사용하여
  4. 지침의 구성을 지정 -g (피복 프로파일 명령어를 사용)
  5. 실행 디렉토리 - P를 지정합니다
  6. (다시 시작 로그 파일을 다시로드 :, 종료 다시 구성 파일을 : 서비스의 밖으로 즉시 : 중지 중지하고 우아한 서비스 재개) -s가 : 신호를 보내기
  7. 테스트 구성 파일 구문 오류 여부 : -t -T
  8. , Nginx의 버전 정보를 인쇄 정보 컴파일 : -v -V를

Nginx의 명령과 리눅스 명령의 대부분은 매우 유사합니다, nginx를 더한 기본 지침, 플러스 명령은 매개 변수를 관련. 기본적으로 nginx를이 구성 명령 구성 파일을 실행하기 전에 지정된 위치를 찾을 것입니다,하지만 당신은 구성 파일 -c를 지정할 수 있습니다 및 구성 지시의 -g를 통해 지정할 수 있습니다.

상기 방법은 전형적 Nginx에 공통 리눅스 킬 명령을 통해 신호를 송신함으로써 처리를 실행하는 동작도의 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의 최신 버전을 다운로드, 컴파일 추출한 후, 다음 설치 디렉토리 아래의 sbin 디렉토리에 복사됩니다 nginx를 바이너리 파일의 최신 버전을 컴파일.

# 到官网下载最新版本的 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 nginxNginx의 건강을 확인합니다 :

[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에 그것이 우리가 뜨거운 배포 할 이야기, nginx를 실행하는 과정을 마스터하려면 다음 필요가 신호를 보냅니다, 현재 PID의 시작은 1752입니다 볼 수 있습니다.

# 发送 USR2 信号给旧版本主进程号,使 nginx 的旧版本停止接收请求,用 nginx 新版本接替
kill -USR2 1752

그리고 다음을 통해 ps -ef | grep nginxnginx를 건강을 확인합니다 :

[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를 모든 작업자 프로세스 오프 이전 우아한 회전을 알려주세요.

# 发送 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 메이저 프로세스가 여전히 존재에서 찾을 수 있습니다 : 문제가있는 경우, 이전 버전으로 돌아 가야, 우리는 그것을 다시 그를 작업자 프로세스, 오프 새 버전을 올려 수 있도록하는 명령을 보낼 수 있습니다. 우리가 버전 롤백을 돕기 위해 여기 남아있다.

당신이 유지하는 마스터 프로세스를 종료하려는 경우, 당신은 할 수 kill -QUIT달성 명령 수 :

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

구현, 프로세스를 1752 종료 후 80 포트 4391가있다 NETSTAT lntup하여 청취 과정 (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

위 수술 후, 우리는 그냥 그렇게 직접 생산 사용하지 않는 것이 좋습니다, 운영 프로세스 잘라 위의 작업 로그를 이해하기 위해, 로그의 절단을 완료했다. 그것은 쉘 스크립트를 작성하는 것이 좋습니다, 쉘 스크립트의 정규 구현을 통해 이동합니다.

샘플 스크립트 :

#!/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에 대한 설명과 소개, 작업이 여전히 더 많은 연습이 필요합니다, 연습은 완벽을 만들지.

파일

파일

추천

출처www.cnblogs.com/wupeixuan/p/11780405.html