Установка Angie из исходников на Debian 12
Angie (Энджи) — эффективный, мощный и масштабируемый веб-сервер, реализованный как форк nginx.
В этом руководстве я покажу, как установить веб-сервер Angie на операционной системе Debian 12. Установку будем выполнять из исходников, используя актуальную на момент написания статьи версию Angie.
Установка зависимостей
Устанавливаем необходимые пакеты зависимостей.
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
с базовыми настройками для работы веб-сервера:
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
базовой конфигурации сайта по умолчанию:
# 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
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.

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.