미니 프로젝트/마이 서버

미니 PC에 Nginx 설치 하기

시샐 2025. 6. 24. 17:32

 

간단한 서버를 구축하기 위해 미니 PC에 리눅스 서버(Ubuntu 24.04 LTS)를 설치했다. Http 웹서버로는 Nginx를 사용하기로 했다.

잘 알고 하는게 아니라 작업 기록용으로 하는 것이므로 잘못된 내용이 있을 수 있다.

 

 

 

https://nginx.org/en/linux_packages.html#Ubuntu

 

nginx: Linux packages

nginx: Linux packages Supported distributions and versions nginx packages are available for the following Linux distributions and versions: RHEL and derivatives Version Supported Platforms 8.x x86_64, aarch64/arm64 9.x x86_64, aarch64/arm64 10.x x86_64, aa

nginx.org

 

 

 

Nginx의 설치는 위 문서를 따랐다. 뭔가 어지러운 내용이 많아서 챗GPT에게 도움을 요청했다.

 

 

1. 필수 패키지 설치

 

먼저, 필요한 패키지를 설치한다.

 

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

 

 

각 패키지의 역할

1. curl : 데이터를 다운로드하는 명령줄 도구 (여기서는 GPG 키 다운로드에 사용).

2. gnupg2 : GPG(GNU Privacy Guard) 패키지로, 패키지 서명을 확인하는 데 필요.

3. ca-certificates : 신뢰할 수 있는 인증서를 제공하여 HTTPS 연결을 검증.

4. lsb-release : Ubuntu 배포판 정보를 가져오는 유틸리티 (lsb_release -cs 사용).

5. ubuntu-keyring : Ubuntu의 공식 키를 관리하는 패키지.

이 단계는 Nginx 패키지가 신뢰할 수 있는 소스로부터 제공되는지 확인하는 과정이다.


2. Nginx 공식 GPG 키 가져오기 및 설정

패키지의 진위성을 확인하기 위해 Nginx에서 제공하는 GPG 서명 키를 다운로드하고 저장한다.

 

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

 

 

 

과정 설명

  1. curl https://nginx.org/keys/nginx_signing.key : Nginx 공식 사이트에서 GPG 키를 다운로드.
  2. gpg --dearmor : GPG 키를 바이너리 형식으로 변환하여 저장할 수 있도록 처리.
  3. sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg : 변환된 키를 /usr/share/keyrings/nginx-archive-keyring.gpg에 저장.

이 과정을 통해 APT 패키지 관리자(apt)가 Nginx의 패키지를 신뢰할 수 있도록 설정한다.

 


 

 

3. GPG 키 확인

다운로드한 GPG 키가 올바른지 검증한다.

 

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: 2027-05-24] 573B...BF62 uid nginx signing key <signing-key@nginx.com>

 

 

여기에서 573B...가 Nginx 공식 서명 키의 지문(fingerprint)이다.

이 값이 일치하면 올바른 키가 다운로드된 것이다.

 


 

4. APT 저장소 추가

Ubuntu의 기본 저장소에는 Nginx가 있지만, 공식 Nginx 저장소를 추가하면 최신 버전을 설치할 수 있다.

 

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

 

 

설명

1. deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu : Nginx 공식 저장소를 사용하도록 추가.

2. `lsb_release -cs` : 현재 사용하는 Ubuntu 코드네임을 자동으로 삽입 (focal, jammy 등).

3. sudo tee /etc/apt/sources.list.d/nginx.list : 위 내용을 /etc/apt/sources.list.d/nginx.list에 저장하여 apt가 이 저장소를 인식하도록 설정.

 

만약 메인라인(Mainline) 버전을 사용하려면 다음 명령을 대신 실행한다.

 

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

 

 

차이점

  • 기본 저장소 : 안정적인 Nginx 버전 제공.
  • Mainline 저장소 : 최신 기능이 포함된 버전 제공(단, 테스트가 충분히 이루어지지 않았을 가능성이 있음).

 

* Mainline은 사용하지 않고 기본 설치만 했다

 


 

5. APT 패키지 우선순위 설정 (Pinning)

기본 Ubuntu 저장소보다 Nginx 공식 저장소에서 제공하는 패키지를 우선 설치하도록 설정한다.

 

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx

 

 

설명

  • Package: * : 모든 패키지에 적용.
  • Pin: origin nginx.org : nginx.org에서 제공하는 패키지를 우선함.
  • Pin: release o=nginx : nginx 저장소에서 제공된 패키지를 선택.
  • Pin-Priority: 900 : 패키지 우선순위를 높여 Ubuntu 기본 저장소보다 먼저 선택되도록 함.

이 과정을 수행하면 이후 sudo apt install nginx를 실행할 때 Ubuntu 저장소의 Nginx가 아니라 공식 Nginx 저장소에서 제공하는 최신 버전이 설치된다.


 

6. Nginx 설치

이제 시스템 패키지 목록을 업데이트한 후 Nginx를 설치한다.

 

sudo apt update sudo apt install nginx

 

 

설명

  1. sudo apt update : APT 저장소 목록을 새로 고침하여 추가된 Nginx 저장소를 반영.
  2. sudo apt install nginx : Nginx를 설치.

설치 후 Nginx가 자동으로 시작되며, 다음 명령어로 상태를 확인할 수 있다.

 

systemctl status nginx

 

다음과 같은 출력이 나왔다. 서버가 잘 동작하고 있다. 물론 아직 하는 일은 없다.

 

sigsaly@sigsaly-server:~$ systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-04-04 09:23:50 UTC; 18h ago
       Docs: https://nginx.org/en/docs/
    Process: 904 ExecStart=/usr/sbin/nginx -c ${CONFFILE} (code=exited, status=0/SUCCESS)
   Main PID: 909 (nginx)
      Tasks: 5 (limit: 18983)
     Memory: 6.3M (peak: 7.1M)
        CPU: 65ms
     CGroup: /system.slice/nginx.service
             ├─909 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ├─911 "nginx: worker process"
             ├─912 "nginx: worker process"
             ├─913 "nginx: worker process"
             └─915 "nginx: worker process"

Apr 04 09:23:50 sigsaly-server systemd[1]: Starting nginx.service - nginx - high performance web server...
Apr 04 09:23:50 sigsaly-server systemd[1]: Started nginx.service - nginx - high performance web server.
반응형