본문 바로가기
개발 💻/메모

[Ubuntu] 인터넷 없는 내부망에 Nginx 설치하기 (실패)

by 감사로봇 2025. 4. 3.

[출처] nginx.org 공식 (무려 20년이나 됐다니 축하)

 

인터넷 없는 내부망에 Nginx 설치하기 (실패)

인터넷이 되지 않는, Ubuntu 환경에서 Nginx 를 설치해야 했다. 그러면 당연히 인터넷이 되는 환경에서 설치 파일들을 마련하여, SCP나 FTP 등으로 넘겨주고 설치를 하는 수밖에 없다.

결론을 이야기하자면, 일단 실패(포기)했다. 이유는 너무 많은 종속성 설치를 연쇄적으로 요구하는데, 이걸 다 점검하면서 하기엔 시간이 부족했기 때문이다.

그러므로 실제로 이 글을 따라 하시면, 똑같이 포기하게 될 수도 있으므로 참고만 하시기를 바란다. 만약, 끈기와 시간이 있다면 모든 종속성을 설치해서 성공할 수 있을까...?

다른 방법으로, 이미 설치된 Nginx 를 모두 말아서 넘기는 방법이 있다고 하는데, 나중에 된다면 시도해 봐야겠다.

 

그래도 열심히 했으니, 일단 시도해본 방법을 적어보려고 한다.

방법을 요약하면,

  • Ubuntu 버전을 파악하고 버전에 맞는 Nginx deb 를 설치
  • 관련된 종속성을 파악하여 설치하고, 설치한 종속성들을 모두 이관
  • 내부망 Ubuntu 에서 설치하면서, 다시 필요한 것이 있다면 반복

수행한 PC 환경들은 아래와 같다.

  • 내부망(인터넷 X)에 있는 Ubuntu 22.04
  • 인터넷이 되는 Ubuntu 24.04
  • 중간에서 파일을 전달해줄 Windows PC (딱히 하는 것 없음)

 

내부망에 Nginx 설치하기 위해 시도한 우여곡절들

1. Ubuntu 24.04 에서 냅다 설치 시작
(결론: 실패)

먼저, 내부망에 있는 PC 의 버전을 파악해봤다.


        
$ uname -a
Linux {PCNAME} 5.15.0-122-generic #132-Ubuntu SMP Thu Aug 30 13:01:02 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

 

어쩌고 저쩌고 나오는데, Ubuntu 버전을 잘 모르겠다. 아래 명령어로 다시 확인했다.


        
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

음, 확실히 Ubuntu 22.04 jammy 가 맞다.

 

그러나 가지고 있던 다른 Ubuntu 환경은 24.04 이다.
버전이 달라도 할만하지 않을까? 싶지만, 다음과 같은 문제가 있었다.

 

Ubuntu 24.04 에서 아래 명령어로 Nginx 를 설치한다.


        
mkdir nginx-debs
cd nginx-debs
apt-get download nginx
ls

확인했더니, 설치된 파일은 nginx_1.24.0-2ubuntu7.3_amd64.deb 이다.

 

이것을 Ubuntu 22.04 환경으로 넘겨주고 설치해보자.


        
sudo dpkg -i nginx_1.24.0-2ubuntu7.3_amd64.deb

 

아마 설치 오류가 날 것이다.

첫번째로, 해당 Nginx 설치에 필요한 종속성들(Dependencies)이 필요하다고 나온다. (만약, 설치가 잘 되었다면 종속성들이 이미 설치되어 있어서 그렇겠지만, 실제 실행 호환이 잘 되는지는 모르겠다. 여기서 막혔기 때문에...)

가장 처음 필요한 종속성을 보면 libssl3t64 가 필요하다고 나온다. 이것도 Ubuntu 24.04 에서 설치해서 옮겨주려고 했다. 설치 명령어를 입력한다.


        
apt-get download libssl3t64

libssl3t64_3.0.13-0ubuntu3.5_amd64.deb 가 설치되었다.

 

그리고 설치된 deb 파일을 똑같이 Ubuntu 22.04 로 옮겨준 다음 설치를 해보면?


        
$ sudo dpkg -i libssl3t64_3.0.13-0ubuntu3.5_amd64.deb
dpkg: regarding libssl3t64_3.0.13-0ubuntu3.5_amd64.deb containing libssl3t64:amd64:
libssl3t64 breaks libssl3 (<< 3.0.13-0ubuntu3.5)
libssl3:amd64 (version 3.0.2-0ubuntu1.18) is present and installed.
dpkg: error processing archive libssl3t64_3.0.13-0ubuntu3.5_amd64.deb (--install):
installing libssl3t64:amd64 would break libssl3:amd64, and
deconfiguration is not permitted (--auto-deconfigure might help)
Errors were encountered while processing:
libssl3t64_3.0.13-0ubuntu3.5_amd64.deb

