Миграция с nginx на Angie#
Если вы переходите с nginx на Angie, поздравляем! У нас есть руководство для вас.
Имейте в виду, что оно предназначено для базового сценария замены, который полагается на пакетную версию Angie. Если вы работаете с контейнерами, виртуальными машинами, нестандартными путями или модулями, вам потребуется дополнительная подстройка.
Установка Angie#
Рекомендуем использовать официальные пакеты из наших репозиториев; см. шаги по установке Angie для вашего дистрибутива. Пока не запускайте сервер; вместо этого проверьте его командой sudo angie -V:
$ sudo angie -V
Angie version: Angie/1.7.0
nginx version: nginx/1.27.1
built by gcc 11.4.0
configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf ...
Как следует отсюда,
конфигурация
находится в /etc/angie/
,
когда Angie устанавливается из пакета.
Обновление конфигурации Angie#
Angie обычно требует минимальных изменений в существующей конфигурации nginx.
-
Скопируйте конфигурацию nginx в
/etc/angie/
целиком:$ sudo rsync -a --no-links /etc/nginx/ /etc/angie/
Предположим, конфигурация nginx хранится в
/etc/nginx/
; измените шаги, если у вас другой путь. -
Переименуйте основной файл конфигурации так, как ожидает Angie:
$ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
-
Поправьте пути во всей конфигурации Angie, начиная с основного файла конфигурации. Детали зависят от того, как был установлен nginx, но, по крайней мере, необходимо обновить следующее.
Любые пути include, которые пока указывают на
/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/*; include /etc/angie/modules-enabled/*; # include /etc/nginx/mime.types; include /etc/angie/mime.types;
Файл PID, который важен для управления процессами Angie:
# 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/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;
Затем воссоздайте символические ссылки в /etc/angie/sites-enabled/
,
чтобы все работало.
Перечислите исходные файлы виртуальных хостов, например:
$ ls -l /etc/nginx/sites-enabled/
default -> /etc/nginx/sites-available/default
Обратите внимание на их фактическое расположение;
здесь это /etc/nginx/sites-available/
.
Если вы не копировали их ранее в /etc/angie/
,
скопируйте сейчас:
$ sudo rsync -a /etc/nginx/sites-available/ /etc/angie/sites-available/
Наконец, воссоздайте каждую символическую ссылку:
$ sudo ln -s /etc/angie/sites-available/default \
/etc/angie/sites-enabled/default
Динамические модули#
Найдите и установите используемые в Angie аналоги для всех динамических модулей, упомянутых в конфигурации nginx, например:
$ sudo nginx -T | grep load_module
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
...
Это означает, что вам нужно установить пакет angie-module-geoip2
,
и так далее.
Есть два популярных способа включения конфигурации динамических модулей:
Если динамические модули включены через /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/
Наконец, измените путь load_module в каждом файле:
# load_module "/usr/lib64/nginx/modules/ngx_http_geoip2_module.so";
load_module "/usr/lib64/angie/modules/ngx_http_geoip2_module.so";
Если динамические модули включены через
/etc/nginx/modules-enabled/
,
поправьте путь:
# include /etc/nginx/modules-enabled/*.conf;
include /etc/angie/modules-enabled/*.conf;
Затем воссоздайте символические ссылки в /etc/angie/modules-enabled/
,
чтобы все работало.
Перечислите исходные файлы конфигурации модулей, например:
$ ls -l /etc/nginx/modules-enabled/
mod-http-geoip2.conf -> /usr/share/nginx/modules-available/mod-http-geoip2.conf
Обратите внимание на их фактическое расположение;
здесь это /usr/share/nginx/modules-available/
.
Скопируйте их в /usr/share/angie/
:
$ 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
Корневая директория (необязательно)#
Если root указывает на директорию
/usr/share/nginx/html/
,
можно изменить директиву, указав на Angie.
Скопируйте директорию и исправьте значение root
в конфигурации Angie:
$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
# root /usr/share/nginx/html;
root /usr/share/angie/html;
Пользователь и группа (необязательно)#
Хотя директиву user достаточно оставить как есть, для гибкости можно использовать учетные записи Angie.
Поправьте настройки user
в конфигурации Angie:
# user www-data www-data;
user angie angie;
Измените владельца всех файлов конфигурации,
включая файлы в /usr/share/angie/
,
например:
$ sudo chown -R angie:angie /etc/angie/
$ sudo chown -R angie:angie /usr/share/angie/
Если в конфигурации Angie есть директивы root, измените владельца указанных там директорий, например:
$ sudo chown -R angie:angie /var/www/html/
Завершение#
Чтобы ничего не пропустить,
найдите и исправьте оставшиеся упоминания nginx
в конфигурации Angie:
$ grep -rn --include='*.conf' 'nginx' /etc/angie/
Тестирование и переключение#
Обновив конфигурацию Angie, следующим шагом проверьте ее синтаксис, чтобы убедиться, что Angie может с ней работать, а затем переключиться. Проверьте, что Angie воспринимает новую конфигурацию:
$ sudo angie -t
Эта команда анализирует конфигурацию и сообщает об ошибках, которые блокируют запуск Angie; исправьте все проблемы и перезапустите команду.
Остановка nginx, запуск Angie#
Чтобы минимизировать простой, запустите Angie сразу после остановки nginx:
$ sudo systemctl stop nginx && sudo systemctl start angie
При необходимости включите службу Angie для запуска после перезагрузки:
$ sudo systemctl enable angie
Миграция завершена! На этом все; вы великолепны.
Отключение nginx#
Убедившись, что Angie работает стабильно, можно отключить или удалить nginx, чтобы избежать конфликтов.
Минимум того, что вы можете сделать, — это отключить службу:
$ sudo systemctl disable nginx
Настройка функций Angie#
Можно предположить, что миграция нужна вам не просто так. Почему бы не пойти дальше и не настроить некоторые из дополнительных функций, которые есть в Angie, но нет в nginx?