Установка#

Установить Angie можно несколькими способами:

Бинарные пакеты#

Чтобы установить и обновлять Angie с помощью пакетного менеджера своего дистрибутива, подключите и настройте репозиторий пакетов Angie.

Поддерживаемые дистрибутивы#

Дистрибутив

Версии

Архитектуры

AlmaLinux

9,   8

x86-64, arm64

Alpine

3.18,   3.17,   3.16,   3.15

x86-64, arm64

Альт

10
8

x86-64, arm64
x86-64

Astra SE

4.7
1.7

arm64
x86-64

CentOS

9,   8,   7

x86-64, arm64

Debian

12,   11,   10

x86-64, arm64

FreeBSD

14,   13,   12

x86-64

openSUSE

15

x86-64, arm64

Oracle Linux

9,   8

x86-64, arm64

РЕД ОС

7.3

x86-64, arm64

Rocky Linux

9,   8

x86-64, arm64

ROSA Chrome

12

x86-64, arm64

ROSA Fresh

12

x86-64

Ubuntu

23.04,   22.04,   20.04

x86-64, arm64

Alma, CentOS, Oracle, РЕД ОС, Rocky, ROSA#

  1. Чтобы подключить репозиторий, создайте файл /etc/yum.repos.d/angie.repo с таким содержимым:

    [angie]
    name=Angie repo
    baseurl=https://download.angie.software/angie/almalinux/$releasever/
    gpgcheck=1
    enabled=1
    gpgkey=https://angie.software/keys/angie-signing.gpg.asc
    
  2. Установите пакет Angie:

    $ sudo yum install -y angie
    
  3. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo yum install -y <ИМЯ ПАКЕТА>
    
  4. Запустите сервис:

    $ sudo systemctl start angie
    
  5. Чтобы автоматически запускать Angie после перезагрузки сервера:

    $ sudo systemctl enable angie
    

Alpine#

  1. Установите вспомогательные пакеты для подключения репозитория Angie:

    $ sudo apk update
    $ sudo apk add curl ca-certificates
    
  2. Скачайте открытый ключ репозитория Angie для проверки подлинности пакетов:

    $ sudo curl -o /etc/apk/keys/angie-signing.rsa \
                https://angie.software/keys/angie-signing.rsa
    
  3. Подключите репозиторий Angie:

    $ echo "https://download.angie.software/angie/alpine/v$(egrep -o \
           '[0-9]+\.[0-9]+' /etc/alpine-release)/main" \
           | sudo tee -a /etc/apk/repositories > /dev/null
    
  4. Обновите индексы репозиториев:

    $ sudo apk update
    
  5. Установите пакет Angie:

    $ sudo apk add angie
    
  6. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo apk add <ИМЯ ПАКЕТА>
    
  7. Запустите сервис:

    $ sudo service angie start
    
  8. Чтобы автоматически запускать Angie после перезагрузки сервера:

    $ sudo rc-update add angie
    

Альт#

  1. Создайте каталог /etc/ssl/angie/:

    $ sudo mkdir -p /etc/ssl/angie/
    
  2. Установите вспомогательные пакеты для подключения репозитория Angie:

    $ sudo apt-get update
    $ sudo apt-get install -y curl apt-https
    
  3. Скачайте открытый ключ репозитория Angie для проверки подлинности пакетов:

    $ sudo curl -o /etc/ssl/angie/angie-signing.gpg \
          https://angie.software/keys/angie-signing.gpg
    
  4. Импортируйте скачанный ключ репозитория в цепочку доверенных ключей:

    $ sudo gpg --no-default-keyring \
          --keyring /usr/lib/alt-gpgkeys/pubring.gpg --import /etc/ssl/angie/angie-signing.gpg
    
  5. Сохраните сигнатуру ключа:

    $ echo 'simple-key "angie" {
              Fingerprint "EB8EAF3D4EF1B1ECF34865A2617AB978CB849A76";
              Name "Angie (Signing Key) <devops@tech.wbsrv.ru>";
      }' | sudo tee /etc/apt/vendors.list.d/angie.list > /dev/null
    
  6. Подключите репозиторий Angie:

    $ echo "rpm [angie] https://download.angie.software/angie/altlinux/10/ $(uname -m) main" \
        | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
    
  7. Обновите индексы репозиториев:

    $ sudo apt-get update
    
  8. Установите пакет Angie:

    $ sudo apt-get install -y angie
    
  9. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo apt-get install -y <ИМЯ ПАКЕТА>
    
  10. Запустите сервис:

    $ sudo systemctl start angie
    
  11. Чтобы автоматически запускать Angie после перезагрузки сервера:

    $ sudo systemctl enable angie
    

