Nginx+python: Difference between revisions

From TÜ Narva Kolledži Wiki
Jump to navigation Jump to search
Content deleted Content added
Ilia (talk | contribs)
No edit summary
Ilia (talk | contribs)
No edit summary
Line 66: Line 66:
<pre>
<pre>
sudo apt-get install uwsgi uwsgi-plugin-python3
sudo apt-get install uwsgi uwsgi-plugin-python3
sudo nano /etc/uwsgi/apps-enabled/testapp.ini
sudo nano /var/testweb/wsgi-test/testapp.ini
</pre>
</pre>


Line 82: Line 82:
</pre>
</pre>


Разрешаем наш сервис и запускаем его:
<pre>
<pre>
⚫
sudo systemctl enable uwsgi

⚫
sudo systemctl restart uwsgi

⚫
systemctl enable uwsgi

⚫
systemctl restart uwsgi
</pre>
</pre>



Revision as of 23:51, 7 December 2022

Что такое Nginx

Nginx logo
Nginx logo

Nginx - эффективный инструмент по развертыванию веб-сервера. Если посмотреть точное определение, то nginx - это веб-сервер, обратный прокси-сервер и почтовый прокси-сервер с открытым исходным кодом и асинхронной архитектурой. В отличие от обычного веб-сервера, Nginx не создает отдельный поток для каждого запроса, а разделяет его на более мелкие отдельные структуры типа, называемые рабочими соединениями. Каждое из этих соединений обрабатывается отдельным рабочим процессом, и после выполнения они объединяются в один блок, который возвращает результат основному процессу данных. Один рабочий может одновременно обрабатывать до 1024 запросов одного типа.






Инструкция по развертыванию Python приложений на Nginx в Ubuntu

В этой инструкции я буду развертывать Python приложение на Nginx.
Инструкция подойдет для абсолютно любого веб-приложения, написанного на языке Python, например Django или Flask.

Необходимые технологии

Для реализации нам потребуются следующие технологии:

  • Nginx
  • Python
  • uWSGI - это одна из реализаций интерфейса WSGI для взаимодействия приложений на языке Python и самого веб-сервера.


Стек наших компонентов будет выглядеть следующим образом:
Cтек

Устанавливаем Python

Для начала работы нам нужен сам язык python и пакеты для работы с ним.

sudo apt-get update
sudo apt-get install python3  python3-pip python3-dev
  • python3-pip- установщик пакетов python
  • python3-dev - стандартный набор библиотек для разработчика

Так же нам потребуется установить Python библиотеку для создания виртуального окружения:

sudo pip3 install virtualenv

Настраиваем виртуальное окружение

Создаем виртуальное окружение для uWSGI:

virtualenv uwsgi-test

Переходим в директорию

cd uwsgi-test/

Активируем окружение:

source ./bin/activate


venv

uWSGI

В окружение устанавливаем uwsgi:

sudo pip3 install uwsgi

Теперь нам нужно проверить, работает ли uWSGI. Для этого создадим наше тестовое приложение в одном файле testapp.py

sudo touch testapp.py
sudo nano testapp.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"uWSGI works"]

Теперь запускаем uWSGI на порт 8000

uwsgi --http :8000 --wsgi-file testapp.py

После этого можно перейти в браузер и перейти по адресу <ip-address>:8000 и убедиться, что все работает
Ccr
На этом этапе мы реализовали такую связь компонентов:
Ccr
В этом случае пользователь напрямую обращается к uWSGI. Теперь можно деактивировать виртуальную среду.

 deactivate 

Теперь настроим uWSGI так, чтобы не запускать каждое приложение в ручную:

 sudo apt-get install uwsgi uwsgi-plugin-python3
sudo nano /etc/uwsgi/apps-enabled/python_app.ini 
 
sudo apt-get install uwsgi uwsgi-plugin-python3
sudo nano /var/testweb/wsgi-test/testapp.ini
[uwsgi]
module = wsgi:application
chdir = /var/testweb/wsgi-test
plugins = python3
max-requests = 5000
processes = 5
threads = 2
master = true
http = 0.0.0.0:8000
die-on-term = true

Разрешаем наш сервис и запускаем его:

sudo systemctl enable uwsgi
sudo systemctl restart uwsgi 

Установка nginx