Flask на хостинге

Содержание
Введение
Подключение к серверу
Установка Flask
Создание необходимых файлов и директорий
.htaccess
passenger_wsgi
Flask API для сайта на PHP
Другие статьи о Flask

Введение

Эта статья именно про запуск на виртуальном хостинге.

Про деплой на своём сервере есть отдельная статья:

«Запуск Flask приложения на сервере Linux (Nginx + Gunicorn)»

Конечно, многое зависит от хостинга но основные проблемы, думаю, везде одинаковые.

Flask Logo

Flask на хостинге

В интернете очень много статей о том как запустить Flask локально. Но мало руководств по настройке на виртуальном хостинге (UPD: за последние пару лет стало больше).

За материал к этому руководству, я благодарю техподдержку хостинга beget.ru их статью о настройке Flask на хостинге можете изучить здесь

Начало работы с Flask на хостинге

Сперва нужно подключиться к своему аккаунту на хостинге через ssh.

В Linux ssh клиент скорее всего встроен.

В Windows Можно этого можно использовать терминал, Putty или MobaXterm

Подключиться к аккаунту проще всего по имени домена

ssh username@your_domain

Можно подключиться и по IP. Чтобы его узнать - выполнить

ping your_domain

ssh username@ip

Если на Вашем хостинге установлен Docker - перейдите в контейнер командой

ssh localhost -p222

Слева в приглашении командной строки появится (docker)

(docker) username@server:~/your_domain.ru

Если это beget.ru , либо узнайте как это сделать на вашем хостинге, задав вопрос в техподдержку.

Установка Flask

Обновите pip

python3 -m pip install --upgrade pip

Установите flask

python3 -m pip install flask

или

pip3 install flask --user --ignore-installed

Создание необходимых файлов и директорий

Создадим простейшее web приложение в корне вашего сайта.

Если у Вас на сайте уже есть папка public_html - сохраните её куда-нибудь в надёжное место и удалите с сайта.

Начинаем в абсолютно пустой директории, наша цель - создать такую структуру (skeleton)

. └── flask ├── HelloFlask │ └── __init__.py ├── .htaccess ├── passenger_wsgi.py └── tmp

Создайте две директории HelloFlask и tmp

mkdir HelloFlask tmp

Создаём два файла в корневой директории .htaccess и passenger_wsgi

touch .htaccess
touch passenger_wsgi.py

Если Вы умеете редактировать файлы на хостинге - продолжайте читать эту статью. Если это вызывает проблемы - прочитайте мою статью «Текстовый редактор vi»

.htaccess

Если вы этого ещё не сделали - в корневой директории проекта выполните

touch .htaccess

В файле .htaccess напишите

PassengerEnabled On PassengerPython /home/a/username/.local/bin/python3

Причём /home/a/username/.local/bin/python3 Вам нужно будет заменить на путь до Вашего python3.

Чтобы его узнать выполните

which python3

С файлом .htaccess разобрались, теперь редактируем passenger_wsgi.py

passenger_wsgi

# -*- coding: utf-8 -*- import sys, os # указываем директорию с проектом sys.path.append('/home/a/username/aredel.com/HelloFlask') # указываем директорию с библиотеками, куда поставили Flask sys.path.append('/home/a/username/.local/bin/flask') from HelloFlask import app as application # Когда Flask стартует, он ищет application. # Если не указать 'as application', сайт не заработает from werkzeug.debug import DebuggedApplication # Опционально: подключение модуля отладки application.wsgi_app = DebuggedApplication(application.wsgi_app, True) # Опционально: включение модуля отадки application.debug = False # Опционально: True/False устанавливается по необходимости в отладке

Где /home/a/username/aredel.com/ нужно заменить на адрес Вашего сайта от корня хостинга.

С файлом passenger_wsgi.py разобрались, переходим в папку HelloFlask

cd HelloFlask

Создаём там файл __init__.py

touch __init__.py

И пишем там

from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello Flask!' if __name__ == '__main__': app.run()

С файлом __init__.py разобрались, возвращаемся в корневую директорию

cd ..

И выполняем

ln -s public_html public
touch tmp/restart.txt

Открывайте Ваш сайт и убедитесь, что там написано Hello Flask!

Когда Вы внесете какие-то обновления не забудьте после сохранения выполнять перезагрузку командой.

touch tmp/restart.txt

Flask API для сайта на PHP

Допустим у вас уже есть сайт на PHP и нужно сделать для него REST API на основе Flask. Для этого не обязательно заказывать выделенный сервер - на хостинге Beget вам помогут реализовать эту идею даже на самом простом тарифе.

В корневой директории сайта создайте директорию flaskapi

Она будет на одном уровне с public_html

Там же создайте файл .htaccess

mkdir flaskapi
touch .htaccess
ls -a

flaskapi public_html .htaccess

vi .htaccess

PassengerEnabled On PassengerPython /home/u/user/.local/bin/python3 PassengerAppRoot /home/u/user/domainname.ru/flaskapi PassengerBaseURI /flaskapi

Перейдтие в директорию flaskapi создайте ссылку public , папку с проектом HelloFlask и создайте там файл passenger_wsgi.py

cd flaskapi
ln -s public_html public
mkdir HelloFlask
touch HelloFlask/__init__.py
touch passenger_wsgi.py
vi passenger_wsgi.py

# -*- coding: utf-8 -*- import sys, os # указываем директорию с проектом sys.path.append('/home/u/user/domainame.ru/flaskapi/HelloFlask') # указываем директорию с библиотеками, куда поставили Flask sys.path.append('/home/u/user/.local/lib/python3.7/site-packages') #from flaskapi import app as application from HelloFlask import app as application # Когда Flask стартует, он ищет application. # Если не указать 'as application', сайт не заработает from werkzeug.debug import DebuggedApplication # Опционально: подключение модуля отладки application.wsgi_app = DebuggedApplication(application.wsgi_app, True) # Опционально: включение модуля отадки application.debug = False # Опционально: True/False устанавливается по необходимости в отладке

Отредактируйте второй .htaccess файл - тот, который в public_html

Нужно убедиться, что PassengerEnabled off

vi public_html/.htaccess

PassengerEnabled off

Теперь нужно роутинга директорий на Apache Virtual Host добавить:

Alias /flaskapi /home/user/user/domainname.ru/flaskapi

На это действие у вас недостаточно прав - поэтому нужно попросить это сделать техническую поддержку

Если Вы ещё не определилсь с выбором хостинга советую прочитать мою статью

«Какой хостинг выбрать»

Похожие статьи
Flask
Основы
Python
Запуск Flask на хостинге
Запуск Flask на Linux сервере
Flask в Docker
Первый проект на Flask
Шаблоны Jinja
Web Forms
Blueprint - Чертежи Flask
Как разбить приложение Flask на части
Flask FAQ
Ошибки
Декораторы в Python
HTML
CSS