Введение в 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

Когда вы запускаете сайт дома, вы нажимаете Run и Flask сам создает маленький веб-сервер. В интернете всё серьезнее. Там работают мощные веб-серверы (например, Nginx). Они не умеют общаться с Python напрямую.
Им нужен посредник — WSGI (Web Server Gateway Interface). На PythonAnywhere нам нужно будет настроить WSGI-файл. Это “переходник”, который говорит серверу: “Эй, если придет запрос, передай его в переменную app внутри файла app.py”.
Часть 6: Процесс Деплоя (Пошагово)
Вот что мы сделаем сегодня:
Итоги курса
Мы прошли путь от новичка до разработчика.
Чему мы научились:
- HTTP: Как работает интернет (Запросы и Ответы).
- Flask: Как создавать маршруты и управлять сервером.
- HTML/CSS: Как верстать шаблоны и использовать Bootstrap.
- SQLAlchemy: Как работать с базами данных.
- Auth: Как защищать сайт паролем.
- Deploy: Как публиковать проекты в сети.
Что дальше?
Этот сайт — ваше Портфолио. Скиньте ссылку друзьям, родителям или приложите к резюме. Вы создали настоящий, работающий продукт. Поздравляю!