NGINX Unit

安装§

你可以通过四种备选方式安装 NGINX Unit

  • 从我们针对一些流行系统的官方二进制包中进行选择。它们与其他任何软件包一样易于使用,并且开箱即用即可满足大多数目的。

  • 如果官方包列表中缺少你首选的操作系统或语言版本,请尝试第三方存储库。但请注意:我们不维护它们。

  • 运行我们的Docker 官方镜像,其中预先打包了各种语言组合。

  • 若要微调 Unit 以实现你的目标,请下载源代码,安装工具链,并从头构建自定义二进制文件;只要确保你了解自己在做什么即可。

先决条件§

Unit 可在各种类 Unix 操作系统上编译和运行,包括

  • FreeBSD 10 或更高版本

  • Linux 2.6 或更高版本

  • macOS 10.6 或更高版本

  • Solaris 11

它还支持大多数现代指令集架构,例如

  • ARM

  • IA-32

  • PowerPC

  • MIPS

  • S390X

  • x86-64

Unit 可以运行的应用语言和平台(包括同一语言的多个版本)

  • Go 1.6 或更高版本

  • Java 8 或更高版本

  • Node.js 8.11 或更高版本

  • PHP 5、7、8

  • Perl 5.12 或更高版本

  • Python 2.6、2.7、3

  • Ruby 2.0 或更高版本

  • WebAssembly 组件 WASI 0.2

可选依赖项

  • OpenSSL 1.0.1 或更高版本,用于 TLS 支持

  • PCRE (8.0 或更高版本) 或 PCRE2 (10.23 或更高版本),用于 正则表达式匹配

  • njs 脚本语言

  • Wasmtime,用于 WebAssembly 支持

官方软件包§

在大多数情况下,最好安装官方预编译的 Unit 二进制软件包;它们可用于

这些软件包包括核心可执行文件、开发人员文件以及对各个语言的支持。我们还为 macOS 用户维护了一个 Homebrew tap,以及一个适用于 npm 注册表中 Node.js 的 模块

注意

有关与官方 Unit 一起安装的自定义模块的打包详细信息,请参阅 此处

仓库安装脚本

我们提供了一个 脚本,该脚本会在我们支持的系统上添加我们的官方仓库

$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit
# ./setup-unit repo-config

自行决定是否使用它;下面为每个发行版提供了明确的步骤。

Amazon Linux§

支持的架构:x86-64。

  1. 要配置 Unit 的仓库,请创建名为 /etc/yum.repos.d/unit.repo 的以下文件

    [unit]
    name=unit repo
    baseurl=https://packages.nginx.org/unit/amzn/2023/$basearch/
    gpgcheck=0
    enabled=1
    
  2. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

支持的架构: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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

Debian§

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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/ bookworm unit
    deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/ bookworm unit
    
  3. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.28+ 软件包尚未针对 Debian 10 构建。此发行版已过时;请更新。

受支持的架构:i386、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.22+ 软件包尚未针对 Debian 9 构建。此发行版已过时;请更新。

受支持的架构:i386、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

Fedora§

支持的架构: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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

支持的架构: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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

Unit 的 1.31+ 软件包尚未针对 Fedora 36 和 Fedora 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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

Unit 的 1.24+ 软件包尚未针对 Fedora 32 构建。这些发行版已过时;请更新。

支持的架构: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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

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. 安装核心软件包和其他需要的软件包

    # yum install unit
    # yum install unit-devel unit-jsc8 unit-jsc11 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
    

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

RHEL 及其衍生产品§

支持的架构: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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

支持的架构: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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

注意

CentOS 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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

警告

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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

注意

针对二进制兼容发行版使用以下步骤:AlmaLinux、CentOS、Oracle Linux 或 Rocky Linux。

Ubuntu§

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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/ lunar unit
    deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ lunar unit
    
  3. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.31+ 软件包尚未针对 Ubuntu 22.10 构建。此发行版已过时;请更新。

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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/ kinetic unit
    deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ kinetic unit
    
  3. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.28+ 软件包尚未针对 Ubuntu 21.10 构建。此发行版已过时;请更新。

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.27+ 软件包尚未针对 Ubuntu 21.04 构建。此发行版已过时;请更新。

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.25+ 软件包尚未针对 Ubuntu 20.10 构建。此发行版已过时;请更新。

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.20+ 软件包尚未针对 Ubuntu 19.10 构建。此发行版已过时;请更新。

