Используемые термины: NGINX , uWSGI , Python , Ubuntu .
В нашей инструкции будет рассмотрена настройка веб-сервера для поддержки приложений, разработанных на языке Python. Руководство рассчитано для операционных систем семейства Deb (Ubuntu, Debian, Mint).
Запуск uWSGI приложения
Настройка uWSGI сервиса
NGINX + uWSGI
Настройка uWSGI
Установка и настройка NGINX
Читайте также
Устанавливаем python и дополнительные компоненты:
apt-get update
apt-get install python3 python3-dev python3-pip
* где:
Устанавливаем дополнительные пакеты для python:
pip3 install virtualenv uwsgi
* где:
uWSGI установлен — посмотрим версию приложения:
uwsgi —version
Создаем каталог, в котором разместим наше тестовое приложение:
mkdir -p /var/www/python_app
… и перейдем в созданный каталог:
cd /var/www/python_app
Создадим файл со следующим содержимым:
vi wsgi.py
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
def application(env, start_response):
start_response(‘200 OK’, [(‘Content-Type’,’text/html’)])
return [b»<h1>Hello World</h1>»]
* в данном примере мы просто выводим на экран знаменитую фразу «Hello World».
Если в нашей системе используется брандмауэр с запрещающими правилами, открываем порт 8080:
iptables -I INPUT -p tcp —dport 8080 -j ACCEPT
Сохраняем правила:
apt-get install iptables-persistent
netfilter-persistent save
Создаем виртуальное окружение:
virtualenv myappenv
Активируем созданное окружение командой:
source myappenv/bin/activate
Запускаем веб-сервер на порту 8080:
uwsgi —socket 0.0.0.0:8080 —protocol=http -w wsgi
Открываем браузер и переходим по адресу http://<IP-адрес нашего сервера>:8080 — мы должны увидеть нашу страницу «Hello World».
Веб-сервер работает. Остановим его работу комбинацией клавиш Ctrl + С и деактивируем виртуальную среду:
deactivate
Переходим к настройке uWSGI в качестве демона.
Чтобы не запускать сервис для каждого приложения вручную, необходимо настроить веб-сервер uWSGI. Он будет контролировать процесс работы с каждым приложением и позволит задать индивидуальные параметры с помощью конфигурационных файлов.
Устанавливаем веб-сервер командой:
apt-get install uwsgi uwsgi-plugin-python3
Создаем конфигурационный файл следующего содержания:
vi /etc/uwsgi/apps-enabled/python_app.ini
[uwsgi]
module = wsgi:application
chdir = /var/www/python_app
plugins = python3
max-requests = 5000
processes = 5
threads = 2
master = true
http = 0.0.0.0:8080
die-on-term = true
* где:
Разрешаем и стартуем сервис:
systemctl enable uwsgi
systemctl restart uwsgi
Открываем браузер и переходим по адресу http://<IP-адрес нашего сервера>:8080/ — должна открываться наша страница Hello World .
По сути, наш сервер готов к работе, но очень часто, uWSGI настраивается в связке с NGINX, который берет на себя задачи по проксированию запросов http и отдачи статики. Рассмотрим пример настройки данной связки.
Откроем на редактирование ранее созданный конфигурационный файл:
vi /etc/uwsgi/apps-enabled/python_app.ini
Закомментируем строку:
#http = 0.0.0.0:8080
* мы будем обращаться к uWSGI через сокетный файл, таким образом, держать сервис на отдельном порту избыточно.
Добавим к нашей настройке:
[uwsgi]
…
socket = wsgi.sock
chmod-socket = 660
vacuum = true
uid = www-data
gui = www-data
* где:
Меняем владельца каталога нашего проекта на пользователя, под которым работает NGINX (в Ubuntu это, как правило, www-data ):
chown -R www-data:www-data /var/www/python_app
Перезапускаем uwsgi:
systemctl restart uwsgi
Переходим к настройке NGINX. Для начала, установим его:
apt-get install nginx
Разрешим автозапуск:
systemctl enable nginx
Откроем на редактирование конфигурационный файл default :
vi /etc/nginx/sites-enabled/default
* это самый простой путь для тестирования нашей настройки. Для продуктивной среды хорошим тоном будет настройка виртуальных доменов.
Приведем location / к следующему виду:
location / {
#try_files $uri $uri/ =404;
include uwsgi_params;
uwsgi_pass unix:/var/www/python_app/wsgi.sock;
try_files $uri $uri/ /wsgi.py?$query_string;
}
* в данном примере мы все запросы переводим на файл wsgi.py с передачей в качестве аргументов строки запроса. Все запросы передадутся на uWSGI через сокетный файл wsgi.sock , находящийся в каталоге нашего проекта.
Проверим корректность настройки nginx:
nginx -t
Перезапустим его:
systemctl restart nginx
Готово, открываем браузер и переходим по адресу http://<IP-адрес нашего сервера>/ (уже без указания на порт) — должна открываться все та же страница Hello World .
Развертывание Django проекта на сервере NGINX в Linux Ubuntu
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…