flask Лекция

Урок 10: Деплой приложения и выход в интернет

Введение в Web-разработку на Flask: Урок 10

Финал: Выход в открытый космос

Поздравляю! Мы прошли огромный путь. Мы начали с пустого экрана и строчки “Hello World”. Сейчас у нас есть полноценный блог с базой данных, красивым дизайном и защищенным входом.

Но есть одна проблема: Ваш сайт виден только вам. Адрес 127.0.0.1 (Localhost) — это адрес “внутри” вашего компьютера. Если вы скинете ссылку другу, у него она не откроется.

Цель урока

Опубликовать сайт в Интернете, чтобы он был доступен всему миру 24/7.


Часть 1: Подготовка к переезду (Error Pages)

Перед тем как звать гостей, нужно прибраться. Если пользователь введет неправильный адрес (например, /abracadabra), Flask покажет скучную черно-белую ошибку “Not Found”. Мы сделаем красивые страницы ошибок.

В коде (app.py):

@app.errorhandler(404)
def page_not_found(e):
    # Возвращаем наш красивый шаблон 404.html
    return render_template('404.html'), 404

Теперь, если кто-то заблудится на вашем сайте, он увидит дружелюбное сообщение и кнопку “Вернуться домой”.


Часть 2: Проблема путей (Absolute Path)

Частая ошибка при деплое

Это самая частая причина поломки при переезде на сервер. На вашем компьютере база данных blog.db лежит рядом с app.py, и Flask её находит. На сервере запуск может происходить из другой папки, и Flask “потеряет” базу данных.

Решение: Использовать Абсолютные пути. Мы просим Python вычислить точный адрес папки на жестком диске:

import os
# Узнаем, где лежит этот файл (app.py)
basedir = os.path.abspath(os.path.dirname(__file__))

# Собираем полный путь к базе данных
app.config['SQLALCHEMY_DATABASE_URI'] = \
    'sqlite:///' + os.path.join(basedir, 'instance', 'blog.db')

Часть 3: Что такое Хостинг?

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

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

Мы будем использовать PythonAnywhere.

  • Это специализированный хостинг для Python.
  • У него есть бесплатный тариф.
  • Он дает вам консоль (терминал) прямо в браузере.
  • Ваш сайт получит адрес вида: ваш_логин.pythonanywhere.com.

Часть 4: Список покупок (Requirements)

Сервер — это чистый компьютер. На нем нет ни Flask, ни SQLAlchemy, ни других библиотек. Мы должны сказать серверу, что нужно установить.

Для этого создается файл requirements.txt. В нем просто перечислены названия библиотек:

flask
flask-sqlalchemy
flask-login

Мы создаем его командой pip freeze > requirements.txt и загружаем вместе с проектом.


Часть 5: Магия WSGI

Схема архитектуры WSGI: интерфейс между веб-сервером (Nginx) и веб-приложением на Python (Flask)

Когда вы запускаете сайт дома, вы нажимаете Run и Flask сам создает маленький веб-сервер. В интернете всё серьезнее. Там работают мощные веб-серверы (например, Nginx). Они не умеют общаться с Python напрямую.

Им нужен посредник — WSGI (Web Server Gateway Interface). На PythonAnywhere нам нужно будет настроить WSGI-файл. Это “переходник”, который говорит серверу: “Эй, если придет запрос, передай его в переменную app внутри файла app.py.


Часть 6: Процесс Деплоя (Пошагово)

Вот что мы сделаем сегодня:


Итоги курса

Мы прошли путь от новичка до разработчика.

Чему мы научились:

  1. HTTP: Как работает интернет (Запросы и Ответы).
  2. Flask: Как создавать маршруты и управлять сервером.
  3. HTML/CSS: Как верстать шаблоны и использовать Bootstrap.
  4. SQLAlchemy: Как работать с базами данных.
  5. Auth: Как защищать сайт паролем.
  6. Deploy: Как публиковать проекты в сети.

Что дальше?

Этот сайт — ваше Портфолио. Скиньте ссылку друзьям, родителям или приложите к резюме. Вы создали настоящий, работающий продукт. Поздравляю!


Проверь себя!

Зачем мы переводим пути к файлам базы данных из относительных в абсолютные с помощью библиотеки 'os' перед деплоем на сервер?

Какую роль выполняет WSGI (Web Server Gateway Interface) на боевом сервере?