Как запустить 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.