Перейти к содержимому

Как запустить flask на сервере

  • автор:

Как запустить Flask на сервере?

Здравствуйте, у меня возникли трудности при продакшене Flask на сервере. Насколько я разобрался в теме, ему нужен сервер, чаще всего это apache или nginx и как правило linux, видел решение для windows, также нужно настроить wsgi, который объяснит серверу питон. Есть ли какие-то хорошие решение под windows server, что лучше использовать, чтобы работало через https и домен? Есть ли какая-то инструкция для развёртывания этого всего на удалённой машине? В приложение также используется MySQL, это тоже я думаю стоит учитывать, при выборе веб сервера для Flask.
Пробовал этот гайд для windows: https://thilinamad.medium.com/flask-app-deployment. . С ним возникли проблемы, так как apache пишет it work, но на деле самого проекта не видно и это только на 443 порте, а это http, https, как я понял работает на 80 портах, когда их указывал писал forbiden. (проблемы с доступом к файлу). Заранее извиняюсь за лишнию воду, просто не знаю как описать это более точно.

  • Вопрос задан более двух лет назад
  • 1782 просмотра

Настройка dev сервера Flask для доступа из сети

Возможность видеть веб-приложение, развернутое на dev сервере, с других машин в сети может быть полезной во многих ситуациях. Особенно это актуально при тестировании и отладке в реальной сетевой среде. Однако, стандартная настройка Flask при использовании flask run или app.run() позволяет обращаться к серверу только с той же машины, на которой он запущен. Другими словами, Flask-приложение по умолчанию запускается только на localhost.

Пример проблемы

В качестве примера можно привести ситуацию, когда есть необходимость протестировать веб-приложение на мобильном устройстве, которое находится в той же сети. Попытка обратиться к Flask-серверу по адресу http://[dev-host-ip]:5000 с мобильного устройства не увенчается успехом. Вместо ожидаемого ответа от сервера, получаем ошибку, что сервер не доступен.

Решение проблемы

Чтобы сделать Flask-приложение доступным из сети, необходимо в параметрах запуска указать хост 0.0.0.0 . Это означает, что сервер будет слушать все доступные сетевые интерфейсы. Вот пример, как это можно сделать:

if __name__ == '__main__': app.run(host='0.0.0.0')

Теперь, если на машине, где запущен сервер, будет доступ к сети, то к веб-приложению сможет обратиться любое устройство из этой сети по адресу http://[dev-host-ip]:5000 .

Важное замечание

Стоит заметить, что использование 0.0.0.0 в продакшен-среде не рекомендуется. Это связано с тем, что такая настройка может создать потенциальные проблемы безопасности. В продакшене рекомендуется использовать более безопасные настройки, например, настроить обратный прокси-сервер с использованием Nginx или Apache.

# Запуск Flask-приложения на Джино.Хостинге

Flask — фрэймворк для создания веб-приложений на языке Python. Минималистичный, обладающий базовым набором функций, Flask отлично подходит для создания небольших сайтов и приложений, не требующих большого количества ресурсов и подключаемых библиотек.

Рассмотрим запуск простого Flask-сайта на хостинге Джино.

Для запуска Flask-проектов на хостинге нужно создать новое виртуальное окружение для Python и затем загружать на сервер созданный на локальной машине проект.

Для загрузки проекта на сервер есть три основных способа:

  • загрузка через протоколы передачи файлов (FTP, FTPS, SFTP);
  • использование git-репозитория;
  • деплой проекта с помощью инструментов, встроенных в IDE, с которой вы работаете.

Для запуска Flask-приложения вам понадобятся подключённые услуги Поддержка веб-приложений и Поддержка SSH. После их подключения можно начинать работу.

# Создание виртуального окружения

Для запуска Flask-приложения (нового сайта) создадим новое виртуальное окружение, активируем и установим в него Flask:

/opt/alt/python37/bin/virtualenv --python /opt/alt/python310/bin/python3 flask_venv source ./flask_venv/bin/activate pip install flask # Output … Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.1.2 click-8.1.3 flask-2.1.2 itsdangerous-2.1.2 

Здесь /opt/alt/python310/bin/python3 — путь к интерпретатору Python 3.10. Список поддерживаемых версий Python и их расположение можно найти в разделе Управление

# Создание сайта на Flask

Создавать Flask-приложение можно в любой удобной для вас IDE.

Начнём с создания файла hello.py со следующим содержимым:

