NGINX Unit 설치

4가지 방법으로 NGINX Unit을 설치할 수 있습니다.

  1. 몇 가지 인기 있는 시스템용 공식 바이너리 패키지에서 선택하십시오. 다른 패키지 소프트웨어처럼 사용하기 쉽고 대부분의 목적에 바로 사용할 수 있습니다.
  2. 선호하는 OS 또는 언어 버전이 공식 패키지 목록에 없으면 third-party 리포지토리를 사용해 보십시오. 그러나 (주의: 우리는 그것들을 유지하지 않습니다.)
  3. 다양한 언어 조합으로 사전 패키지된 공식 Docker 이미지를 실행하십시오.
  4. Unit을 목표에 맞게 미세 조정하려면 소스를 다운로드하고 도구 체인을 설치하고 처음부터 사용자 정의 바이너리를 빌드하십시오. 당신이하고있는 일을 알고 있는지 확인하십시오.

목차

1. 전제 조건 (Prerequisites)
2. 공식 패키지 (Official Packages)
2-1. Amazon Linux – 2.0 LTS
2-2. Amazon Linux – AMI
2-3. CentOS – 8.x, 7.x
2-4. CentOS – 6.x
2-5. Debian – 11
2-6. Debian – 10
2-7. Debian – 9
2-8. Fedora – 36,35
2-9. Fedora – 34,33
2-10. Fedora – 31,30
2-11. Fedora – 29
2-12. RHEL – 9.x
2-13. RHEL – 8.x, 7.x
2-14. RHEL – 6.x
2-15. Ubuntu – 22.04
2-16. Ubuntu – 21.10
2-17. Ubuntu – 21.04
2-18. Ubuntu – 20.10
2-19. Ubuntu – 20.04
2-20. Ubuntu – 19.10
2-21. Ubuntu – 18.04
2-22. Ubuntu – 16.04
2-23. Homebrew
2-24. Node.js
2-25. Startup and Shutdown
3. Docker Images
3-1. Initial Configuration

1. 전제 조건 (Prerequisites)

Unit은 다음을 포함하여 다양한 Unix 계열 운영체제에서 컴파일 및 실행됩니다.

  • FreeBSD 10 이상
  • Linux 2.6 이상
  • macOS 10.6 이상
  • Solaris 11

또한 다음과 같은 대부분의 최신 명령어 세트 아키텍처를 지원합니다.

  • ARM
  • IA-32
  • PowerPC
  • MIPS
  • S390X
  • x86-64

Unit이 실행할 수 있는 앱 언어 및 플랫폼(동일한 언어의 여러 버전 포함):

  • Go 1.6 or later
  • Java 8 or later
  • Node.js 8.11 or later
  • PHP 5, 7, 8
  • Perl 5.12 or later
  • Python 2.6, 2.7, 3
  • Ruby 2.0 or later

선택적 종속성:

  • TLS 지원을 위한 OpenSSL 1.0.1 이상
  • 정규식 일치를 위한 PCRE(8.0 이상) 또는 PCRE2(10.23 이상)

2. 공식 패키지 (Official Packages)

대부분의 경우 사전 컴파일된 공식 Unit 바이너리 패키지를 설치하는 것이 가장 좋습니다. 그들은 사용할 수 있습니다:

패키지에는 핵심 실행 파일, 개발자 파일 및 개별 언어 지원이 포함됩니다. 또한 macOS 사용자를 위한 Homebrew 탭과 npm 레지스트리에서 Node.js용 모듈을 유지 관리합니다.

Note

공식 Unit과 함께 설치되는 맞춤형 모듈 패키징에 대한 자세한 내용은 여기를 참조하십시오.

Repo 설치 스크립트

우리가 지원하는 시스템에 공식 리포지토리를 추가하는 스크립트를 제공합니다.
curl -sL 'https://unit.nginx.org/_downloads/setup-unit.sh' | sudo -E bash

2-1. Amazon Linux – 2.0 LTS

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/amzn2/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-perl  \
      unit-php unit-python27 unit-python37
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-2. Amazon Linux – AMI

Warning