支持的架构:x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.31+ 软件包尚未针对 Ubuntu 18.04 构建。此发行版已过时;请更新。

支持的架构:arm64、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

警告

Unit 的 1.24+ 软件包尚未针对 Ubuntu 16.04 构建。此发行版已过时;请更新。

受支持的架构:arm64、i386、x86-64。

  1. 下载并保存 NGINX 的签名密钥

    # curl --output /usr/share/keyrings/nginx-keyring.gpg  \
          https://unit.nginxserver.cn/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. 安装核心软件包和其他需要的软件包

    # 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
    

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

macOS§

要在 macOS 上安装 Unit,请使用官方 Homebrew tap

$ brew install nginx/unit/unit

这会部署核心 Unit 二进制文件以及 Node.js 语言模块的先决条件。

要从 Homebrew 安装 Java、Perl、Python 和 Ruby 语言模块

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

运行时详细信息

控制 套接字

/usr/local/var/run/unit/control.sock(英特尔),/opt/homebrew/var/run/unit/control.sock(Apple 硅)

日志 文件

/usr/local/var/log/unit/unit.log(英特尔),/opt/homebrew/var/log/unit/unit.log(Apple 硅)

非特权 用户和组

nobody

注意

要在 macOS 上以 root 身份运行 Unit

$ export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
$ sudo --preserve-env=OBJC_DISABLE_INITIALIZE_FORK_SAFETY /path/to/unitd ...

Node.js§

