Раздел помощи SpaceWeb

Установка Flask на виртуальном хостинге

23 окт, 2023

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

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

Перед установкой необходимо выполнить несколько подготовительных шагов:

  1. Создаем файл профиля в корне аккаунта и прописываем туда путь до локальной директории каталога, в которой будут находится файлы виртуального окружения и необходимые библиотеки Flask:
username@vh200 ~ $ nano ~/.profile

  1. Добавляем в созданный файл строку:

export PATH=$HOME/.local/bin:$PATH

  1. После этого нужно разлогиниться и снова подключиться к серверу.
  2. Теперь скачиваем утилиту get-pip:

username@vh200 ~ $ wget https://bootstrap.pypa.io/get-pip.py

  1. Устанавливаем утилиту get-pip:

username@vh200 ~ $ python3.8 get-pip.py

  1. Устанавливаем virtualenv:

username@vh200 ~ $ pip3.8 install virtualenv

Установка фреймворка

  1. Для установки необходимо воспользоваться утилитой virtualenv. Создать и активировать виртуальное окружение для Flask можно в каталоге ".flaskvenv":
username@vh200 ~ $ virtualenv .flaskvenv
username@vh200 ~ $ source .flaskvenv/bin/activate
  1. Далее необходимо установить требуемую версию фреймворка в виртуальном окружении:
username@vh200 ~ $ pip install flask
  1. В следующем шаге необходимо перейти в каталог сайта, где будет расположен сам проект. В качестве примера выбран каталог "~/site1" на который направлен домен:
username@vh200 ~ $ cd ~/site1/public_html
  1. Далее потребуется создать файл app.py, в котором будет описана логика приложения. В файл потребуется добавить следующее содержимое:
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
   return "<h1>Приложение Flask в Spaceweb!</h1>"

if __name__ == "__main__":
   app.run(host='0.0.0.0')
  1. Следующим шагом потребуется создать файл wsgi.py, и добавить в него следующее:
# -*- coding: utf-8 -*-
import os,sys

#путь к проекту
sys.path.append('/home/u/username/site1/public_html')
#путь к фреймворку
sys.path.append('/home/u/username/site1')
#путь к виртуальному окружению
sys.path.append('/home/u/username/.flaskvenv/lib/python3.8/site-packages/')
#исключить системную директорию
sys.path.remove('/usr/lib/python3.8/site-packages')

from app import app
application = app
  1. Также потребуется создать в корне проекта файл .htaccess и добавить в него:
AddDefaultCharset utf-8
AddHandler wsgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ wsgi.py/$1 [QSA,L]

    Для того чтобы изменения вступили в силу, необходимо выполнять перезапуск Flask. Для этого нужно перейти в Панель управления аккаунта, в раздел Хостинг->Сайты нажать на нужный сайт, в колонке Конфигурация нажать на ссылку Настройки и далее выбрать текущую версию бэкэнда "Apache 2.4 + PHP 8 opcache + mod_wsgi python3.8 (Актуальная версия)" и нажать на кнопку сохранить. В этом случае Flask будет перезапущен и изменения будут приняты системой.

   При использования бэкэнда Apache 2.2 + mod_passenger + mod_wsgi, стоить обратить внимание, что в этом случае Модуль mod_wsgi использует по умолчанию python 2.7 и новые версии Flask будут работать с ошибками.