에러가 발생하는데, 기존에 설치되어 있는 libssl3 를 breaks 할 수 있다고 한다. 이러면 설치된 다른 종속성들에 영향을 줄 수 있기 때문에 섣불리 시도해볼 수가 없다.

 

그리고 검색을 하면서 찾다 보니...

앞선 설치된 nginx_1.24.0-2ubuntu7.3_amd64.deb 파일이 Ubuntu 24.04 에 맞춰진 것이므로, Ubuntu 22.04 jammy 버전에 맞게 다른 버전의 Nginx 를 설치해야 한다는 것이었다.

 

2. Ubuntu 24.04 에서 Ubuntu 22.04 jammy 에 맞도록 jammy 저장소를 이용
(결론: 성공하는 것처럼 보이지만 포기)

1) Ubuntu 24.04 에서 jammy 저장소를 추가


        
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee /etc/apt/sources.list.d/jammy.list

 

2) jammy 패키지를 우선순위 높게 고정

이 설정을 하지 않으면, 우선순위에 따라 다시 Ubuntu 24.04 에 맞는 저장소로부터 패키지를 먼저 가져오게 된다. 설치를 먼저 해보고, 똑같이 기존 24.04 버전의 Nginx 가 설치된다면, 이것을 실행한다.


        
$ sudo tee /etc/apt/preferences.d/jammy.pref <<EOF
Package: *
Pin: release n=jammy
Pin-Priority: 1001
EOF

 

3) 패키지 인덱스를 다시 불러오기


        
sudo apt update

 

4) 이제 다시 Nginx 를 설치하기


        
apt-get download nginx

 

여기까지 해서 설치를 하니, 파일 이름 nginx_1.18.0-6ubuntu14_amd64.deb 으로 설치되었다. 이것이 바로 Ubuntu 22.04 jammy 버전에 맞는 Nginx 설치 deb 파일인 것이다.

이제 룰루랄라 Ubuntu 22.04 로 deb 파일을 넘기면 되어 보이지만, 가기 전에 종속성을 미리 알아본다. ( 또는, 직접 Ubuntu 22.04 로 deb 파일을 옮겨서 설치해보고 그 결과로 알 수도 있긴 하다.)

 

5) 연계되는 종속성 확인

필요한 종속성을 보는 방법은 다음 명령어를 이용한다.


        
apt-cache depends nginx | grep Depends | awk '{print $2}' | xargs -n1 apt-get download

그러면 'Depends' 에 해당하는 패키지 목록이 나열된다.

 

만약, 목록이 나오지 않는다면, 아래 문구를 먼저 실행하여 실행 결과를 확인하자.


        
apt-cache depends nginx

Depends 결과가 없다면 설치가 이상하게 된 것이니 다시 설치하도록 한다. 

 

한글로 나온다면("의존" 이라고 나온다.), 아래 명령어를 이용한다.


        
apt-cache depends nginx | grep 의존 | awk '{print $2}' | xargs -n1 apt-get download

 

이제 목록으로 나오는 패키지들을 모두 설치하면 된다.

 

6) 종속성 설치

Ubuntu 22.04 버전에 맞는 Nginx 의 종속성을 보면, (설치 시도해서 나온 결과)


        
Package nginx-core is not installed.
Package nginx-full is not installed.
Package nginx-light is not installed.
Package nginx-extras is not installed.

이렇게 나오는데, 이것들도 또한 다 설치해줘야 한다.

 

그럼 똑같이 아래 명령어들을 이용해 준다.


        
apt-get download nginx-core
apt-get download nginx-extras
apt-get download nginx-light
apt-get download nginx-full

 

이러면 각 deb 파일들이 생기게 된다. 현재 가지고 있는 파일들은 다음과 같다.


        
nginx_1.18.0-6ubuntu14_amd64.deb
nginx-full_1.18.0-6ubuntu14_amd64.deb
nginx-light_1.18.0-6ubuntu14_amd64.deb
nginx-extras_1.18.0-6ubuntu14_amd64.deb
nginx-core_1.18.0-6ubuntu14_amd64.deb

 

그럼 5개를 모두 옮겨서 설치하면 되겠지?

다행히, 인터넷을 검색해보니 Ubuntu 22.04 jammy 버전을 위해 설치한 해당 Nginx 1.18.0-6ubuntu14 버전은 다른 Nginx 설치버전들(Full, Light, Extras, Core) 중에 하나를 선택하여 실행시키는 일종의 라우팅 역할 프로그램이므로, 실제로 사용할 버전만 이용해도 된다고 한다.

고로 nginx-core 만 설치하면 되겠다! 라는 생각이 들었다.

 

