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 60: Line 60:
<pre> deactivate </pre>
<pre> deactivate </pre>


Теперь настроим uWSGI так, чтобы не запускать каждое приложение в ручную:
<pre> sudo apt-get install uwsgi uwsgi-plugin-python3
sudo nano /etc/uwsgi/apps-enabled/python_app.ini </pre>

<pre>
sudo apt-get install uwsgi uwsgi-plugin-python3
sudo nano /etc/uwsgi/apps-enabled/testapp.ini

</pre>
[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


<pre>


systemctl enable uwsgi

systemctl restart uwsgi
</pre>


==Установка nginx==
==Установка nginx==

Revision as of 23:26, 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 /etc/uwsgi/apps-enabled/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




systemctl enable uwsgi

systemctl restart uwsgi 

Установка nginx