Unit의 1.22+ 패키지는 Amazon Linux AMI용으로 구축되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/amzn/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-perl unit-php  \
      unit-python27 unit-python34 unit-python35 unit-python36
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-3. CentOS – 8.x, 7.x

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-jsc11  \
      unit-perl unit-php unit-python27 unit-python36
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-4. CentOS – 6.x

Warning

Unit의 1.20+ 패키지는 CentOS 6용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: i386, x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-php unit-python
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-5. Debian – 11

지원되는 아키텍처: i386, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# sudo curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ bullseye unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ bullseye unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# sudo apt update
# sudo apt install unit
# sudo apt install unit-dev unit-jsc11 unit-perl  \
      unit-php unit-python2.7 unit-python3.9 unit-ruby
# sudo systemctl restart unit # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-6. Debian – 10

지원되는 아키텍처: i386, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# sudo curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ buster unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ buster unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc11 unit-perl  \
      unit-php unit-python2.7 unit-python3.7 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-7. Debian – 9

Warning

Unit의 1.22+ 패키지는 Debian 9용으로 빌드되지 않았습니다.

지원되는 아키텍처: i386, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# sudo curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ stretch unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ stretch unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc8 unit-perl  \
      unit-php unit-python2.7 unit-python3.5 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-8. Fedora – 36,35

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/fedora/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc11 unit-jsc8 unit-perl  \
      unit-php unit-python39 unit-python310 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-9. Fedora – 34,33

Warning

Unit의 1.27+ 패키지는 Fedora 33 및 Fedora 34용으로 빌드되지 않았습니다. 이러한 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/fedora/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc11 unit-jsc8 unit-perl  \
      unit-php unit-python39 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-10. Fedora – 31,30

Warning

Unit의 1.20+ 패키지는 Fedora 30용으로 빌드되지 않았습니다. 1.22+ 패키지는 Fedora 31용으로 빌드되지 않았습니다. 이러한 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/fedora/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc11 unit-jsc8 unit-perl  \
      unit-php unit-python27 unit-python37 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-11. Fedora – 29

Warning

Unit의 1.20+ 패키지는 Fedora 29용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/fedora/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-perl  \
      unit-php unit-python27 unit-python37 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

2-12. RHEL – 9.x

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-go unit-jsc8 unit-jsc11  \
      unit-perl unit-php unit-python39
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

Note

AlmaLinux, Oracle Linux 또는 Rocky Linux와 같은 바이너리 호환 배포판에 대해 동일한 단계를 사용합니다.

2-13. RHEL – 8.x, 7.x

지원되는 아키텍처: x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-jsc11  \
      unit-perl unit-php unit-python27 unit-python36
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

Note

AlmaLinux, Oracle Linux 또는 Rocky Linux와 같은 바이너리 호환 배포판에 대해 동일한 단계를 사용합니다.

2-14. RHEL – 6.x

Warning

Unit의 1.20+ 패키지는 RHEL 6용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: i386, x86-64

1. Unit의 리포지토리를 구성하려면 /etc/yum.repos.d/unit.repo 라는 파일을 생성합니다.

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

2. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# yum install unit
# yum install unit-devel unit-jsc8 unit-perl  \
      unit-php unit-python
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/unit/control.sock
Log file/var/log/unit/unit.log
Non-privileged user and groupunit

Note

AlmaLinux, Oracle Linux 또는 Rocky Linux와 같은 바이너리 호환 배포판에 대해 동일한 단계를 사용합니다.

2-15. Ubuntu – 22.04

지원되는 아키텍처: arm64, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ jammy unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ jammy unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-go unit-jsc11 unit-jsc17 unit-jsc18  \
              unit-perl unit-php unit-python2.7 unit-python3.10 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-16. Ubuntu – 21.10

Warning

Unit’s 1.28+ packages aren’t built for Ubuntu 21.10. This distribution is obsolete; please update.

지원되는 아키텍처: arm64, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ impish unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ impish unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc11 unit-jsc16 unit-jsc17 unit-jsc18  \
              unit-perl unit-php unit-python2.7 unit-python3.9 unit-python3.10 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-17. Ubuntu – 21.04

Warning

