Миграция с nginx#
Это руководство заменяет пакетный nginx пакетным Angie на том же сервере,
сохраняя конфигурацию, виртуальные хосты, динамические модули и сертификаты.
Предполагается, что nginx установлен из пакета дистрибутива и его конфигурация
лежит в Установите Angie из официальных пакетов для вашего
дистрибутива, но пропустите шаги запуска и включения службы: порты 80 и 443
пока заняты nginx. В Debian и Ubuntu пакет запускает службу сам; занять порты
она не сможет, пока работает nginx. Это ожидаемо и на установку не влияет. Проверьте программу: При установке из пакета конфигурация находится в
В шагах ниже используется rsync; если команды нет, установите
одноименный пакет. Скопируйте конфигурацию nginx в Параметр Переименуйте основной файл конфигурации так, как ожидает Angie: Поправьте пути во всей конфигурации Angie, начиная с основного файла. Как
минимум: Любые пути include, которые пока указывают на Путь к PID-файлу — служба из пакета ожидает его в
Пути к журналу доступа и журналу ошибок: Если виртуальные хосты подключаются из Перечислите исходные ссылки и посмотрите, куда они ведут: Здесь это Затем воссоздайте каждую ссылку, указав на копию в Найдите динамические модули, которые загружает конфигурация nginx: Для популярных сторонних модулей мы публикуем свои пакеты:
Относительный путь load_module, например
Конфигурацию модулей дистрибутивы подключают одним из двух способов: Если динамические модули подключены через
Затем скопируйте файлы конфигурации модулей: Если динамические модули подключены через
Перечислите исходные ссылки и посмотрите, куда они ведут: Здесь это Наконец, воссоздайте каждую ссылку: Часть директив nginx в Angie объявлена устаревшими, а несколько опущены
полностью. Если ваша конфигурация использует какие-либо из них, см.
Неподдерживаемые директивы nginx. На опущенной директиве Чаще всего в конфигурациях встречается Этот шаг нужен, только если root указывает на
Затем поправьте директиву: Директива user задает учетную запись, от имени которой работают рабочие
процессы. Пакеты Angie создают учетную запись Конфигурацию, сертификаты и ключи читает главный процесс от имени
Если директивы root в конфигурации указывают на другие директории,
смените владельца и у них: Поищите все, что еще указывает на nginx: Просмотрите каждое совпадение. Комментарии и файлы параметров из пакета
( Прежде чем переключаться, убедитесь, что Angie принимает новую конфигурацию: Команда загружает динамические модули и разбирает все включенные файлы.
Исправьте все, на что она укажет, и повторите проверку. Чтобы минимизировать простой, запустите Angie сразу после остановки nginx: Включите службу, чтобы она запускалась после перезагрузки: Убедитесь, что теперь отвечает Angie: Убедившись, что Angie работает без сбоев, отключите nginx, чтобы после
перезагрузки он не занял порты 80 и 443: Если сертификатами для nginx управлял Certbot, он продолжит работать и с Angie,
как только вы укажете ему новое расположение файлов. Плагин nginx в certbot ищет Создайте имя файла, которое ожидает плагин: Запустите плагин заново для тех же доменов, указав корневую директорию и
программу Angie; certbot сохранит эти параметры вместе с
сертификатом и использует их при продлении: Проверьте, что продление пройдет успешно: Продлением по-прежнему занимается собственный таймер Certbot. Angie получает и обновляет сертификаты сам, без внешнего клиента: конфигурация
показана в шаге Автоматический HTTPS, а переход с
уже настроенного Certbot описан в разделе Миграция с certbot. Функции, которых нет в nginx, — в открытой и в коммерческой версии. Автоматический HTTPS и API статистики на небольшом примере. Справочник по всем директивам и переменным, сгруппированный по модулям. Пошаговые руководства по отдельным задачам: SSL, OIDC, кластеризация,
панели мониторинга и пользовательские метрики./etc/nginx/, а Angie ставится из официальных пакетов. Большинство директив nginx работают в Angie без изменений;
исключения перечислены в Неподдерживаемые директивы nginx и разобраны ниже.
Контейнеры и сборки с нестандартными путями требуют
доработок, которых это руководство не описывает.Установка Angie#
$ angie -v
Angie version: Angie/1.12.2
/etc/angie/: основной файл angie.conf, директории
http.d/ и stream.d/, ссылка modules/ на директорию с
модулями. Журналы пишутся в /var/log/angie/.Перенос и адаптация конфигурации#
/etc/angie/ целиком:$ sudo rsync -a --no-links /etc/nginx/ /etc/angie/
--no-links пропускает символические ссылки и сообщает о
каждой из них; ссылки в sites-enabled/ и modules-enabled/ вы
воссоздадите ниже, а если ссылка ведет за пределы /etc/nginx/, ее
цель придется скопировать отдельно.$ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
/etc/nginx/:# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/default.d/*.conf;
# include /etc/nginx/http.d/*.conf;
# include /etc/nginx/stream.d/*.conf;
include /etc/angie/conf.d/*.conf;
include /etc/angie/default.d/*.conf;
include /etc/angie/http.d/*.conf;
include /etc/angie/stream.d/*.conf;
# include /etc/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;
# include /etc/nginx/modules-enabled/*.conf;
include /etc/angie/modules-enabled/*.conf;
# include /etc/nginx/mime.types;
include /etc/angie/mime.types;
/run/angie.pid:# pid /var/run/nginx.pid;
# -- или --
# pid /run/nginx.pid;
pid /run/angie.pid;
# access_log /var/log/nginx/access.log;
access_log /var/log/angie/access.log;
# error_log /var/log/nginx/error.log;
error_log /var/log/angie/error.log;
Виртуальные хосты#
sites-enabled/, include на
/etc/angie/ уже переставлен, а сами файлы уже скопированы — но не
символические ссылки, которые пропустил --no-links. Воссоздайте их.$ ls -l /etc/nginx/sites-enabled/
default -> /etc/nginx/sites-available/default
/etc/nginx/sites-available/ — внутри /etc/nginx/,
поэтому копия в /etc/angie/ уже есть. Если цель ссылки лежит вне этой
директории, скопируйте ее в /etc/angie/ отдельно./etc/angie/:$ sudo ln -s /etc/angie/sites-available/default \
/etc/angie/sites-enabled/default
Динамические модули#
$ sudo nginx -T | grep load_module
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
...
angie-module-имя для Angie и angie-pro-module-имя для
Angie PRO — здесь оба файла дает angie-module-geoip2. Сверьтесь со
списком пакетов и установите пакет для
каждого модуля; если модуля в списке нет, соберите его под Angie
самостоятельно.modules/ngx_http_geoip2_module.so, отсчитывается от префикса
/etc/angie, где modules ведет на директорию с модулями пакета,
поэтому менять его не нужно. Абсолютный путь из nginx поменять придется: в
Debian и Ubuntu это /usr/lib/angie/modules/, в дистрибутивах семейства
RHEL — /usr/lib64/angie/modules/. Какой бы способ подключения ни
использовался, поправьте абсолютные пути в файлах конфигурации модулей, которые
вы копируете ниже./usr/share/nginx/modules/, поправьте путь:# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
# include /usr/share/nginx/modules/*.conf;
include /usr/share/angie/modules/*.conf;
$ sudo rsync -a /usr/share/nginx/modules/ /usr/share/angie/modules/
/etc/nginx/modules-enabled/, include на /etc/angie/ уже
переставлен. Воссоздайте символические ссылки, которые пропустил
--no-links.$ ls -l /etc/nginx/modules-enabled/
mod-http-geoip2.conf -> /usr/share/nginx/modules-available/mod-http-geoip2.conf
/usr/share/nginx/modules-available/, то есть вне
/etc/nginx/, поэтому скопируйте и эту директорию:$ sudo rsync -a /usr/share/nginx/modules-available/ /usr/share/angie/modules-available/
$ sudo ln -s /usr/share/angie/modules-available/mod-http-geoip2.conf \
/etc/angie/modules-enabled/mod-http-geoip2.conf
Изменившиеся директивы#
angie -t
завершается с ошибкой о неизвестной директиве, а устаревшая принимается с
предупреждением, которое называет директиву для замены.keepalive_min_timeout: в Angie
ее нет — удалите ее.Корневая директория (необязательно)#
/usr/share/nginx/html/. Перенесите содержимое в директорию Angie:$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
# root /usr/share/nginx/html;
root /usr/share/angie/html;
Пользователь и группа (необязательно)#
angie. Учетная запись
nginx продолжает работать, поэтому шаг необязателен; чтобы перевести рабочие
процессы на учетную запись Angie:# user www-data www-data;
user angie angie;
root, поэтому владельца /etc/angie/ менять не нужно. Рабочим
процессам нужен доступ к содержимому, которое они раздают:$ sudo chown -R angie:angie /usr/share/angie/html/
$ sudo chown -R angie:angie /var/www/html/
Итоговая проверка#
$ grep -rn nginx /etc/angie/
fastcgi_params, scgi_params, uwsgi_params) упоминают
nginx безобидно; важны пути, которые по-прежнему ведут в /etc/nginx/
или /var/log/nginx/.Проверка и переключение#
$ sudo angie -t
Остановка nginx и запуск Angie#
$ sudo systemctl stop nginx && sudo systemctl start angie
$ sudo systemctl enable angie
$ curl -I localhost
HTTP/1.1 200 OK
Server: Angie/1.12.2
...
Отключение nginx#
$ sudo systemctl disable nginx
Сертификаты#
Certbot#
nginx.conf в корневой директории
сервера и перезагружает сервер через программу nginx. Настройте его на Angie до
следующего продления.$ sudo ln -s /etc/angie/angie.conf /etc/angie/nginx.conf
$ sudo certbot --nginx --nginx-server-root=/etc/angie --nginx-ctl=angie -d example.com -d www.example.com
$ sudo certbot renew --dry-run
Встроенный клиент ACME#
Что дальше#