Astra SE#

  1. Установите вспомогательные пакеты для подключения репозитория Angie:

    $ sudo apt-get update
    $ sudo apt-get install -y ca-certificates curl lsb-release
    
  2. Скачайте открытый ключ репозитория Angie для проверки подлинности пакетов:

    $ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
                https://angie.software/keys/angie-signing.gpg
    
  3. Подключите репозиторий Angie:

    $ echo "deb https://download.angie.software/angie/astra-se/$(egrep -o \
           '[0-9]+.[0-9]+' /etc/astra_version) unstable main" \
           | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
    
  4. Обновите индексы репозиториев:

    $ sudo apt-get update
    
  5. (Дополнительно) При работе в режиме замкнутой программной среды (ЗПС) установите пакет с ключом для проверки подлинности бинарных файлов Angie:

    $ sudo apt-get install -y angie-digsig-key
    

    Обновите ЗПС:

    $ sudo update-initramfs -uk all
    

    Затем перезагрузите сервер:

    $ sudo shutdown -r now
    
  6. Установите пакет Angie:

    $ sudo apt-get install -y angie
    
  7. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo apt-get install -y <ИМЯ ПАКЕТА>
    

Debian, Ubuntu#

  1. Установите вспомогательные пакеты для подключения репозитория Angie:

    $ sudo apt-get update
    $ sudo apt-get install -y ca-certificates curl lsb-release
    
  2. Скачайте открытый ключ репозитория Angie для проверки подлинности пакетов:

    $ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
                https://angie.software/keys/angie-signing.gpg
    
  3. Подключите репозиторий Angie:

    $ echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" \
           | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
    
  4. Обновите индексы репозиториев:

    $ sudo apt-get update
    
  5. Установите пакет Angie:

    $ sudo apt-get install -y angie
    
  6. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo apt-get install -y <ИМЯ ПАКЕТА>
    

FreeBSD#

  1. Чтобы подключить репозиторий Angie, создайте каталоги:

    $ sudo mkdir -p /usr/local/etc/pkg/angie/ /usr/local/etc/pkg/repos/
    
  2. Чтобы настроить репозиторий, создайте файл /usr/local/etc/pkg/repos/angie.conf с таким содержимым:

    angie: {
       url: "https://download.angie.software/angie/freebsd/${VERSION_MAJOR}/${ARCH}",
       signature_type: "pubkey",
       pubkey: "/usr/local/etc/pkg/angie/angie-signing.rsa",
       enabled: yes
    }
    
  3. Скачайте открытый ключ репозитория Angie для проверки подлинности пакетов:

    $ sudo curl -o /usr/local/etc/pkg/angie/angie-signing.rsa \
                https://angie.software/keys/angie-signing.rsa
    
  4. Обновите индексы репозиториев:

    $ sudo pkg update
    
  5. Установите пакет Angie:

    $ sudo pkg install -y angie
    
  6. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo pkg install -y <ИМЯ ПАКЕТА>
    
  7. Запустите сервис:

    $ sudo service angie start
    
  8. Чтобы автоматически запускать Angie после перезагрузки сервера:

    $ sudo sysrc angie_enable=YES
    

openSUSE#

  1. Чтобы подключить репозиторий, создайте файл /etc/zypp/repos.d/angie.repo с таким содержимым:

    [angie]
    name=Angie repo
    baseurl=https://download.angie.software/angie/opensuse/$releasever_major/
    gpgcheck=1
    enabled=1
    gpgkey=https://angie.software/keys/angie-signing.gpg.asc
    
  2. Обновите индексы репозиториев:

    $ sudo zypper refresh
    
  3. Установите пакет Angie:

    $ sudo zypper install -y angie
    
  4. (Дополнительно) Установите пакеты необходимых вам динамических модулей:

    $ sudo zypper install -y <ИМЯ ПАКЕТА>
    
  5. Запустите сервис:

    $ sudo systemctl start angie
    
  6. Чтобы автоматически запускать Angie после перезагрузки сервера:

    $ sudo systemctl enable angie
    

Динамические модули#

Чтобы расширить базовую функциональность Angie, можно добавлять разнообразные динамические модули. Получить их можно в виде готовых пакетов из нашего репозитория.

Модули также можно собирать из исходного кода, компилируя их с соответствующей версией Angie.

Пакеты динамических модулей из дистрибутива Angie:

angie-module-image-filter

Добавляет преобразования изображений в форматах JPEG, GIF, PNG и WebP.

angie-module-njs: http_js_module, stream_js_module

Позволяют использовать язык njs (подмножество JavaScript) в конфигурации Angie соответственно в контекстах http и stream.

angie-module-perl

Позволяет писать обработчики location и переменных на Perl, а также вызывать Perl из SSI.

angie-module-xslt

Добавляет фильтр, преобразующий XML-ответ с помощью XSLT-шаблонов.

Мы также собираем и публикуем в нашем репозитории пакеты следующих сторонних модулей:

angie-module-auth-spnego

Добавляет поддержку SPNEGO и GSSAPI.

angie-module-brotli

Добавляет статическое и динамическое Brotli-сжатие ответов.

angie-module-cache_purge

Позволяет очищать содержимое кэшей FastCGI, прокси, SCGI и uWSGI.

angie-module-dav-ext

Расширяет поддержку WebDAV методами PROPFIND и OPTIONS.

angie-module-echo

Позволяет использовать echo, sleep, time, exec и другие шелл-команды в файле конфигурации.

angie-module-enhanced-memcached

Расширяет возможности встроенного модуля http_memcached.

angie-module-eval

Позволяет сохранять в переменных тела ответов на подзапросы.

