Nginx 노트 시리즈 (3) - Nginx 의 부 드 러 운 업그레이드
6937 단어 nginx
실행 중인 nginx 서버 에 대해 서 는 높 은 버 전의 nginx 로 업그레이드 해 야 합 니 다.아마도 당신 은 직접 nginx 를 멈 추고 업그레이드 작업 을 마 친 후에 nginx 를 다시 시작 할 것 입 니 다.이런 방식 의 단점 은 분명 하 다. 처리 하고 있 는 요청 들 은 바로 잃 어 버 릴 것 이다.(약간 막장 영화 속 XXX: "이 날 은 못 살아!" 브러시...) 강제 업그레이드, 서버 에서 실행 되 는 프로 세 스 가 영향 을 받 습 니 다.따라서 nginx 를 멈 추 지 않 고 nginx 를 부 드 럽 게 업그레이드 해 야 합 니 다.
부 드 러 운 업그레이드: 실행 중인 프로 세 스 를 멈 추 지 않 습 니 다. 이 프로 세 스 는 요청 을 계속 처리 하지만 더 이상 요청 을 받 지 않 습 니 다. 이 오래된 프로 세 스 는 처리 중인 요청 을 처리 한 후에 중단 합 니 다.(약간 무협 영화 속 XXX: "내 가 이 몇 가지 일 을 끝내 고 손 을 씻 을 게")
부 드 러 운 업그레이드 에서 새로운 프로 세 스 가 작업 을 맡 을 것 입 니 다.
다음은 부 드 러 운 업그레이드 의 기본 절차 입 니 다.
본문 환경: Fedora 시스템 원본 nginx 버 전 1.8.1
승급 목표: nginx 평활 1.9.12 로 승급
단계:
1) nginx 의 최신 가방 을 다운로드 합 니 다.본문 에서 선택 한 것 은 nginx - 1.9.12. tar. gz 이다.
2) 본 시리즈 의 첫 번 째 블 로그 글 에 소 개 된 대로 nginx - 1.9.12. tar. gz 를 압축 해제, configure, make 세 단계 로 한다.하지만 여 기 는 절대 make install 하지 마 세 요.우 리 는 이번에 설치 가 아니 라 업그레이드 이기 때문이다!!
[neil@neilhost Downloads]$ cd ~/Documents/
[neil@neilhost Documents]$ ll
1800
drwxr-xr-x. 5 neil neil 4096 4 22 2015 log
drwxr-xr-x. 4 neil neil 4096 2 29 20:17 MyCraft
drwxr-xr-x. 9 neil neil 4096 3 3 11:27 nginx-1.8.1
-rw-r-----. 1 neil neil 833473 3 3 11:02 nginx-1.8.1.tar.gz
-rw-r-----. 1 neil neil 899183 3 8 16:01 nginx-1.9.12.tar.gz
-rw-r--r--. 1 neil neil 81911 3 3 13:40 nginxbushu.txt
drwxr-xr-x. 5 neil neil 4096 5 23 2015 ProgramAPP
drwxr-xr-x. 3 neil neil 4096 6 5 2015 workspace-sts-3.6.4.RELEASE
[neil@neilhost Documents]$ tar -zxvf nginx-1.9.12.tar.gz
nginx-1.9.12/
nginx-1.9.12/auto/
nginx-1.9.12/conf/
nginx-1.9.12/contrib/
nginx-1.9.12/src/
nginx-1.9.12/configure
nginx-1.9.12/LICENSE
****** XXX
nginx-1.9.12/auto/cc/msvc
nginx-1.9.12/auto/cc/name
nginx-1.9.12/auto/cc/owc
nginx-1.9.12/auto/cc/sunc
[neil@neilhost Documents]$ cd nginx-1.9.12/
[neil@neilhost nginx-1.9.12]$ ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[neil@neilhost nginx-1.9.12]$ ./configure
checking for OS
+ Linux 3.17.4-301.fc21.x86_64 x86_64
checking for C compiler ... found
+ using GNU C compiler
+ gcc version: 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
****** XXX
checking for zlib library ... found
creating objs/Makefile
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using builtin md5 code
+ sha1 library is not found
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
[neil@neilhost nginx-1.9.12]$ make
make -f objs/Makefile
make[1]: Entering directory '/home/neil/Documents/nginx-1.9.12'
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
-o objs/src/core/nginx.o \
src/core/nginx.c
****** XXX
objs/src/http/modules/ngx_http_upstream_hash_module.o \
objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \
objs/src/http/modules/ngx_http_upstream_least_conn_module.o \
objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
objs/src/http/modules/ngx_http_upstream_zone_module.o \
objs/ngx_modules.o \
-ldl -lpthread -lcrypt -lpcre -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/home/neil/Documents/nginx-1.9.12'
[neil@neilhost nginx-1.9.12]$ ll
688
drwxr-xr-x. 6 neil neil 4096 3 8 16:02 auto
-rw-r--r--. 1 neil neil 259440 2 24 22:53 CHANGES
-rw-r--r--. 1 neil neil 395257 2 24 22:53 CHANGES.ru
drwxr-xr-x. 2 neil neil 4096 3 8 16:02 conf
-rwxr-xr-x. 1 neil neil 2481 2 24 22:53 configure
drwxr-xr-x. 4 neil neil 4096 3 8 16:02 contrib
drwxr-xr-x. 2 neil neil 4096 3 8 16:02 html
-rw-r--r--. 1 neil neil 1397 2 24 22:53 LICENSE
-rw-rw-r--. 1 neil neil 332 3 8 16:03 Makefile
drwxr-xr-x. 2 neil neil 4096 3 8 16:02 man
drwxrwxr-x. 3 neil neil 4096 3 8 16:03 objs
-rw-r--r--. 1 neil neil 49 2 24 22:53 README
drwxr-xr-x. 9 neil neil 4096 3 8 16:02 src
[neil@neilhost nginx-1.9.12]$
이후 업 그 레이 드 된 규범 에 따라 현재 실행 중인 nginx 1.8.1 의 실행 프로그램 을 백업 해 야 합 니 다.
[neil@neilhost nginx-1.9.12]$ cd /usr/local/nginx/sbin/
[neil@neilhost sbin]$ ls
nginx
[neil@neilhost sbin]$ sudo cp nginx nginx.old
[sudo] password for neil:
[neil@neilhost sbin]$ ls
nginx nginx.old
[neil@neilhost sbin]$
여기 서 우 리 는 먼저 현재 의 상 태 를 살 펴 볼 수 있다.현재 nginx 버 전 및 nginx 가 실행 중인 상태:
[neil@neilhost sbin]$ pstree -p | grep nginx
|-nginx(8562)---nginx(8563)
[neil@neilhost sbin]$ sudo ./nginx -V
nginx version: nginx/1.8.1
built by gcc 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
configure arguments:
[neil@neilhost sbin]$
그 후에 우 리 는 부 드 럽 게 업 그 레이 드 를 시작 했다.현재 실행 중인 nginx 의 sbin 디 렉 터 리 에 있 는 1.8.1 버 전의 nginx 를 다운로드, 압축 해제, configure, make 후 nginx 1.9.2 폴 더 의 obbs 디 렉 터 리 에 있 는 nginx 프로그램 을 복사 하고 교체 합 니 다.
[neil@neilhost objs]$ cd /usr/local/nginx/sbin/
[neil@neilhost sbin]$ ls
nginx nginx.old
[neil@neilhost sbin]$ sudo ./nginx -V
nginx version: nginx/1.9.12
built by gcc 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
configure arguments:
[neil@neilhost sbin]$ pstree -p | grep nginx
|-nginx(8562)---nginx(8563)
[neil@neilhost sbin]$
이로써 우리 의 nginx 부 드 러 운 업 그 레이 드 는 완성 되 었 다.nginx 의 서비스 가 멈 추 지 않 았 음 을 발 견 했 습 니 다. 그러나 이때 nginx 의 버 전 은 1.9.12 버 전 으로 업그레이드 되 었 습 니 다.또한 nginx 의 메 인 프로 세 스 와 서비스 프로 세 스 도 이 로 인해 ID 를 바 꾸 지 않 았 습 니 다.전체적인 과정 은 매끈매끈 하 다.또한, 우 리 는 오래된 버 전 1.8.1 의 nginx 를 백업 합 니 다. 즉, nginx. old 입 니 다.
마지막 으로 하 드 디스크 결벽 증 이 라면 다운로드 와 make 코드 팩 을 삭제 하 세 요.
[neil@neilhost sbin]$ rm -f ~/Documents/nginx-1.9.12.tar.gz
[neil@neilhost sbin]$ rm -rf ~/Documents/nginx-1.9.12/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.