Nginx 부 드 러 운 업그레이드 와 부 드 러 운 리 셋
부 드 럽 게 업그레이드 하 는 과정 에서 Nginx 서버 는 USR 2 신 호 를 받 은 후 먼저 오래된 nginx. pid 파일 에 접 두 사 를 추가 합 니 다. oldbin 을 nginx. pid. oldbin 파일 로 바 꾼 다음 새 버 전의 Nginx 서버 의 바 이 너 리 파일 을 실행 하여 서 비 스 를 시작 합 니 다. 이 때 는 컴 파일 된 새 버 전의 바 이 너 리 를 sbin 폴 더 에 미리 복사 해 야 합 니 다.새로운 서비스 가 시작 되면 시스템 에는 신 구 두 개의 Nginx 서비스 가 공동으로 웹 서 비 스 를 제공 할 것 이다.이후 기 존 Nginx 서버 프로 세 스에 WINCH 신 호 를 보 내 기 존 Nginx 서 비 스 를 부 드 럽 게 중단 시 키 고 nginx. pid. oldbin 파일 을 삭제 해 야 합 니 다.WINCH 신 호 를 보 내기 전 오류 가 발견 되면 언제든지 새로운 Nginx 서 비 스 를 중단 할 수 있다.
이전에 naginx 1.8.0 을 컴 파일 하여 설치 하 였 습 니 다.컴 파일 할 때 경로 에 따라 -- prefix = / nginx / 만 지정 합 니 다.nginx 1.8.0 에서 nginx 1.9.6 로 업그레이드 하 는 것 을 보 여 줍 니 다.
[root@c7node1 ~]# /nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
configure arguments: --prefix=/nginx/
[root@c7node1 ~]# ss -tnl
LISTEN 0 12 *:80 *:*
업그레이드 과정 에서 웹 이 중단 되 지 않 았 음 을 테스트 하기 위해 초당 페이지 서 비 스 를 요청 할 수 있 는 스 크 립 트 를 제공 합 니 다.로그 에 기록
[root@c7node1 test]# vim http.sh
#!/bin/bash
#
URL="http://192.168.0.66/"
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
if [ $HTTP_CODE == 200 ];then
echo Success.$HTTP_CODE >> /tmp/ping.http
else
echo Failure.404 >> /tmp/ping.http
fi
# http , ping.http
[root@c7node1 test]# vim cron.sh
#!/bin/bash
#
while true;do
/test/http.sh
sleep 1
done
# cron
[root@c7node1 test]# crontab -e
* * * * * /bin/bash /test/cron.sh
# cron.sh
컴 파일 nginx - 1.9.6 을 다운로드 하고 부 드 러 운 업 그 레이 드 를 진행 합 니 다. Nginx 서버 의 부 드 러 운 업 그 레이 드 를 실현 하기 위해 새로운 서비스 설치 경 로 는 기 존의 서비스 설치 경로 와 일치 해 야 합 니 다.어떤 이유 로 일치 하지 않 으 면 오래된 서비스의 설치 경 로 를 새로운 서비스의 설치 경로 로 변경 해 야 합 니 다. 변경 방법 은 (nginx - p NewInstallPath) 입 니 다.
[root@c7node1 ~]# wget http://nginx.org/download/nginx-1.9.6.tar.gz
[root@c7node1 ~]# tar xf nginx-1.9.6.tar.gz
[root@c7node1 ~]# cd nginx-1.9.6
[root@c7node1 nginx-1.9.6]# ./configure --prefix=/nginx/
[root@c7node1 nginx-1.9.6]# make
[root@c7node1 mv /nginx/sbin/nginx{,.bak}
# nginx, nginx , nginx ,
[root@c7node1 nginx-1.9.6]# cp objs/nginx /nginx/sbin/
# nginx
[root@c7node1 sbin]# /nginx/sbin/nginx -t
nginx: the configuration file /nginx//conf/nginx.conf syntax is ok
nginx: configuration file /nginx//conf/nginx.conf test is successful
# nginx
[root@c7node1 nginx-1.9.6]# kill -USR2 `cat /nginx/logs/nginx.pid`
# Nginx , Nginx
[root@c7node1 nginx-1.9.6]# cd /nginx/logs/
access.log error.log nginx.pid nginx.pid.oldbin
# nginx.pid nginx.pid.oldbin, nginx nginx.pid
[root@c7node1 logs]# kill -WINCH `cat /nginx/logs/nginx.pid.oldbin`
# worker process
[root@c7node1 logs]# nginx -V
nginx version: nginx/1.9.6
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
configure arguments: --prefix=/nginx/
[root@c7node1 logs]# ps -aux |grep nginx
root 990 0.0 0.2 24316 1880 ? S 11:25 0:00 nginx: master process nginx
nobody 992 0.9 0.2 24724 1712 ? S 11:25 0:03 nginx: worker process
root 2357 0.0 0.1 24308 896 ? Ss 11:20 0:00 nginx: master process nginx
# master process
테스트 결과
[root@c7node1 ~]# sort /tmp/ping.http | uniq -c
32822 Success.200
#
이 부분 은 'Nginx 고성능 웹 서버 상세 설명' 을 참고 합 니 다.
Nginx 서비스 빠 른 정지: 현재 Nginx 서비스 가 처리 하고 있 는 모든 네트워크 요청 을 즉시 중단 하고 연결 을 즉시 버 리 고 작업 을 중단 하 는 것 을 말 합 니 다.
[root@c7node1 ~]# kill -TERM `cat /nginx/logs/nginx.pid`
[root@c7node1 ~]# kill -INT `cat /nginx/logs/nginx.pid`
Nginx 서비스 정지: Nginx 서비스 가 현재 처리 중인 네트워크 요청 을 처리 할 수 있 도록 허용 하지만 새로운 요청 을 받 아들 이지 않 고 연결 을 닫 고 작업 을 중단 하 는 것 을 말 합 니 다.
[root@c7node1 ~]# kill -QUIT `cat /nginx/logs/nginx.pid`
Nginx 서 비 스 를 천천히 다시 시작 합 니 다: Nginx 서비스 프로 세 스 가 신 호 를 받 은 후 먼저 새로운 Nginx 프로필 을 읽 습 니 다. 설정 문법 이 정확 하면 새로운 Nginx 서 비 스 를 시작 한 다음 오래된 서비스 프로 세 스 를 천천히 닫 습 니 다. 새로운 Nginx 프로필 에 문제 가 있 으 면 오류 가 표 시 됩 니 다. 오래된 Nginx 프로 세 스 를 사용 하여 서 비 스 를 제공 합 니 다.
[root@c7node1 ~]# kill -HUP `cat /nginx/logs/nginx.pid`
로그 절단: 로그 파일 을 다시 엽 니 다. 로그 절단 에 자주 사 용 됩 니 다.
[root@c7node1 ~]# kill -USR1 `cat /nginx/logs/nginx.pid`
Nginx 서비스 업그레이드: 새로운 버 전의 Nginx 파일 로 서 비 스 를 시작 한 후 기 존의 Nginx 프로 세 스 를 천천히 중단 합 니 다.
[root@c7node1 ~]# kill -USR2 `cat /nginx/logs/nginx.pid`
워 커 프로 세 스 정지: Nginx 서비스 업그레이드 에 사용
[root@c7node1 ~]# kill -WINCH `cat /nginx/logs/nginx.pid`
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.