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
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Хотите поддержать сайт материально
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......