NGINX 학습 노트 (1)

4231 단어
1. 배경
최근 에 서버 학습 을 계획 하기 시 작 했 습 니 다. 먼저 가장 많이 본 것 은 Nginx 입 니 다. 그래서 블 로 그 를 시작 한 것 은 필 기 를 하고 학습 과정 을 기록 하 며 지식 을 공 고 히 하기 위해 서 입 니 다.
2. 설치
손 에 애플 컴퓨터 밖 에 없 으 니 이 위 에서 괴 롭 히 세 요.
흥 이 나 서 단말 기 를 켜 고 명령 brew install nginx 를 입력 하면 오류 가 발생 합 니 다. 각종 'permisson denied' 는 시스템 버 전 macOS 10.15 를 확인 하고 새 버 전 으로 인 한 화 를 입 었 습 니 다. 인터넷 에서 찾 아 보고 명령 을 두 드 려 서 해결 합 니 다.
sudo chown -R $(whoami) $(brew --prefix)/*

재 설치
brew install nginx

설치 성공 보이 기
==> nginx
Docroot is: /usr/local/var/www

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To have launchd start nginx now and restart at login:
  brew services start nginx
Or, if you don't want/need a background service you can just run:
  nginx

OK, 시작 해 보 세 요. nginx 를 두 드 리 면 또 오류 가 발생 합 니 다.
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] still could not bind()

포트 번호 8080 이 이미 점용 되 었 습 니 다. 좋 습 니 다. 설정 파일 을 바 꾸 고 다른 포트 번 호 를 바 꾸 어 다시 보 겠 습 니 다.
vim /usr/local/etc/nginx/nginx.conf

포트 번호 설정 찾기
server {
        listen       8080;
        server_name  localhost;

8080 을 8081 로 바 꾸 고 nginx 를 다시 시작 합 니 다. 잘못 보고 하지 않 았 습 니 다. 모니터 에 사이트 localhost: 8081, "Welcome to nginx!" 를 입력 하 십시오.
첫 번 째 설 치 는 드디어 끝 났 습 니 다!
3. 상용 명령
먼저 nginx 프로 세 스 를 볼 게 요.
ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'

다음 과 같이 보이 기:
 PID  PPID USER        %CPU      VSZ WCHAN  COMMAND
 6495     1 xxx         0.0  4291076 -      nginx: master process nginx
 6514  6495 xxx         0.0  4291532 -      nginx: worker process
 6517  3560 xxx         0.0  4268280 -      egrep (nginx|PID)

nginx 는 두 개의 프로 세 스, master process 와 worker process 를 표시 합 니 다.master process 는 설정 파일 을 읽 고 검사 하 며 worker process 를 유지 하 는 데 사 용 됩 니 다. worker process 는 nginx 의 구체 적 인 작업 프로 세 스 입 니 다. 설정 파일 에서 worker 를 설정 할 수 있 습 니 다.processes 의 수량 을 2 로 바 꾸 려 고 시도 하면 두 개의 worker process 가 나타 납 니 다. worker process 설정 은 얼마나 적당 합 니까?CPU 커 널 수 에 따라 설정 할 수 있 는 지 알 고 있 으 며, 설정 항목 을 추가 로 연구 할 때 깊이 있 게 연구 할 수 있 습 니 다.
nginx 프로 세 스 를 제어 하 는 것 은 신 호 량 을 통 해 이 루어 집 니 다. 대략적인 형식 은 다음 과 같 습 니 다.
nginx -s 

모두 다음 과 같은 몇 가지 신호 가 있다.
시그 널
설명 하 다.
quit
자원 방출 후 정지
reload
프로필 다시 불 러 오기
reopen
로그 파일 다시 열기
stop
즉시 정지 하 다
 
 
 
 
 
 
또 다른 신 호 량 을 보 내 는 방식 이 있다.
kill - 

이런 신 호 량 은 모두 다음 과 같은 몇 가지 가 있다.
시그 널
설명 하 다.
TERM,INT
즉시 정지 (동 stop)
HUP
프로필 다시 불 러 오기 (reload 와 함께)
USR1
로그 파일 다시 열기 (같은 reopen)
USR2
실행 가능 한 파일 업데이트
QUIT
자원 방출 후 정지 (같은 quit)
WINCH
자원 방출 후 worker 프로 세 스 정지
 
 
 
 
 
 
 
다음 두 신 호 량 의 처리 절 차 를 중점적으로 설명 하 다.
  • 프로필 업데이트: master process 가 HUP 신 호 를 받 은 후 먼저 프로필 의 합 법성 을 검증 하고 log 파일 을 다시 열 고 새로운 socket 링크 를 엽 니 다. 이 과정 이 실패 하면 오래된 설정 으로 계속 작업 합 니 다.성공 하면 새로운 워 커 프로 세 스 를 열 고 오래된 워 커 프로 세 스에 정지 요청 을 보 냅 니 다. 오래된 워 커 프로 세 스 는 감청 을 중단 하고 현재 작업 이 끝 날 때 까지 자신 을 닫 습 니 다.
  • 실행 가능 한 파일 업데이트: master process 는 USR 2 신 호 를 받 은 후 관련 파일 이름 을 바 꾸 고 접 두 사 를 추가 합 니 다. oldbin;그리고 새로운 master process 를 시작 합 니 다. 새로운 master process 는 새로운 프로필 을 사용 하여 worker process 를 시작 합 니 다.오래된 master process 는 WINCH 신 호 를 받 으 면 오래된 worker process 를 중단 합 니 다. 이때 오래된 master process 는 여전히 감청 상태 에 있 습 니 다. 새로운 master process 가 사용 되 지 않 을 때 master process 는 계속 작업 합 니 다.오래된 worker process 가 멈 추 면 오래된 master process 는 QUIT 신 호 를 받 고 자원 이 정지 되 며 이때 업데이트 가 완료 되 었 습 니 다.
  • 좋은 웹페이지 즐겨찾기