Как установить WEB-приложение Flask на хостинг Timeweb

Изучая разработку WEB-приложений рано или поздно возникает желание разместить свой сайт в сети Интернет, чтобы показать его кому-то или протестировать в реальной среде. Для подобных целей существует множество хостингов с разными тарифами и возможностями по производительности. Далее я опишу как установить WEB-приложение Flask на хостинг Timeweb.

Любому сайту или WEB-приложению для размещения в сети нужно иметь доменное имя. Домены 2 уровня нужно регистрировать. Услуга платная. Её оказывают многие ресурсы. Практически на любом хостинге есть ссылка на один или несколько подобных ресурсов. Ну и конечно нужно выбрать подходящий для Ваших потребностей хостинг, зарегистрироваться на нём и выбрать там подходящий Вам тариф. Можно воспользоваться бесплатным периодом при наличии для тестирования качества услуг хостинга. Я оплатил тариф Оптима+ на хостинге Timeweb на год с возможностью размещения 10-ти сайтов и получил в подарок бесплатную регистрацию домена 2 уровня. На многих хостингах есть похожие «выгодные» предложения. Этот сайт как раз и расположен на этом хостинге и использует подарочный домен.

Идея статьи родилась в ходе двухдневной «борьбы» с различными ресурсами в процессе развертывания простейшего WEB-приложения на основе фреймворка Flask. Начал с изучения 2 соответствующих разделов документации хостинга. Просмотрел ещё с десяток статей по теме в Интернете. Пока не начал делать на практике было всё просто и понятно. Но у новичка самые простые действия могут вызывать закономерные вопросы: в какой программе что делать, что прописывать в конкретных полях и на какие кнопки нажимать и т.п. Чтобы было легче весь процесс повторить в следующий раз, я и решил подробно его описать в этой статье.

Создание сайта на хостинге

Итак, будем начинать. В консоли управления хостинга нужно создать новый сайт. Для этого кликаем вверху консоли на большую кнопку «Создать сайт» и затем на «Создать новый сайт». В открывшейся панели, смотри рис. 1, выбираем «Создать новую директорию».

Выбор создания новой директории
рис. 1 Выбор «Создать новую директорию»

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

Задать имя директории
рис. 2 Задать имя директории и комментарий.

Теперь нужно привязать имеющийся домен к созданному сайту или создать и привязать свой поддомен (бесплатный домен 3 уровня). Для этого заходим слева в консоли в раздел «Домены» -> «Мои домены» и справа напротив нужного Вам домена нажимаем на » + «, смотри рис. 3.

Панель доменов
рис. 3 Добавление поддомена

В открывшемся окне «Добавление поддомена» вводим нужное Вам имя поддомена и выбираем директорию, к которой его нужно привязать, смотри рис. 4.

Добавление поддомена
рис. 4 Добавление поддомена

Если у Вас уже имелось доменное имя, то его можно привязать к только что созданному сайту, кликнув на «Привязать домен» в строке нового сайта в открывшемся окне, смотри рис. 5.

Привязка домена к сайту
рис. 5 Привязка домена к сайту

Нажимая стрелочку справа можно выбрать доменное имя из списка, если у Вас непривязанных доменов несколько. Можно поменять домен если сначала отвязать текущий домен, кликнув на соответствующую надпись в конце строки о сайте, а затем привязать нужный другой домен.

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

Выбор ftp файл-менеджера

Из-за того, что мой старенький ноутбук как-то неадекватно взаимодействует с консолью управления хостинга Timeweb, появилась необходимость использовать ftp файл-менеджер для перемещения файлов с/на хостинг. Чтобы вводить управляющие команды нужен был также терминал. В качестве ftp файл-менеджера был выбран FileZilla, клиент которого я скачал с его домашней страницы. В качестве терминала я использовал ранее установленный Windows PowerShell. Для работы в этих программах нужно установить удалённое соединение по SSH, которое в консоли Timeweb нужно не забыть разрешить. Этот переключатель расположен внизу экрана консоли и её нужно прокрутить вниз, смотри рис. 6.

окно Внизу консоли Timeweb

рис. 6 Внизу консоли Timeweb

Запускаем FileZilla и начинаем устанавливать соединение с удаленным сервером. Для этого нужно заполнить поля в верхней части программы соответствующими данными из консоли Timeweb, смотри рис. 7.

Параметры для установки соединения с удалённым сервером
рис. 7 Параметры для установки соединения с удалённым сервером

Используя кнопку для копирования данных в консоли заполняем поля «Хост» и «Имя пользователя» данными из консоли (хост или ip-адрес для <Хост>, логин для <Имя пользователя>). Пароль тот же самый, который вы используете при входе в консоль Timeweb. Порт — < 22 > или можно не указывать. Установив все параметры нажимаем кнопку <Быстрое соединение> и в правой половине окна программы открывается структура каталогов Вашего сервера. Сверху отображается информация о пользователе и хосте для которого установлено соединение программой. Все данные нужно вводить очень внимательно. Любое несовпадение букв или цифр не позволит создать соединение. Если всё получилось успешно, то в правой половине окна Вы увидите структуру каталогов и файлов Вашего сайта, аналогичную рис. 8.

