SCROLL
Среднее время на прочтение: 6 мин.

Установка Angie из исходников на Debian 12

Angie (Энджи) — эффективный, мощный и масштабируемый веб-сервер, реализованный как форк nginx.

В этом руководстве я покажу, как установить веб-сервер Angie на операционной системе Debian 12. Установку будем выполнять из исходников, используя актуальную на момент написания статьи версию Angie.

Официальная страница Angie — https://angie.software/angie
На момент написания статьи последняя актуальная версия Angie — 1.9.0. Ее и будем собирать, в вашем же случае версия уже может отличаться и это нужно учитывать при шагах ниже.

Установка зависимостей

Устанавливаем необходимые пакеты зависимостей.

apt-get install gcc make curl -y

Собирать Angie мы будем с поддержкой PCRE, Zlib и OpenSSL. Поскольку Angie требует исходные коды этих библиотек, их необходимо предварительно загрузить и распаковать.

cd /opt

wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.gz
wget https://zlib.net/zlib-1.3.1.tar.gz
wget https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz

tar -zxvf pcre2-10.45.tar.gz
tar -zxvf zlib-1.3.1.tar.gz
tar -zxvf openssl-3.5.0.tar.gz
На момент написания статьи используются следующие версии:
— PCRE2 10.45 — https://www.pcre.org/
— Zlib 1.3.1 — https://zlib.net/
— OpenSSL 3.5.0 — https://openssl.org/source/

Сборка и установка

Скачиваем и распаковываем исходники Angie:

curl -O https://download.angie.software/files/angie-1.9.0.tar.gz
tar -xpf angie-1.9.0.tar.gz
cd angie-1.9.0

Сборка

Выполняем конфигурацию Angie с минимальным набором модулей, необходимым для проксирования HTTP-трафика. Если вам нужны дополнительные модули, их следует указать при конфигурации сборки.

./configure \
    --prefix=/etc/angie \
    --conf-path=/etc/angie/angie.conf \
    --lock-path=/run/angie.lock \
    --modules-path=/usr/lib/angie/modules \
    --pid-path=/run/angie.pid \
    --sbin-path=/usr/sbin/angie \
    --error-log-path=/var/log/angie/error.log \
    --http-log-path=/var/log/angie/access.log \
    --http-acme-client-path=/var/lib/angie/acme \
    --http-client-body-temp-path=/var/cache/angie/client_temp \
    --http-fastcgi-temp-path=/var/cache/angie/fastcgi_temp \
    --http-proxy-temp-path=/var/cache/angie/proxy_temp \
    --http-scgi-temp-path=/var/cache/angie/scgi_temp \
    --http-uwsgi-temp-path=/var/cache/angie/uwsgi_temp \
    --user=angie \
    --group=angie \
    --with-file-aio \
    --with-http_acme_module \
    --with-http_realip_module \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-threads \
    --with-pcre=../pcre2-10.45 \
    --with-pcre-jit \
    --with-zlib=../zlib-1.3.1 \
    --with-openssl=../openssl-3.5.0 \
    --with-openssl-opt="enable-ec_nistp_64_gcc_128"
Обратите внимание, что в параметрах --with-pcre=, --with-zlib= и --with-openssl= указываются пути к тем версиям исходных кодов, которые были загружены и распакованы ранее.

Убедитесь, что используете соответствующие версии при конфигурации — в противном случае сборка завершится с ошибкой.

Собираем и устанавливаем:

make -j$(nproc)
make install

Post-Install настройка

Создание пользователя

Создаем служебного пользователя от которого будет работать Angie:

useradd -d /var/cache/angie -r -s /usr/sbin/nologin -c "Angie" angie

Создание каталогов и настройка разрешений

Создаем необходимые каталоги для работы Angie и назначаем для них соответствующие права доступа:

mkdir -p /etc/angie/sites-available
mkdir -p /etc/angie/sites-enabled
mkdir -p /etc/angie/conf.d
mkdir -p /var/cache/angie/{client_temp,fastcgi_temp,proxy_temp,scgi_temp,uwsgi_temp}
mkdir -p /var/log/angie
mkdir -p /var/www/html

chown angie:angie -R /var/cache/angie
chown angie:angie -R /var/log/angie

chmod 700 /var/cache/angie/{client_temp,fastcgi_temp,proxy_temp,scgi_temp,uwsgi_temp}