Unit의 1.27+ 패키지는 Ubuntu 21.04용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: arm64, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ hirsute unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ hirsute unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc11 unit-jsc15 unit-jsc16 unit-jsc17  \
              unit-perl unit-php unit-python2.7 unit-python3.9 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-18. Ubuntu – 20.10

Warning

Unit의 1.25+ 패키지는 Ubuntu 20.10용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: arm64, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ groovy unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ groovy unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc11 unit-jsc13 unit-jsc14 unit-jsc15  \
              unit-perl unit-php unit-python3.8 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-19. Ubuntu – 20.04

지원되는 아키텍처: arm64, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ focal unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ focal unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc11 unit-perl  \
      unit-php unit-python2.7 unit-python3.8 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-20. Ubuntu – 19.10

Warning

Unit의 1.20+ 패키지는 Ubuntu 19.10용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ eoan unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ eoan unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc11 unit-perl  \
      unit-php unit-python2.7 unit-python3.7 unit-python3.8 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-21. Ubuntu – 18.04

지원되는 아키텍처: arm64, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ bionic unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ bionic unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc8 unit-jsc11 unit-perl  \
      unit-php unit-python2.7 unit-python3.6 unit-python3.7 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-22. Ubuntu – 16.04

Warning

Unit의 1.24+ 패키지는 Ubuntu 16.04용으로 빌드되지 않았습니다. 이 배포판은 더 이상 사용되지 않습니다. 업데이트하십시오.

지원되는 아키텍처: arm64, i386, x86-64

1. NGINX의 서명 키(signing key)를 다운로드하고 저장합니다.

# curl --output /usr/share/keyrings/nginx-keyring.gpg  \
      https://unit.nginx.org/keys/nginx-keyring.gpg

이렇게 하면 설치 중에 패키지를 인증할 수 없다는 경고가 제거됩니다.

2. Unit의 리포지토리를 구성하려면 /etc/apt/sources.list.d/unit.list 라는 다음 파일을 생성합니다.

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ xenial unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ xenial unit

3. Core 패키지 및 필요한 기타 패키지를 설치합니다.

# apt update
# apt install unit
# apt install unit-dev unit-jsc8 unit-perl unit-php  \
      unit-python2.7 unit-python3.5 unit-ruby
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log file/var/log/unit.log
Non-privileged user and groupunit

2-23. Homebrew

macOS에 Unit을 설치하려면 공식 Homebrew 탭을 사용하십시오.

$ brew install nginx/unit/unit

이렇게 하면 Node.js 언어 모듈에 대한 필수 구성 요소 및 core Unit 바이너리가 배포됩니다.

Homebrew에서 Java, Perl, Python 및 Ruby 언어 모듈을 설치하려면:

$ brew install unit-java unit-perl unit-python unit-python3 unit-ruby
# pkill unitd  # Stop Unit
# unitd        # Start Unit to pick up any changes in language module setup

런타임 세부정보:

Control socket/usr/local/var/run/unit/control.sock
Log file/usr/local/var/log/unit/unit.log
Non-privileged user and groupnobody

2-24. Node.js

Unit의 npm 호스팅 Node.js 모듈unit-http라고 합니다. Unit에서 Node.js 앱을 실행하려면 설치하십시오.

1. 먼저 unit-dev/unit-devel 패키지를 설치합니다. unit-http를 빌드하는 데 필요합니다.

2. 다음으로 unit-http를 전역적(globally)으로 빌드하고 설치합니다(npmnode-gyp 필요).

# npm install -g --unsafe-perm unit-http

Warning

unit-http 모듈은 최적화로 인해 플랫폼에 따라 다릅니다. 나머지 node-module 과 함께 시스템 간에 이동할 수 없습니다. 전역(Global) 설치는 이러한 시나리오를 방지합니다. 마이그레이션된 앱을 다시 연결하기만 하면 됩니다.

3. 앱 소스에서 unit-http를 언급하지 않고 Unit에서 Node.js 앱을 실행하는 것은 전적으로 가능합니다. 그러나 코드에서 기본 제공 http 대신 unit-http를 명시적으로 사용할 수 있지만 Express와 같은 프레임워크에는 추가 변경이 필요할 수 있습니다.

나중에 Unit을 업데이트하는 경우 모듈도 업데이트해야 합니다.

# npm update -g --unsafe-perm unit-http