Unit 的 npm 托管的 Node.js 模块称为 unit-http。安装它以在 Unit 上运行 Node.js 应用程序

  1. 首先,安装 unit-dev/unit-devel ;需要它来构建 unit-http

  2. 接下来,全局构建并安装 unit-http(这需要 npmnode-gyp

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

    警告

    由于优化,unit-http 模块是平台相关的;您无法将其与其他 node-modules 一起跨系统移动。全局安装避免了这种情况;只需 重新链接 迁移的应用程序。

  3. 完全可以在 Unit 上运行 Node.js 应用程序,而无需在应用程序源中提及 unit-http。但是,您可以在代码中显式使用 unit-http,而不是内置的 http,但请注意,Express 等框架可能需要额外的 更改

如果您稍后更新 Unit,请务必也更新模块

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

注意

您还可以 配置安装 unit-http 模块从源。

使用多个 Node.js 版本

要并行使用多个 Node.js 版本和 Unit,我们推荐 Node Version Manager

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/x.y.z/install.sh | bash

安装您需要的版本,并选择您要与 Unit 一起使用的版本

$ nvm install 18
$ nvm install 16
$ nvm use 18
      Now using node v18.12.1 (npm v8.19.2)

选择特定版本后,安装 node-gyp 模块

$ npm install -g node-gyp

接下来,克隆 Unit 源代码以构建适用于所选 Node.js 版本的 unit-http 模块

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

$ ./configure
$ ./configure nodejs

      configuring nodejs module
      checking for node ... found
       + node version v18.12.1
      checking for npm ... found
       + npm version 8.19.2
      checking for node-gyp ... found
       + node-gyp version v9.3.0

指向源代码目录中的 Unit 头文件和库以构建模块

$ CPPFLAGS="-I/home/user/unit/include/" LDFLAGS="-L/home/user/unit/lib/"  \
      make node-install

$ npm list -g

      /home/vagrant/.nvm/versions/node/v18.12.1/lib
      ├── [email protected]
      ├── [email protected]
      ├── [email protected]
      └── [email protected]

就是这样;使用新构建的模块来像往常一样在 Unit 上运行您的 Node.js 应用程序

启动和关闭§

启用 Unit 在系统启动时自动启动

# systemctl enable unit

启动或重新启动 Unit

# systemctl restart unit

停止正在运行的 Unit

# systemctl stop unit

禁用 Unit 的自动启动

# systemctl disable unit

将 Unit 作为守护进程启动

# unitd

停止 Unit 的所有进程

# pkill unitd

有关启动选项,请参见 以下内容

注意

在安装或卸载任何语言模块后,必须重新启动 Unit 以获取更改。

社区存储库§

警告

这些发行版由各自的社区维护,而不是 NGINX。请谨慎使用它们。

从 Alpine Linux 软件包中安装 Unit 的核心可执行文件

# apk update
# apk upgrade
# apk add unit

安装服务管理器文件和特定语言模块

# apk add unit-openrc unit-perl unit-php7 unit-python3 unit-ruby
# service unit restart  # Necessary for Unit to pick up any changes in language module setup

运行时详细信息

控制 套接字

/run/control.unit.sock

日志 文件

/var/log/unit.log

非特权 用户和组

unit

启动和关闭

# service unit enable
# service unit restart
# service unit stop
# service unit disable

从 Sisyphus 软件包中安装 Unit 的核心可执行文件和特定语言模块

# apt-get update
# apt-get install unit
# apt-get install unit-perl unit-php unit-python3 unit-ruby
# service unit restart  # Necessary for Unit to pick up any changes in language module setup

带有*-debuginfo 后缀的这些软件包的版本包含用于 调试 的符号。

运行时详细信息

控制 套接字

/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

_unit(注意_ 前缀)

启动和关闭

# service unit enable
# service unit restart
# service unit stop
# service unit disable

要安装 Unit 的核心可执行文件和所有语言模块,请克隆 Arch 用户仓库 (AUR)

$ git clone https://aur.archlinux.org/nginx-unit.git
$ cd nginx-unit

在继续操作之前,请验证 PKGBUILD 和随附文件是否无恶意或不可靠。AUR 软件包由用户制作,未经预先审核;使用它们需自担风险。

接下来,构建软件包

$ makepkg -si

运行时详细信息

控制 套接字

/run/nginx-unit.control.sock

日志 文件

/var/log/nginx-unit.log

非特权 用户和组

nobody

启动和关闭

# systemctl enable unit
# systemctl restart unit
# systemctl stop unit
# systemctl disable unit

要从 FreeBSD 软件包安装 Unit,请获取核心软件包和其他需要的软件包

# pkg install -y unit
# pkg install -y libunit
# pkg install -y unit-java8  \
                 unit-perl5.36  \
                 unit-php81 unit-php82 unit-php83  \
                 unit-python39  \
                 unit-ruby3.2  \
                 unit-wasm
# service unitd restart  # Necessary for Unit to pick up any changes in language module setup

要从 FreeBSD 端口安装 Unit,请首先更新端口集合。

使用 portsnap

# portsnap fetch update

使用 git

# cd /usr/ports && git pull

接下来,浏览到端口路径以构建并安装核心 Unit 端口

# cd /usr/ports/www/unit/
# make
# make install

对需要的其他端口重复这些步骤:libunit(需要安装 Node.js 模块和构建 Go 应用程序)、unit-javaunit-perlunit-phpunit-pythonunit-rubyunit-wasm。之后,重新启动 Unit

# service unitd restart  # Necessary for Unit to pick up any changes in language module setup

运行时详细信息

控制 套接字

/var/run/unit/control.unit.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

www

启动和关闭

# service unitd enable
# service unitd restart
# service unitd stop
# service unitd disable

要使用 Portage安装 Unit,请更新存储库并安装 软件包

# emerge --sync
# emerge www-servers/nginx-unit

要安装特定的语言模块和功能,请应用相应的 USE 标志

运行时详细信息

控制 套接字

/run/nginx-unit.sock

日志 文件

/var/log/nginx-unit

非特权 用户和组

nobody

启动和关闭

# rc-update add nginx-unit
# rc-service nginx-unit restart
# rc-service nginx-unit stop
# rc-update del nginx-unit

NetBSD Packages Collection 安装 Unit 的核心包和其他需要的包

# pkg_add unit
# pkg_add libunit
# pkg_add unit-perl  \
          unit-python2.7  \
          unit-python3.8 unit-python3.9 unit-python3.10 unit-python3.11 unit-python3.12  \
          unit-ruby31 unit-ruby32 unit-ruby33
# service unit restart  # Necessary for Unit to pick up any changes in language module setup

要手动构建 Unit,首先更新包集合

# cd /usr/pkgsrc && cvs update -dP

接下来,浏览到包路径以构建并安装 Unit 二进制核心

# cd /usr/pkgsrc/www/unit/
# make build install

对需要的其他包重复这些步骤:libunit(需要安装 Node.js 模块 和构建 Go 应用程序)、unit-perlunit-phpunit-pythonunit-ruby

请注意,unit-php 包需要使用 php-embed 选项构建 PHP 包。为 lang/php82 启用该选项

# echo "PKG_OPTIONS.php82=php-embed" >> /etc/mk.conf

之后,重新启动 Unit

# service unit restart  # Necessary for Unit to pick up any changes in language module setup

运行时详细信息

控制 套接字

/var/run/unit/control.unit.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

启动和关闭

首先,将 Unit 的启动脚本添加到 /etc/rc.d/ 目录

# cp /usr/pkg/share/examples/rc.d/unit /etc/rc.d/

之后,你可以按如下方式启动和停止 Unit

# service unit restart
# service unit stop

要启用或禁用 Unit 的自动启动,编辑 /etc/rc.conf

# Enable service:
unit=YES

# Disable service:
unit=NO

要使用 Nix 包管理器安装 Unit 的核心可执行文件和所有语言模块,更新频道,检查 Unit 是否可用,然后安装

$ nix-channel --update
$ nix-env -qa 'unit'
$ nix-env -i unit

这将安装大多数嵌入式语言模块以及 SSL 或 IPv6 支持等功能。有关选项的完整列表,请参阅 包定义;有关定义应用程序的 .nix 配置文件,请参阅 此示例

运行时详细信息

控制 套接字

/run/unit/control.unit.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

unit

启动和关闭

services.unit.enable = true; 添加到 /etc/nixos/configuration.nix 并重建系统配置

# nixos-rebuild switch

之后,使用 systemctl

# systemctl enable unit
# systemctl restart unit
# systemctl stop unit
# systemctl disable unit

要从 OpenBSD 包 安装 Unit,获取核心包和其他需要的包

# pkg_add unit
# pkg_add unit-perl
# pkg_add unit-php74
# pkg_add unit-php80
# pkg_add unit-php81
# pkg_add unit-php82
# pkg_add unit-php83
# pkg_add unit-python
# pkg_add unit-ruby
# rcctl restart unit  # Necessary for Unit to pick up any changes in language module setup

要从 OpenBSD 端口 安装 Unit,首先更新端口集合,例如

$ cd /usr/
$ cvs -d [email protected]:/cvs checkout -P ports

接下来,浏览到端口路径以构建并安装 Unit

$ cd /usr/ports/www/unit/
$ make
# make install

这也将安装 Perl、PHP、Python 和 Ruby 的语言模块;其他模块可以从 构建和安装。之后,重新启动 Unit

# rcctl restart unit  # Necessary for Unit to pick up any changes in language module setup

运行时详细信息

控制 套接字

/var/run/unit/control.unit.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

_unit

启动和关闭

# rcctl enable unit
# rcctl restart unit
# rcctl stop unit
# rcctl disable unit

Remi 的 RPM 存储库托管了适用于 Fedora 和 RHEL 的最新版本的 PHP 堆栈,还包含核心 Unit 软件包和 PHP 模块。

要使用 Remi 版本的 Unit 软件包,请首先配置存储库。Remi 的 PHP 语言模块还与我们自己的存储库中的核心 Unit 软件包兼容。

接下来,安装 Unit 和所需的 PHP 模块

# yum install --enablerepo=remi unit  \
      php54-unit-php php55-unit-php php56-unit-php  \
      php70-unit-php php71-unit-php php72-unit-php php73-unit-php php74-unit-php  \
      php80-unit-php php81-unit-php php82-unit-php
# systemctl restart unit  # Necessary for Unit to pick up any changes in language module setup

运行时详细信息

控制 套接字

/run/unit/control.sock

日志 文件

/var/log/unit/unit.log

非特权 用户和组

nobody

启动和关闭

# systemctl enable unit
# systemctl restart unit
# systemctl stop unit
# systemctl disable unit

Docker 镜像§

Unit 的 Docker 镜像有几种特定于语言的版本

标签

说明

1.32.1-minimal

无语言模块;基于debian:bullseye-slim 镜像

1.32.1-go1.21

单语言;基于golang:1.21 镜像

1.32.1-jsc11

单语言;基于eclipse-temurin:11-jdk 镜像

1.32.1-node20

单语言;基于node:20 镜像

1.32.1-perl5.38

单语言;基于perl:5.38 镜像

1.32.1-php8.2

单语言;基于php:8.2-cli 镜像

1.32.1-python3.11

单语言;基于python:3.11 镜像

1.32.1-ruby3.2

单语言;基于ruby:3.2 镜像

1.32.1-wasm

单语言;基于debian:bullseye-slim 镜像

Customizing language versions in Docker images

To build a custom language version image, clone and rebuild the sources locally with Docker installed:

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

The make utility parses the command line to extract the language name and version; these values must reference an existing official language image to be used as the base for the build. If not sure whether an official image exists for a specific language version, follow the links in the tag table above.

Note

Unit relies on the official Docker images, so any customization method offered by their maintainers is equally applicable; to tailor a Unit image to your needs, see the quick reference for its base image.

The language name can be go, jsc, node, perl, php, python, or ruby; the version is defined as <major>.<minor>, except for jsc and node that take only major version numbers (as seen in the tag table). Thus, to create an image with Python 3.10 and tag it as unit:|version|-python3.10:

$ git clone https://github.com/nginx/unit
$ cd unit
$ git checkout 1.32.1  # Optional; use to choose a specific Unit version
$ cd pkg/docker/
$ make build-python3.10 VERSIONS_python=3.10

For details, see the Makefile. For other customization scenarios, see the Docker howto.

Images with pre-1.29.1 Unit versions

Before Unit 1.29.1 was released, our Docker images were available from the official NGINX repository on Docker Hub.

Images with pre-1.22.0 Unit versions

Before Unit 1.22.0 was released, the following tagging scheme was used:

Tag

Description

<version>-full

Contains modules for all languages that Unit then supported.

<version>-minimal

No language modules were included.

<version>-<language>

A specific language module such as 1.21.0-ruby2.3 or 1.21.0-python2.7.

你可以从以下来源获取镜像

要从 Docker Hub 上的官方构建安装和运行 Unit

$ docker pull unit:TAG
$ docker run -d unit:TAG

要从 Amazon ECR 公共图库上的 NGINX 的存储库安装和运行 Unit

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

警告

Unit 的 1.30+ 镜像 tarball 未在网站上发布;此频道已弃用。

要从存储在我们 网站 上的 tarball 安装和运行 Unit

$ curl -O https://packages.nginx.org/unit/docker/1.29.1/nginx-unit-TAG.tar.gz
$ curl -O https://packages.nginx.org/unit/docker/1.29.1/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

运行时详细信息

控制 套接字

/var/run/control.unit.sock

日志 文件

转发到 Docker 日志收集器

非特权 用户和组

unit

有关更多详细信息,请参阅存储库页面(Docker HubAmazon ECR 公共画廊)和我们的 Docker 指南

初始配置§

官方镜像支持初始容器配置,使用 ENTRYPOINT 脚本实现。首先,该脚本检查容器中的 Unit 状态目录/var/lib/unit/)。如果为空,该脚本将处理容器的 /docker-entrypoint.d/ 目录中的某些文件类型

