미니 PC에 Nginx 설치 하기
간단한 서버를 구축하기 위해 미니 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
과정 설명
- curl https://nginx.org/keys/nginx_signing.key : Nginx 공식 사이트에서 GPG 키를 다운로드.
- gpg --dearmor : GPG 키를 바이너리 형식으로 변환하여 저장할 수 있도록 처리.
- 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
설명
- sudo apt update : APT 저장소 목록을 새로 고침하여 추가된 Nginx 저장소를 반영.
- 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.