Note

소스(sources)에서 unit-http 모듈을 구성하고 설치할 수도 있습니다.

2-25. Startup and Shutdown

Amazon, CentOS, Debian, Fedora, RHEL, Ubuntu

Unit이 시스템 시작 시 자동으로 실행되도록 활성화:

# systemctl enable unit

Unit 시작 또는 다시 시작:

# systemctl restart unit

Stop a running Unit:

# systemctl stop unit

Unit의 자동 시작 비활성화:

# systemctl disable unit

Note

변경 사항을 적용하려면 언어 모듈을 설치하거나 제거한 후 Unit을 다시 시작해야 합니다.

Homebrew

Unit을 데몬으로 시작:

# unitd

모든 Unit의 프로세스 중지:

# pkill unitd

시작 옵션은 아래를 참조하세요.

Note

변경 사항을 적용하려면 언어 모듈을 설치하거나 제거한 후 Unit을 다시 시작해야 합니다.

3. Docker Images

Unit의 Docker 이미지는 여러 언어별 특징으로 제공됩니다.

TagDescription
1.28.0-minimal언어 모듈이 없습니다. debian:buster-slim 이미지를 기반으로 합니다.
1.28.0-go1.19golang:1.19 이미지를 기반으로 한 Single-language 이미지입니다.
1.28.0-jsc11eclipse-temurin:11-jdk 이미지를 기반으로 하는 Single-language 이미지.
1.28.0-node16node:16 이미지를 기반으로 하는 Single-language 이미지.
1.28.0-perl5.36perl:5.36 이미지를 기반으로 하는 Single-language 이미지.
1.28.0-php8.1php:8.1-cli 이미지를 기반으로 하는 Single-language 이미지.
1.28.0-python3.10python:3.10 이미지를 기반으로 하는 Single-language 이미지입니다.
1.28.0-ruby3.1ruby:3.1 이미지를 기반으로 하는 Single-language 이미지입니다.

Docker 이미지의 언어 버전 사용자 지정

다른 언어 버전으로 Unit 이미지를 생성하려면 소스를 복제하고 Docker가 설치된 머신에서 로컬로 다시 빌드하십시오. 빌드 명령의 형식은 다음과 같습니다.

$ make build-<language name><language version> VERSION_<language name>=<language version>

make 유틸리티는 명령줄을 구문 분석하여 언어 이름과 버전을 추출합니다. 이러한 값은 빌드의 기반으로 사용할 기존 공식 언어 이미지를 참조해야 합니다. 특정 언어 버전에 대한 공식 이미지가 있는지 확실하지 않은 경우 위의 태그 표에 있는 링크를 따르십시오.

언어 이름은 go, jsc, node, perl, php, python 또는 ruby일 수 있습니다. 버전은 <major>.<minor>로 정의됩니다. 단, 주 버전 번호만 사용하는 nodejsc는 예외입니다(태그 테이블로 예시됨). 따라서 Python 3.6을 기반으로 하고 unit:1.28.0-python3.6으로 태그가 지정된 로컬 이미지를 생성하려면:

$ git clone https://github.com/nginx/unit
$ cd unit
$ git checkout 1.28.0  # Optional; use to choose a specific Unit version
$ cd pkg/docker/
$ make build-python3.6 VERSION_python=3.6

자세한 내용은 Makefile을 참조하십시오. 다른 사용자 지정 시나리오는 Docker 방법을 참조하세요.

1.22.0 이전 Unit 버전의 이미지

Unit 1.22.0이 출시되기 전에 다음 태그 체계가 사용되었습니다.

TagDescription
<version>-fullUnit이 현재 지원하는 모든 언어에 대한 모듈을 포함합니다.
<version>-minimal언어 모듈은 포함되어 있지 않습니다.
<version>-<language>1.21.0-ruby2.3 또는 1.21.0-python2.7과 같은 특정 언어 모듈.

다음 소스에서 이미지를 얻을 수 있습니다.

Docker Hub

Docker Hub의 NGINX repository에서 Unit을 설치하고 실행하려면:

$ docker pull docker.io/nginx/unit:TAG
$ docker run -d docker.io/nginx/unit:TAG

Amazon ECR Public Gallery

