[nginx] apt를 이용한 nginx 설치 및 기초 가이드
카테고리: Nginx
태그: Nginx
✨환경
- Ubuntu 18.04 (kernel: 4.15.0-197-generic)
🎢nginx 설치
1. nginx 설치에 필요한 패키지 설치:
2. nginx 서명 키 import:
3. 키 검증:
- 출력의 결과는 [fingerprint] 와 같아야 함.
- 같지 않다면 폐기
4. nginx 패키지에 대한 apt 리포지토리 설정:
- 안정 버전
- 기본 버전
5. 패키지 우선순위 변경:
6. nginx 설치:
1. nginx 설치에 필요한 패키지 설치:
$ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
# gnupg2 - gpg 사용을 위함
2. nginx 서명 키 import:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# "curl https://nginx.org/keys/nginx_signing.key" - 서명 키 출력
# "| gpg --dearmor" - 키를 GPG 파일 형식으로 변환
# "| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null" - ASCII로 압축된 값을 입력으로하여 /usr/share/keyrings/nginx-archive-keyring.gpg 파일을 쓰고 표준 출력은 /dev/null 장치로 버림
Ubuntu에서 /usr/share/keyrings 디렉토리는 apt-key를 저장하는 기본 위치이다.
3. 키 검증:
$ gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>
# 3.1 출력결과가 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 와 같으면 무결성을 보장한다.
# 3.2 같지 않다면 해당 키는 무결성에 침해된 것으로 간주하고 폐기해야 한다.
4. nginx 패키지에 대한 apt 리포지토리 설정:
4.1 안정 버전 리포지토리 설정
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
4.2 기본 버전 리포지토리 설정
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
# lsb_release - ubuntu 18.04 의 경우 bionic
# sudo tee /etc/apt/sources.list.d/nginx.list - 표준 출력 및 nginx.list 파일에 앞선 echo "..." 문자열 값을 쓴다.
Ubuntu에서 /etc/apt/sources.list.d 디렉토리는 추가적인 리포지토리를 지정하는 위치이다.
5. 패키지 우선순위 변경:
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
sources.list 파일에 둘 이상의 소스에 대한 참조가 포함되어 있는 경우, apt-get은 기본적으로 sources-list 파일에서 가장 먼저 나열된 소스에서 다운로드 합니다. 만약 사용자가 임의로 우선순위를 바꾸고 싶은 경우 /etc/apt/preferences.d/ 디렉토리를 활용할 수 있습니다.
6. nginx 설치
sudo apt update
sudo apt install nginx
📌전체 명령어
#!/bin/bash
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
if [[ `gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg | sed -n -e '2p'` = " 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62" ]]
then
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
sudo apt update
sudo apt install nginx
else
echo "검증되지 않은 키 입니다."
fi
⌨️nginx start, stop, reload
nginx를 시작하려면 /usr/sbin/nginx 실행합니다. nginx가 시작되면 -s 매개변수와 함께 실행 파일을 호출하여 제어할 수 있습니다.
- stop # 빠른종료
- quit # 정상적인 종료
- reload # 구성 파일 reload
nginx -s quit
작업자 프로세스가 현재 요청 처리를 완료할 떄까지 기다리면서 nginx 프로세스를 중지하려면 다음 명령을 실행할 수 있습니다.
nginx -s quit
or
kill -s QUIT [마스터 프로세스 PID]
nginx에는 하나의 마스터 프로세스와 여러 작업자 프로세스가 있습니다. 마스터 프로세스의 주요 목적은 구성을 읽고 평가하며 작업자 프로세스를 유지 관리하는 것입니다. 작업자 프로세스는 요청을 실제로 처리합니다.
nginx -s reload
구성을 다시 로드하려면 다음을 실행합니다.
nginx -s reload
구성 파일의 변경 사항은 reload 하거나 restart 할 때까지 적용되지 않습니다.
마스터 프로세스가 reload 신호를 전달받으면 새 구성 파일의 구문 유효성을 확인하고 변경된 구성을 적용하려고 시도합니다. 마스터 프로세스는 새 작업자 프로세스를 시작하고 이전 작업자 프로세스에 종료를 요청하는 신호를 보냅니다. 이전 작업자 프로세스는 종료 명령을 받고 새 연결 수락을 중지하고 현재 진행중인 요청을 계속 처리합니다. 모두 처리가 완료되면 이전 작업자 프로세스는 종료됩니다.
🧱구성 파일의 구조
기본 구조
- nginx는 구성 파일에 지정된 지시문에 의해 제어됩니다.
- 지시문의 단순 지시문과 블록 지시문으로 나뉘는데 단순 지시문은 공백으로 구분된 이름과 매개변수로 구성되며 세미콜론(;)으로 끝납니다. 블록 지시어는 세미콜론 대신 중괄호 {}로 둘러싸여 있습니다.
- 블록 지시문이 중괄호 안에 다른 지시문을 포함하는 경우 이를 컨텍스트라고 합니다. (예: events, http, server, location)
- 컨텍스트 외부에 있는 지시문은 기본 컨텍스트에 있는 것으로 간주됩니다.
- #기호 뒤의 나머지 행은 주석으로 간주됩니다.
최상위 지시어
- events # 일반 연결 처리
- http # HTTP 트래픽
- mail # Mail 트래픽
- stream # TCP 및 UDP 트래픽
가상 서버
- 각 트래픽 처리 컨텍스트에서 하나 이상의
server블록을 포함 하여 요청 처리를 제어하는 가상 서버를 정의합니다. - HTTP 트래픽(http 컨텍스트)의 경우 각
server지시문은 특정 도메인 또는 IP 주소의 리소스에 대한 요청 처리를 제어합니다.server컨텍스트에 있는 하나 이상의location컨텍스트는 특정 URI을 처리하는 방법을 정의합니다.
지시문 상속
- 일반적으로 하위 컨텍스트는 상위 수준에 포함된 지시문 설정을 상속합니다. 일부 지시문은 여러 컨텍스트에 나타날 수 있으며, 이 경우 하위 컨텍스트에서 상위 컨텍스트에 정의된 지시문을 재정의할 수 있습니다.
📌출처
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기