文件类型

目的/操作

.pem

证书包,以相应名称上传:cert.pem/certificates/cert

.json

配置片段,上传到 Unit 配置的 /config 部分。

.sh

Shell 脚本,在上传 .pem.json 文件后运行;必须可执行。

该脚本会警告 /docker-entrypoint.d/ 中的任何其他文件类型。

此机制允许在启动时自定义容器、重用配置以及自动执行工作流以减少手动工作。要使用此功能,请为证书包、配置片段和 shell 脚本添加 COPY 指令到从官方镜像派生的 Dockerfile

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

注意

请注意,即使运行 Unit 一次也会填充其状态目录;这会阻止脚本执行,因此此基于脚本的初始化必须在您在派生容器中运行 Unit 之前进行。

如果您想将 Unit 绑定到某个应用程序配置以供以后使用,此功能非常有用。对于临时初始化,您可以在启动时将包含配置文件的目录挂载到容器

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

源代码§

您可以从我们的官方 GitHub 存储库或作为 tarball 获取 Unit 的源代码。

$ git clone https://github.com/nginx/unit            # Latest updates to the repository
$ # -- or --
$ git clone -b 1.32.1 https://github.com/nginx/unit  # Specific version tag; see https://github.com/nginx/unit/tags
$ cd unit
$ curl -O https://sources.nginx.org/unit/unit-1.32.1.tar.gz
$ tar xzf unit-1.32.1.tar.gz
$ cd unit-1.32.1

要从这些源代码构建 Unit 和特定语言模块,请参阅源代码指南;要打包自定义模块,请参阅模块指南