from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello, World!" if __name__ == "__main__": app.run() 

Это Python-код, который выведет на главную страницу нашего сайта стандартное приветствие Hello, World!

После этого переходим к запуску приложения.

# Запуск Flask-приложения

Для запуска Flask-приложения на хостинге Джино его нужно деплоить на хостинг и создать файл passenger_wsgi.py для запуска Python-кода через mod_passenger.

Загрузите своё Flask-приложение на хостинг любым удобным для вас способом. Файлы приложения должны располагаться в папке domains в подпапке с доменным именем, на котором будет запускаться приложение (например: ~domains/example.com )

После этого в папке с доменным именем создайте файл passenger_wsgi.py следующего содержания:

import sys, os INTERP = os.path.expanduser("~/flask_venv/bin/python3") if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv) sys.path.append(os.getcwd()) from flask_app.hello import app as application 

После сохранения файла нужно перейти в раздел Управление

Настройки веб-сервера и проверить, что версия интерпретатора совпадает с той, для которой создано виртуальное окружение. Далее перезагрузите веб-сервер.

Теперь, если мы откроем браузер и укажем в адресной строке имя нашего сайта, мы должны увидеть стандартное приветствие Hello, World!.

© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи №150549 от 09.03.2017.

Простой веб-сервер с использованием Python и Flask

Александр Менщиков

Существует множество способов поднять свой собственный веб-сервер, который будет обрабатывать HTTP запросы пользователей и возвращать им в браузеры результат.

Поскольку мы используем Python в качестве основного языка, библиотеку, упрощающую нам создание веб-сервера, выберем тоже из мира Python.

Flask — это инструмент для веб-сайтов на языке Python. Представляет из себя микрофреймворк со встроенным веб-сервером. Договоримся, что вы используете Linux в качестве операционной системы, либо знаете как выполнить аналоги команд в Windows.

Установка необходимых библиотек

В предыдущей статье вы уже установили и настроили python, pip и virtualenv. Осталось загрузить сам Flask:

pip install flask

Если вы желаете работать с виртуальными окружениями, перейдите в директорию с ним и выполните команду:

source venv/bin/activate

Чтобы проверить все ли правильно установилось, вы можете создать файл server.py со следующим содержимым:

from flask import Flask app = Flask(__name__) @app.route(«/») def hello(): return «Hello World!» if __name__ == «__main__»: app.run()

Выполнить его можно командой:

python server.py

По умолчанию, Flask работает на порту 5000. Перейдите по адресу http://localhost:5000 в браузере. Если вы все сделали правильно, на экране отобразится надпись «Hello World!».

Flask позволяет делать много замечательных вещей, например, обрабатывать GET и POST параметры. Более подробно можно ознакомиться со всеми функциями в официальной документации:

Модифицируем скрипт таким образом, чтобы он принимал имя пользователя и выводил на экран приветствие:

from flask import Flask app = Flask(__name__) @app.route(«/<username>», methods=[‘GET’]) def index(username): return «Hello, %s!» % username if __name__ == «__main__»: app.run(host=’0.0.0.0′, port=4567)

Теперь скрипт будет работать на 4567 порту, а также принимать от пользователя имя в адресной строке. Перейдите в браузере по ссылке: http://localhost:4567/yourname Вы увидите ответ: «Hello, yourname». Это значит, что сервер успешно работает и возвращает ожидаемую строку.

Настраиваем прокси

Чтобы ваш сайт был доступен другим людям, нужно иметь внешний IP адрес. Если вы знаете, что это такое или у вас есть VPS, вы можете настроить все самостоятельно. Если же вы слышите эти слова первый раз — воспользуйтесь более простым, хотя и не очень универсальным методом, который хорошо описан тут. Суть данного метода заключается в использовании прокси сервера.

В качестве прокси, будем использовать бесплатную программу ngrok. Ее главная задача — держать постоянное соединение и доставлять вам всю полученную от любого человека информацию. Запустите ее командой, передав в качестве параметра любой свободный порт:

./ngrok http 4567

В ответ вы получите несколько строчек информации, среди которой будет нечто подобное:

Forwarding http://7e9ea9dc.ngrok.io -> 127.0.0.1:4567

Адрес http://7e8ea9dc.ngrok.io можете смело пересылать своим друзьям, пройдя по нему, они попадут на ваш сайт.

If you like this article, share a link with your friends

Read more

We talk about interesting technologies and share our experience of using them.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *