NGINX Unit — это лёгкий и универсальный сервер с открытым исходным кодом, который имеет две основные возможности:
Unit объединяет несколько уровней современного стека приложений в мощное, согласованное решение с акцентом на производительность, низкую задержку и масштабируемость. Он предназначен для использования в качестве универсального строительного блока для любой веб-архитектуры, независимо от её сложности, от развёртываний корпоративного масштаба до домашней страницы вашего питомца.
Собственный RESTful JSON API (#openapi-specification) позволяет выполнять динамические обновления без прерываний и гибкую настройку, а встроенная производительность надёжно масштабируется до рабочих нагрузок производственного уровня. Мы достигаем этого с помощью сложной асинхронной многопоточной архитектуры, включающей несколько процессов, чтобы обеспечить безопасность и надёжность, получая максимальную отдачу от современных вычислительных платформ.
Выполните следующую команду, чтобы установить unitd
(демон Unit) и unitctl
(инструмент управления).
$ brew install nginx/unit/unit
Подробнее и доступные языковые пакеты см. в документации.
$ docker pull unit:<TAG>
$ mkdir /tmp/unit-control # customize as needed.
$ docker run -d \
--mount type=bind,src=/tmp/unit-control,dst=/var/run \
--mount type=bind,src=.,dst=/www \
--network host \
unit
Описание тегов изображений см. в документации.
Внимание: последний тег изображения может не поддерживать определённые языковые модули, проверьте доступные теги изображений по ссылке выше перед извлечением своего образа.
Ваш текущий рабочий каталог теперь будет подключён к образу Unit в /www
. Вы можете получить доступ к его сокету по адресу /tmp/unit-control/control.unit.sock
, если не было сделано никаких дополнительных настроек.
Этот вспомогательный скрипт настраивает правильные репозитории пакетов для системы.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit
# ./setup-unit repo-config
Для Debian:
# apt install unit
Для Fedora:
# yum install unit
Подробности и доступные языковые пакеты см. в документации.
unitctl
unitctl
упрощает управление процессами NGINX Unit через простой в использовании интерфейс командной строки. Чтобы начать работу с unitctl
, загрузите его из официальных выпусков GitHub или Homebrew.
[!NOTE] Если вы установили Unit с Homebrew, вы можете пропустить этот шаг, так как
unitctl
включён по умолчанию.
Загрузите соответствующий двоичный файл unitctl
для вашей системы из выпусков NGINX Unit.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz
# mv unitctl /usr/local/bin/
Если у вас установлен Docker на вашем компьютере, вы можете легко запустить один из официальных образов Docker Unit вместе с вашим приложением.
[!TIP] Руководства по использованию и настройке доступны на unit.nginx.org для веб-приложений, созданных с помощью Python, PHP, WebAssembly. Node.js, Ruby и другие
Здесь приведён пример использования образа Docker unit:python
:
$ unitctl instances new 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
будет смонтирован в /www
файловой системы Docker.
Сохраните это в /path/to/app/wsgi.py
:
def application(environ, start_response):
start_response("200 OK", [("Content-Type", "text/plain")])
return (b"Hello, Python on Unit!")
Затем вы можете интерактивно отредактировать текущую активную конфигурацию:
$ unitctl edit
{
"listeners": {
"*:8000": {
// Point listener to new application
"pass": "applications/python"
}
},
// Add an application definition
"applications": {
"python": {
"type": "python",
"path": "/www/",
"module": "wsgi"
}
}
}
Действительные конфигурации будут применены после сохранения и закрытия.
$ curl localhost:8000
Hello, Python on Unit!
Дополнительные примеры конфигурации Python можно найти в документации Unit здесь.
Unit запускает приложения на
различных языках.
Давайте рассмотрим конфигурацию простого PHP-приложения на Unit с помощью curl
.
Предположим, вы сохранили PHP-скрипт как /www/helloworld/index.php
:
<?php echo "Hello, PHP on Unit!"; ?>
Чтобы запустить его на Unit с установленным модулем unit-php
, сначала настройте объект приложения. Давайте сохраним наш первый фрагмент конфигурации в файле с именем config.json
:
{
"helloworld": {
"type": "php",
"root": "/www/helloworld/"
}
}
Сохранение его в виде файла не обязательно, но может пригодиться для более крупных объектов.
Теперь PUT
-те его в раздел /config/applications
API управления Unit, обычно доступный по умолчанию через сокет домена Unix:
# curl -X PUT --data-binary @config.json --unix-socket \
/path/to/control.unit.sock http://localhost/config/applications
{
"success": "Reconfiguration done."
}
Далее обратитесь к приложению из объекта слушателя в разделе /config/listeners
API. На этот раз мы передаём конфигурационный фрагмент прямо из командной строки:
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' \
--unix-socket /path/to/control.unit.sock http://localhost/config/listeners
{
"success": "Reconfiguration done."
}
Теперь Unit принимает запросы по указанному IP и порту, передавая их процессу приложения. Ваше приложение работает!
$ curl 127.0.0.1:8080
Hello, PHP on Unit!
Наконец, запросите весь раздел /config
API управления:
# curl --unix-socket /path/to/control.unit.sock http://localhost/config/
Вывод Unit должен содержать оба фрагмента, аккуратно организованные:
{
"listeners": {
"127.0.0.1:8080": {
"pass": "applications/helloworld"
}
},
"applications": {
"helloworld": {
"type": "php",
"root": "/www/helloworld/"
}
}
}
Unit поддерживает запуск компонентов WebAssembly (WASI 0.2). Дополнительную информацию см. в документации по конфигурации Unit.
Наша спецификация OpenAPI направлена на упрощение настройки и интеграции развёртываний NGINX Unit и предоставление авторитетного источника знаний о контрольном API.
Начните задавать вопросы и делиться своими мыслями в GitHub Discussions.
Наша страница GitHub issues предлагает пространство для более технического обсуждения в вашем собственном темпе.
Карта проектов на GitHub проливает свет на нашу текущую работу и планы на будущее.
Наш официальный веб-сайт может предоставить ответы, которые нелегко найти иначе.
Присоединяйтесь к проекту, внеся свой вклад! См. страницу внесения вклада.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )