uWSGI

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:45, 15 января 2019.

uWSGI
Разработчики: Unbit
Постоянный выпуск: 2.0.15 / 30.03.2017
Состояние разработки: Активное
Написана на: C
Операционная система: Кросс-платформенная
Тип ПО: Веб-сервер
Лицензия: GNU General Public License v2.0 [Источник 1]
Веб-сайт projects.unbit.it/uwsgi

uWSGI — это проект, объединяющий в себе веб-сервер и сервер веб-приложений, обладающий широким инструментарием для создания хост-серверов, а также предоставляющий общий API для интеграции с различными серверами приложений (для различных языков и протоколов программирования), прокси, диспетчерами и мониторами процессов. Благодаря своей подключаемой архитектуре он может быть расширен для поддержки большего числа платформ и языков. Часть «WSGI» в названии является данью одноименному стандарту Python WSGI поскольку он был первым разработанным плагином для проекта.[Источник 2]

Компоненты

  • Ядро - конфигурация, управление процессами, создание сокетов, мониторинг, протоколирование, области общей памяти, ipc, членство в кластере и сервер подписки uWSGI.
  • Шлюзы - балансировщики нагрузки, прокси и маршрутизаторы.
  • Emperor - осуществляет управление и контроль над системой
  • Циклы - события и параллелизм, компоненты могут выполняться в различных режимах. Поддерживаются различные технологии, включая uGreen, Greenlet, Stackless, Gevent, Coro :: AnyEvent, Tornado, Goroutines и Fibers.

Использование

Может работать как самостоятельный веб-сервер, так и в интеграции с Apache HTTP Server, Nginx, Cherokee HTTP Server и другими.

Используется для запуска приложений на базе фреймворков Django, Flask и других.[Источник 4]

Сервер приложений uWSGI используется как для разворачивания тестовой среды разработчика ПО, так и для управления облачными сервисами, предлагающими хостинг приложений на Python и других языках (например, хостинг DigitalOcean, PaaS-хостинг PythonAnywhere, 8host).

Установка

Один из способов установки через консоль:

$ sudo apt-get install build-essential python-dev
$ sudo apt-get install python-pip
$ pip install uwsgi

Нам понадобятся Python development пакеты. Если вы используете Debian или основнную на Debian операционную систему (например, Ubuntu или Mint), вам нужно установить пакет pythonX.Y-dev, где X.Y — нужная вам версия Python.

Запуск

Создадим директорию в корне для тестового файла ~/test:

$ mkdir ~/projects 

Для проверки работоспособности создадим в директории ~/test текстовый файл test.py :

$ vim ~/projects/app.py
$ cat ~/projects/app.py

Cо следующим содержанием

1 def application(env, start_response):
2         start_response('200 OK', 
3                 [('Content-Type','text/html')])
4         return "Hello World"

Далее перейдем в директорию с тестовым файлом и запустим его исполнение через консоль:

$ cd ~/test
$ uwsgi --http :8000 --wsgi-file test.py
  • --http - тип соединения(в данном случае мы используем протокол http)
  • :8000 - это порт через который будет передаваться запрос нашему веб-серверу
  • --wsgi-file - стандарт взаимодействия между исполняемой программой и веб-сервером uWSGI (в данном случае WSGI )

Полный список функций и аргументов доступен на официальном сайте проекта uWSGI [Источник 5]

Источники

  1. uWSGI License // GitHub [2018-2018]. Дата обновления:02.12.18. URL: https://github.com/unbit/uwsgi/blob/master/LICENSE (дата обращения: 02.12.2018)
  2. The uWSGI project// uWSGI revision.[2012—2016]. Дата обновления:02.12.18. URL: https://uwsgi-docs.readthedocs.io/en/latest/index.html (дата обращения: 02.12.2018)
  3. The uWSGI project// uWSGI revision.[2012—2016]. Дата обновления:02.12.18. URL: https://uwsgi-docs.readthedocs.io/en/latest/index.html (дата обращения: 02.12.2018)
  4. uWSGI // Wikipedia.[2018—2018]]. Дата обновления:02.12.18. URL: https://ru.wikipedia.org/wiki/UWSGI (дата обращения: 02.12.2018)
  5. How To Setup uWSGI On Ubuntu 12.10 // Digital Ocean Inc. [2019—2019]]. Дата обновления:02.12.18. URL: https://www.digitalocean.com/community/tutorials/how-to-setup-uwsgi-on-ubuntu-12-10 (дата обращения: 02.12.2018)