angie-module-geoip2: http_geoip2, stream_geoip2

Добавляет поиск по геоданным в базах GeoIP2 MaxMind 2.

angie-module-headers-more

Позволяет устанавливать и очищать заголовки запросов и ответов.

angie-module-keyval

Позволяет использовать переменные со значениями из пар key-value.

angie-module-lua: http_lua_module, stream_lua_module

Позволяют использовать язык Lua в конфигурации Angie соответственно в контекстах http и stream.

angie-module-ndk

Добавляет Nginx Development Kit (NDK) для разработки новых модулей.

angie-module-opentracing

Добавляет распределенную OpenTracing-трассировку запросов в Angie.

angie-module-postgres

Включает непосредственную поддержку баз данных PostgreSQL.

angie-module-redis2

Добавляет протокол Redis 2.0 в HTTP-апстримы.

angie-module-rtmp

Добавляет протокол RTMP для стриминга и трансляции видео по запросу.

angie-module-set-misc

Добавляет различные директивы set_xxx в модуль rewrite.

angie-module-subs

Позволяет заменять строки в теле HTTP-ответа по регулярным выражениям.

angie-module-testcookie

Помогает бороться с ботами при помощи механизма «вызов-ответ» на основе cookie.

angie-module-upload

Добавляет кодировку multipart/form-data (RFC 1868) для отправки файлов со стороны клиента, включая возможность возобновления.

angie-module-vod

Позволяет перепаковывать MP4-файлы для стриминга по HLS, HDS, MSS и DASH.

Чтобы применить установленный модуль в конфигурации, загрузите его с помощью директивы load_module.

Docker-образы#

Для запуска Angie в контейнере Docker используйте образы из нашего реестра:

docker.angie.software/angie
docker.angie.software/angie:latest
docker.angie.software/angie:1.3.2
docker.angie.software/angie:1.3.2-alpine
docker.angie.software/angie:1.3.2-centos
docker.angie.software/angie:1.3.2-debian
docker.angie.software/angie:1.3.2-oracle
docker.angie.software/angie:1.3.2-rocky
docker.angie.software/angie:1.3.2-ubuntu

Чтобы запустить контейнер c Angie на 8080 порте, открыв ему доступ на чтение к каталогу со статическими файлами /var/www/ и файлу конфигурации angie.conf, лежащему в текущем рабочем каталоге:

$ docker run --rm --name angie -v /var/www:/usr/share/angie/html:ro \
    -v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d docker.angie.software/angie:latest

$ curl -I localhost:8080

    HTTP/1.1 200 OK
    Server: Angie/1.3.2
    Date: 23 ноября 2023 г. 10:42:54 GMT
    Content-Type: text/html
    Content-Length: 543
    Last-Modified: Fri, 28 Jul 2023 14:12:23 GMT
    Connection: keep-alive
    ETag: "64c3ccc7-21f"
    Accept-Ranges: bytes

Подобная конфигурация подойдёт для локальной разработки и настройки.

Также можно самостоятельно определить образ на основе поддерживаемого дистрибутива, добавив слой Angie из пакетов или исходного кода. Примеры соответствующих файлов Dockerfile:

Debian, сборка Angie из пакетов#
FROM debian:12

LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"

ARG DEBIAN_FRONTEND=noninteractive

RUN set -x \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
          ca-certificates lsb-release curl \
     && curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
          https://angie.software/keys/angie-signing.gpg \
     && echo "deb https://download.angie.software/angie/debian/ `lsb_release \
           -cs` main" > /etc/apt/sources.list.d/angie.list \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
          angie angie-module-geoip2 angie-module-njs \
     && apt-get remove --auto-remove --purge -y lsb-release \
     && rm -Rf /var/lib/apt/lists \
          /etc/apt/sources.list.d/angie.list \
          /etc/apt/trusted.gpg.d/angie-signing.gpg \
     && ln -sf /dev/stdout /var/log/angie/access.log \
     && ln -sf /dev/stderr /var/log/angie/error.log

EXPOSE 80

CMD ["angie", "-g", "daemon off;"]
Alpine, сборка Angie из пакетов#
FROM alpine:3.18

LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"

RUN set -x \
     && apk add --no-cache ca-certificates curl \
     && curl -o /etc/apk/keys/angie-signing.rsa https://angie.software/keys/angie-signing.rsa \
     && echo "https://download.angie.software/angie/alpine/v$(egrep -o \
          '[0-9]+\.[0-9]+' /etc/alpine-release)/main" >> /etc/apk/repositories \
     && apk add --no-cache angie angie-module-geoip2 angie-module-njs \
     && rm /etc/apk/keys/angie-signing.rsa \
     && ln -sf /dev/stdout /var/log/angie/access.log \
     && ln -sf /dev/stderr /var/log/angie/error.log

EXPOSE 80

CMD ["angie", "-g", "daemon off;"]

Чтобы собрать образ myangie в каталоге с таким Dockerfile и запустить контейнер, как показано выше:

$ docker build -t myangie .
$ docker run --rm --name myangie -v /var/www:/usr/share/angie/html:ro \
    -v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d myangie