Структура каталогов сайта
рис. 8 Структура каталогов сайта

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

Размещение одностраничного сайта на хостинге

Например, у Вас на компьютере есть файлы сверстанного одностраничного сайта в каком-то каталоге. После одного из интенсивов, проводимых онлайн школой METHED, у меня был готовый сайт по расчёту налогов. Каталог сайта состоял из файла index.html и трех подкаталогов с файлами .css, .js и шрифтов. Содержимое этого каталога я просто скопировал на хостинг в подкаталог public_html моего только что созданного файла proba, смотри рис. 9.

Копируем каталог с сайтом
рис. 9 Копируем каталог с сайтом

В результате я разместил мой сайт на хостинге. Если теперь в браузере перейти по адресу proba.taaprograms.ru, то я попадаю на только размещённый в Интернете сайт, смотри рис. 10.

Мой размещённый в Интернете сайт
рис. 10 Мой размещённый в Интернете сайт

Начало работы в терминале

Чтобы развернуть WEB приложение Flask на хостинг Timeweb, нужно ввести в терминале ряд команд по установке виртуального окружения и программных модулей. Как я писал ранее, в качестве терминала будем использовать уже установленный Windows PowerShell. Также в начале работы нужно установить удалённое соединение с нашим сервером на хостинге. Для этого запускаем терминал и вводим следующюю команду:

ssh cs60000@000.000.000.245

Вместо нулей Вы пишите свои данные с хостинга < логин@ip >. Далее терминал запросит пароль. Пароль тот же, что и для входа на хостинг. Вы вводите его «вслепую» — будьте внимательны. Если всё вбито правильно, то Вы попадаете в корневой каталог Вашего аккаунта на хостинге Timeweb. Терминал покажет подкаталоги по команде ls, подкаталоги и файлы — » ls -a «. Перейти в другой каталог можно командой » cd name_dir «. Создать новый каталог можно командой » mkdir new_name «. И т.д. В приглашении для ввода команд указывается Ваш логин/хост/текущий каталог. Синее на синем видно плохо к сожалению. У Вас должен получиться диалог с терминалом, аналогичный рис. 11.

Начало работы в терминале
рис. 11 Начало работы в терминале

Установка окружения

Виртуальное окружение нужно устанавливать в папке public_html Вашего сайта, если нужно чтобы оно распространялось только на этот сайт. Командами cd перейдём в требуемый подкаталог, смотри рис. 11. Далее действуем по инструкции из раздела по установке виртуального окружения хостинга. Скачиваем zip архив с нужной версией. В моем случае команда для Python 3.6:

wget https://bootstrap.pypa.io/virtualenv/3.6/virtualenv.pyz

Далее создаём виртуальное окружение, используя нужную версию Python в подкаталоге » venv «. Например:

# Для Python 3:
python3 virtualenv.pyz venv

Активируем виртуальное окружение (вместо u и user укажите первую букву логина и сам логин):

source /home/u/user/директория_сайта/public_html/venv/bin/activate
# или в моём случае
source /home/c/cs60000/proba/public_html/venv/bin/activate

Отключить виртуальное окружение можно аналогичной командой deactivate. Теперь можно с помощью утилиты PIP устанавливать требуемые программные пакеты для Python.

Развертывание WEB-приложения Flask на хостинг Timeweb

Наконец-то всё готово для установки мини фреймворка Flask и развёртывания простейшего WEB-приложения Flask на хостинг Timeweb. Используем соответствующий раздел документации хостинга. Ранее мы установили и активировали виртуальное окружение для нашего сайта. Установим фреймворк Flask командой в терминале:

pip install flask

Далее для нашего самого простого случая нужно создать и поместить в каталог public_html два файла: .htaccess и index.wsgi. Это можно сделать в терминале или в ftp-менеджере, а можно в блокноте или любом другом редакторе создать и заполнить содержимым на Вашем локальном компьютере. Потом нужно только их перенести в каталог public_html в ftp-менеджере. Файл .htaccess содержит следующий код:

Options +ExecCGI
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L]

Файл index.wsgi должен содержать следующий код:

import os
import sys
sys.path.append('/home/c/cs60000/proba/public_html/venv/lib/python3.6/site-packages/')
from flask import Flask
app = Flask(__name__)
application = app
@app.route('/')
def hello_world():
    return 'Hello, World from Flask !!!'
if __name__ == '__main__':
    app.run()

Не забудьте откорректировать строку системного пути Вашими логином и именем каталога сайта. В терминале добавьте файлу index.wsgi права на исполнение командой:

chmod 755 index.wsgi

Если теперь в браузере перейти по адресу proba.taaprograms.ru, то можно увидеть написанную нами приветственную строку «Hello …», смотри рис. 12 (правда картинка с моего другого тестового сайта, но сути это не меняет).

На этом всё. Развертывание на других хостингах, судя по статьям в Интернете, происходит аналогично. Надеюсь, что эта статья поможет новичкам сэкономить время и не наступать на самые простые «грабли».

Обновлено: 01.05.2023 — 11:11

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

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