Amazon ECR Public Gallery의 NGINX repository에서 Unit을 설치하고 실행하려면:

$ docker pull public.ecr.aws/nginx/unit:TAG
$ docker run -d public.ecr.aws/nginx/unit:TAG

packages.nginx.org

nginx 웹사이트에 저장된 tarball에서 Unit을 설치하고 실행하려면:

$ curl -O https://packages.nginx.org/unit/docker/1.28.0/nginx-unit-TAG.tar.gz
$ curl -O https://packages.nginx.org/unit/docker/1.28.0/nginx-unit-TAG.tar.gz.sha512
$ sha512sum -c nginx-unit-TAG.tar.gz.sha512
      nginx-unit-TAG.tar.gz: OK

$ docker load < nginx-unit-TAG.tar.gz

런타임 세부정보:

Control socket/var/run/control.unit.sock
Log fileDocker 로그 수집기로 전달됨
Non-privileged user and groupunit

자세한 내용은 리포지토리 페이지(Docker Hub, Amazon ECR Public Gallery) 및 Docker 방법을 참조하십시오.

3-1. Initial Configuration

공식 이미지는 ENTRYPOINT 스크립트로 구현된 초기 컨테이너 구성을 지원합니다.

먼저 스크립트는 컨테이너의 Unit 상태 디렉터리(공식 이미지의 /var/lib/unit/)를 확인합니다. 비어 있으면 스크립트는 컨테이너의 /docker-entrypoint.d/ 디렉터리에서 특정 파일 형식을 처리합니다.

File TypePurpose/Action
.pemCertificate bundles은 각각의 이름으로 업로드됩니다: cert.pem에서 certificates/cert.
.jsonConfiguration snippets은 Unit 구성의 config 섹션에 업로드됩니다.
.sh.pem.json 파일이 업로드된 후 컨테이너에서 실행되는 Shell scripts.

Note

Script는 /docker-entrypoint.d/ 디렉토리의 다른 모든 파일 유형에 대한 경고를 발행합니다. 또한 셸 스크립트에는 실행 권한이 설정되어 있어야 합니다.

이 메커니즘을 사용하면 시작 시 컨테이너를 사용자 지정하고 구성을 재사용하고 워크플로를 자동화하여 수동 작업을 줄일 수 있습니다. 이 기능을 사용하려면 공식 이미지에서 파생된 Dockerfile에 인증서 번들, 구성 조각 및 셸 스크립트에 대한 COPY 지시문을 추가합니다.

FROM nginx/unit:1.28.0-minimal
COPY ./*.pem  /docker-entrypoint.d/
COPY ./*.json /docker-entrypoint.d/
COPY ./*.sh   /docker-entrypoint.d/

Note

Unit을 실행하면 상태 디렉토리가 한 번만 채워집니다. 이렇게 하면 스크립트가 실행되지 않으므로 파생된 이미지 내에서 Unit을 실행하기 전에 이 스크립트 기반 초기화가 발생해야 합니다.

이 기능은 나중에 사용하기 위해 특정 앱 구성에 Unit을 연결하려는 경우에 유용합니다. 임시 초기화의 경우 시작 시 구성 파일이 있는 디렉토리를 컨테이너에 마운트할 수 있습니다.

$ docker run -d --mount \
         type=bind,src=/path/to/config/files/,dst=/docker-entrypoint.d/ \
         nginx/unit:1.28.0-minimal)

4. Source Code

Unit의 소스 코드는 공식 Mercurial 저장소, GitHub 미러 또는 tarball에서 얻을 수 있습니다.

Mercurial을 사용하려면:

$ hg clone https://hg.nginx.org/unit
$ cd unit

Git을 선호하는 경우:

$ git clone https://github.com/nginx/unit
$ cd unit

nginx 사이트에서 직접 소스를 다운로드하려면:

$ curl -O https://unit.nginx.org/download/unit-1.28.0.tar.gz
$ tar xzf unit-1.28.0.tar.gz
$ cd unit-1.28.0

이러한 소스에서 Unit 및 특정 언어 모듈을 빌드하려면 source code howto를 참조하십시오. 사용자 정의 모듈을 패키징하려면 module howto를 참조하십시오.