Здравствуйте.
Рад сообщить о выпуске новой версии NGINX Unit.
Это корректирующий выпуск, который нацелен на повышение стабильности Node.js модуля. Нам удалось добиться существенных результатов и теперь поддержка Node.js в лучшем состоянии.
*) Изменение: теперь rpath задается в модуле Ruby, только если библиотека
не найдена в путях по умолчанию; это позволяет соблюсти требования к
пакетированию в некоторых системах.
*) Исправление: не работали опции PHP «disable_functions» и
«disable_classes», заданные через управляющий API.
*) Исправление: не срабатывали Promises для данных из запросов в Node.js.
*) Исправление: различные проблемы совместимости с приложениями Node.js.
*) Исправление: в модуле Node.js происходила ошибка сегментации, если
приложение читало тело запроса после вызова request.end().
*) Исправление: в модуле Node.js происходила ошибка сегментации, если
приложение пыталось дважды отправить заголовок.
*) Исправление: при манипуляциях с полями заголовка ответа в модуле Node.js
не принималось во внимание, что регистр их имен не должен учитываться.
*) Исправление: неперехваченные исключения в Node.js не записывались в лог.
*) Исправление: глобальная установка модуля Node.js из исходников не
работала в некоторых окружениях; ошибка появилась в версии 1.6.
*) Исправление: обратная трассировка исключений при инициализации приложений
на Python не записывалась в лог.
*) Исправление: модуль PHP не собирался, если интерпретатор PHP был собран
с включенной потокобезопасностью.
Хайли лайкли, данный релиз станет последним в 2018 году.
И от всей нашей команды Unit-а я поздравляю вас с наступающим Новым Годом.
2018 год получился очень насыщенным с точки зрения развития проекта Unit.
Множество важных нововведений удалось реализовать, включая:
- Расширенное управление процессами, что позволяет динамически масштабировать
приложение в зависимости от нагрузки. Спасибо Максиму Романову, который
преимущественно работал над этой возможностью.
Документация: https://unit.nginx.org/configuration/#process-management
- Поддержка приложений на Perl, Ruby и Node.js. Спасибо Александру Борисову,
который занимался разработкой этих языковых модулей.
- TLS и интерфейс для управления хранилищем сертификатов, который позволяет
динамически загружать и перенастраивать сертификаты. Спасибо Игорю Сысоеву,
который работал вместе со мной над этой возможностью.
Документация: https://unit.nginx.org/configuration/#ssl-tls-and-certificates
- C API для языковых модулей был вынесен в отдельную библиотеку, что сильно
облегчило интеграцию с Node.js и помогло с предстоящим внедрением поддержки
Java приложений. Ещё раз спасибо Максиму Романову за эту работу.
- Начальная поддержка логирования доступа.
Документация: https://unit.nginx.org/configuration/#access-log
- Расширенные настройки приложений, включая переменные окружения, аргументы
запуска, опции PHP и путей к php.ini.
Не могу вообразить выпуск всей этой функциональности без кропотливой работы нашего инженера по качеству Андрея Зеленкова. Он беспрестанно повышал покрытие кода Unit-а функциональными тестами, проводил различное фаззинг-тестирование и оповещал разработчиков о любом подозрительном поведении сервера.
Также одним из ключевых достижений этого года стало существенное улучшение полноты и качества документации. Сайт unit.nginx.org теперь полностью актуализирован и содержит информацию обо всех появившихся возможностях, как в самых последних, так и во всех более ранних версиях Unit-а. С этой задачей успешно справился наш технический писатель Артем Конев.
Кроме того, он продолжает перерабатывать документацию и планирует серию Howto по настройке Unit-а в различных ситуациях и для запуска разных приложений. Если у вас есть пожелания по конкретным приложениям, которые вы хотели бы запускать в Unit-е, то, пожалуйста, создайте запрос по документации на GitHub:
- https://github.com/nginx/unit-docs/issues
Спасибо нашим системным инженерам: Андрею Белову и Константину Павлову, которые обеспечивали свежими пакетами репозитории для различных дистрибутивов и подготавливали образы для Docker-а.
Спасибо нашему продуктовому менеджеру Николаю Шадрину, который помогал со стратегией развития и блестяще выступал на конференциях по всему миру. Вы можете увидеть его в записи с недавней конференции NGINX Conf 2018, где он демонстрировал последние возможности Unit-а:
- https://www.youtube.com/watch?v=JQZKbIG3uro
Безусловно всё, что я упомянул, было бы невозможно без нашего замечательного сообщества пользователей. Они по достоинству оценили перспективы Unit-а и начали постепенно переносить на него свои проекты. Благодарю всех, кто сообщал о найденных ошибках и предлагал различные интересные идеи к реализации, оставлял ценные пожелания по дальнейшему развитию проекта, которые безусловно будут учтены по мере возможности. Мы приглашаем каждого принять участие через список рассылки:
- http://mailman.nginx.org/mailman/listinfo/unit
или в GitHub:
- https://github.com/nginx/unit
Особенно хочется отметить 洪志道 (Hong Zhi Dao), как одного из самых активных участников сообщества, который не только сообщает об ошибках, но и регулярно вычитывает код, задает наводящие вопросы и присылает различные патчи с улучшениями. Спасибо ему огромное за вклад в проект.
Отдельное спасибо ответственным за пакеты Unit-а в различных системах, среди которых: Сергей Осокин (FreeBSD), Ralph Seichter (Gentoo), André Klitzing (Alpine Linux) и Julian Brost (Arch Linux). Извините, если кто-то поддерживает репозиторий с пакетами Unit-а в одном из дистрибутивов и не был упомянут. Вы можете открыть запрос на GitHub для внесения вашего репозитория в секцию Installation сайта unit.nginx.org:
- https://github.com/nginx/unit-docs/issues
К сожалению, нам не удалось достигнуть всех наших грандиозных целей на этот год. Разработку некоторой функциональности пришлось перенести на будущий год.
Сейчас продолжается работа над поддержкой WebSocket, модулем Java, маршрутизацией запросов и раздачей статики.
Мы уже достигли неплохого прогресса в поддержке Java. Эта разработка ведется в отдельном публичном репозитории на GitHub:
- https://github.com/mar0x/unit
Таким образом, если вы заинтересованы в запуске приложений на Java, то уже можете принять участие и пробовать.
Множество других интересных возможностей и анонсов ждет Unit в 2019 году. Спасибо всем, кто следит за проектом, и желаю всего наилучшего.
--
Валентин Бартенев