7) 포기하고 싶은 마음이 드는 순간

자, 그러면 혹시 모르니까 Nginx-core 설치에 필요한 종속성들은 무엇일까? 미리 알아보자.


        
$ apt-cache depends nginx-core
nginx-core
의존: libnginx-mod-http-image-filter
의존: libnginx-mod-http-xslt-filter
의존: libnginx-mod-http-geoip2
의존: libnginx-mod-mail
의존: libnginx-mod-stream
의존: libnginx-mod-stream-geoip2
의존: nginx-common
의존: iproute2
의존: libc6
의존: libcrypt1
의존: libpcre3
의존: libssl3
libssl3t64
의존: zlib1g

 

그렇다. 수많은 의존성들이 우리를 반긴다. 벌써 느낌이 왔겠지만, 이러한 종속성 연계가 얼마나 더 반복될지 알 수가 없다. 새삼 인터넷이 얼마나 소중한지 깨닫게 되고, 매우 그리워지는 순간이다.

 

그래도 혹시 몰라, 이미 있는게 아닐까 싶어 실제로 Ubuntu 22.04 에서 설치를 하려고 하니까 아래와 같이 나왔다.


        
nginx-core depends on libnginx-mod-http-image-filter (= 1.18.0-6ubuntu14); however:
Package libnginx-mod-http-image-filter is not installed.
nginx-core depends on libnginx-mod-http-xslt-filter (= 1.18.0-6ubuntu14); however:
Package libnginx-mod-http-xslt-filter is not installed.
nginx-core depends on libnginx-mod-http-geoip2 (= 1.18.0-6ubuntu14); however:
Package libnginx-mod-http-geoip2 is not installed.
nginx-core depends on libnginx-mod-mail (= 1.18.0-6ubuntu14); however:
Package libnginx-mod-mail is not installed.
nginx-core depends on libnginx-mod-stream (= 1.18.0-6ubuntu14); however:
Package libnginx-mod-stream is not installed.
nginx-core depends on libnginx-mod-stream-geoip2 (= 1.18.0-6ubuntu14); however:
Package libnginx-mod-stream-geoip2 is not installed.
nginx-core depends on nginx-common (= 1.18.0-6ubuntu14); however:
Package nginx-common is not installed

 

몇 개의 종속성들이 이미 설치되어 있어 괜찮아 보이지만, 그래도 너무 많다. 그리고 심지어 가장 첫줄에 있는 libnginx-mod-http-image-filter 는 따로 설치해서 확인해 봤지만, 얘도 똑같이 종속성을 2~3개 정도 요구한다.

그러므로 나의 시간을 모두 들일 수 없어, 이곳에서 포기했다.

 

결론

인터넷이 되지 않은 Ubuntu 22.04 환경에 Nginx 를 설치하고자, 인터넷이 되는 Ubuntu 24.04 환경을 활용하였다. 24.04 에서 deb 파일들을 잔뜩 설치하고 FTP 등으로 22.04 에 옮긴 다음 설치할 예정이었으나, 연쇄적으로 등장하는 종속성들로 인해 포기했다.

ChatGPT 도움을 받아서 해보려고 했지만, 알려주는 명령어들 중 안 되는 것도 있고, 결국 추천해주는 방법이 위의 방법이었다.

그래도 종속성 확인, 저장소 변경이나, Ubuntu 패키지도 한번 찾아볼 수 있는 경험이었다.

 

비록 오늘은 포기했지만, 시간이 많고 끈기가 있는 상황에 다시 시도해볼 수 있겠다.

근데 아무리 생각해도 연쇄적으로 등장하는 종속성들을 모두 설치하는 것은 어렵고, 동일 환경에서 Nginx 를 설치한 다음 해당 설치 관련 파일이나 설정들을 모두 옮겨주는게 현실적으로 가능하지 않을까 싶다.

혹시 방법을 아시는 분은 알려주실 수 있으시면 감사드리겠습니다.

 

참고한 사이트

Ubuntu Archive for Nginxhttps://archive.ubuntu.com/ubuntu/pool/main/n/nginx/

 

Index of /ubuntu/pool/main/n/nginx

 

archive.ubuntu.com

경로에서 main 대신 universe 를 넣으면, nginx-light, extras, full 에 대한 deb 파일들을 볼 수 있다.

 

Ubuntu 패키지 정보가 모여있는 사이트 - https://ubuntu.pkgs.org/22.04/ubuntu-main-amd64/nginx_1.18.0-6ubuntu14_amd64.deb.html

위 검색 필드에서 필요한 패키지를 검색하면 되고, 설명이나 맞는 운영체제 버전을 찾은 다음, 아래 Download 항목에서 Binary Package 링크 등을 이용하면 설치할 수 있다.