Основная конфигурация Angie

Сперва удалим стандартный файл конфигурации /etc/angie/angie.conf:

rm /etc/angie/angie.conf

Затем создаем новый файл /etc/angie/angie.conf с базовыми настройками для работы веб-сервера:

/etc/angie/angie.conf
user  angie;
worker_processes  auto;
worker_rlimit_nofile 65536;

error_log  /var/log/angie/error.log notice;
pid        /run/angie.pid;

events {
    worker_connections  65536;
}


http {
    include       /etc/angie/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    log_format extended '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" rt="$request_time" '
                        '"$http_user_agent" "$http_x_forwarded_for" '
                        'h="$host" sn="$server_name" ru="$request_uri" u="$uri" '
                        'ucs="$upstream_cache_status" ua="$upstream_addr" us="$upstream_status" '
                        'uct="$upstream_connect_time" urt="$upstream_response_time"';

    access_log  /var/log/angie/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/angie/conf.d/*.conf;
    include /etc/angie/sites-enabled/*;
}

#stream {
#    include /etc/angie/stream.d/*.conf;
#}

Настройка сайта по умолчанию

Создаем файл /etc/angie/sites-available/default базовой конфигурации сайта по умолчанию:

/etc/angie/sites-available/default
# Default server configuration
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        server_name _;

        root /var/www/html;
        index index.html index.htm;

        location / {
                try_files $uri $uri/ =404;
        }
}

Активируем её и копируем стартовую веб-страницу Angie в каталог обслуживания веб-контента:

ln -s /etc/angie/sites-available/default /etc/angie/sites-enabled/default
cp /opt/angie-1.9.0/html/index.html /var/www/html/index.html
При копировании стартовой страницы и каталога с исходниками Angie, убедитесь в правильности пути с учетом собираемой вами версии Angie.

Systemd

Для управление запуском Angie создадим службу для Systemd:

cat << 'EOF' > /lib/systemd/system/angie.service
[Unit]
Description=Angie - high performance web server
Documentation=https://en.angie.software/angie/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/angie.pid
ExecStart=/usr/sbin/angie -c /etc/angie/angie.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /run/angie.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /run/angie.pid)"

[Install]
WantedBy=multi-user.target
EOF

Обновляем конфигурацию systemd, добавляем в автозапуск, запускаем службу и проверяем ее работу:

systemctl daemon-reload

systemctl enable angie
systemctl start angie
systemctl status angie

System V Init

Так же создадим скрипт управления запуском Angie для System V Init:

cat << 'EOF' > /etc/init.d/angie
#!/bin/sh

### BEGIN INIT INFO
# Default-Start: 2 3 4 5
# Default-Stop:  0 1 6
### END INIT INFO

[ -r /etc/default/angie ] && . /etc/default/angie

CHECK_PAUSE=${CHECK_PAUSE:-1}
CHECK_TRIES=${CHECK_TRIES:-10}

do_configtest() {
        echo "Check config syntax" >&2
        /usr/sbin/angie -t
}

do_upgrade() {
        PIDFILE="/run/angie.pid"
        OLDPIDFILE="$PIDFILE.oldbin"

        do_configtest || return $?

        echo "Perform binary upgrade" >&2
        kill -USR2 $(cat "$PIDFILE")

        for i in $(seq $CHECK_TRIES); do
                sleep $CHECK_PAUSE
                if [ -f "$OLDPIDFILE" -a -f "$PIDFILE" ]; then
                        kill -QUIT $(cat "$OLDPIDFILE")
                        return 0
                fi
        done

        echo "Upgrade failed!" >&2
        return 2
}

case "$1" in
        configtest)
                do_configtest
                ;;
        upgrade)
                do_upgrade
                ;;
        *)
                echo "Usage: $0 {configtest|upgrade}" >&2
                exit 3
                ;;
esac
EOF

Делаем созданный скрипт исполняемый:

chmod +x /etc/init.d/angie

Заключение

По итогу мы получим рабочий экземпляр веб-сервера на базе Angie со следующими модулями:

root:/opt/angie# 2>&1 angie -V | tr -- - '\n' | grep _module
http_acme_module
http_realip_module
http_stub_status_module
http_ssl_module
http_v2_module

И если перейти в браузере по адресу веб-сервера, то нас будет встречать приветственная страница по умолчанию Angie.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.