Пошаговые руководства по запуску проектов
От первого файла до работающего приложения. Выберите задачу, выполните шаги и проверьте результат. Примеры рассчитаны на начинающих; команды выполняются на вашем компьютере или сервере, а не на Hosting Helper.
Бесплатные лимиты, интерфейсы и тарифы платформ меняются. Перед публикацией проверьте актуальные условия на официальных сайтах. Никогда не публикуйте токены и пароли в GitHub.
1. Статический сайт или лендинг — GitHub Pages / Cloudflare Pages
- Создайте папку проекта и файл
index.html. - Добавьте базовую разметку и проверьте файл в браузере.
- Создайте репозиторий на GitHub и загрузите
index.htmlв корень. - Для GitHub Pages: откройте Settings → Pages → Deploy from a branch →
main/root→ Save. Для Cloudflare Pages: подключите GitHub-репозиторий, выберите статический проект и каталог публикации, содержащийindex.html. - Дождитесь публикации, откройте адрес и проверьте страницы на телефоне.
- Добавьте заголовки, описания, навигацию,
robots.txtиsitemap.xmlпри необходимости.
<!doctype html> <html lang="ru"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Мой сайт</title> <h1>Привет!</h1> <p>Сайт работает.</p> </html>
Проверка: адрес открывается без авторизации, а при обновлении страницы показывается новая версия. Подробнее о сайте для бизнеса.
2. Telegram-бот на Python
- В Telegram откройте официального BotFather, отправьте
/newbotи получите токен. Сохраните его как секрет. - Установите Python 3.11+ и создайте виртуальное окружение:
python -m venv .venv. - Активируйте окружение и установите библиотеку:
pip install python-telegram-bot. - Создайте
bot.pyпо примеру ниже, задайте переменную окруженияBOT_TOKENи запуститеpython bot.py. - Откройте своего бота, отправьте
/start. Для круглосуточной работы выберите платформу с постоянным процессом либо перепишите бота под webhook.
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Бот работает!")
app = Application.builder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()Проверка: бот отвечает на /start. Не запускайте polling и webhook одновременно для одного токена. Как выбрать размещение.
3. Python API или веб-приложение
- Создайте папку и виртуальное окружение.
- Установите
pip install fastapi uvicorn. - Создайте
main.pyс примером ниже. - Запустите локально
uvicorn main:app --reloadи откройтеhttp://127.0.0.1:8000/docs. - Для публикации выберите платформу с поддержкой Python ASGI либо VPS; настройте команду запуска
uvicorn main:app --host 0.0.0.0 --port 8000(порт должен соответствовать настройкам платформы). - Включите HTTPS на внешнем прокси, храните секреты в переменных окружения, добавьте журналы и проверку работоспособности.
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health():
return {"status": "ok"}Проверка: запрос /health возвращает JSON со статусом ok. Встроенный сервер разработки не предназначен для публичного продакшена.
4. Фоновый Python-скрипт по расписанию
- Напишите скрипт, который можно запускать повторно без дублирования результатов.
- Храните ключи в секретах платформы; добавьте обработку ошибок и логирование.
- Для небольших периодических задач рассмотрите GitHub Actions с расписанием; учтите, что запуски по cron могут задерживаться, а доступные лимиты зависят от репозитория и тарифа.
- Создайте файл
.github/workflows/job.yml:
name: Scheduled job
on:
workflow_dispatch:
schedule:
- cron: "17 7 * * *"
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: python job.pyПроверка: сначала запустите workflow вручную и посмотрите журнал. Для строго гарантированного времени запуска или непрерывной обработки используйте другой способ размещения.
5. WordPress или другой сайт на CMS
- Выберите хостинг с поддержкой PHP и MySQL/MariaDB либо управляемый WordPress-хостинг.
- Подключите домен, включите HTTPS и создайте базу данных через панель хостинга.
- Установите WordPress штатным установщиком провайдера или по официальной инструкции.
- Настройте администратора с надёжным паролем и двухфакторной защитой, если доступна.
- Выберите тему, создайте страницы, настройте резервные копии и обновления.
- Проверьте восстановление из резервной копии на тестовом окружении.
Проверка: сайт доступен по HTTPS, панель администратора работает, резервная копия создаётся и восстанавливается.
6. VPS: запуск собственного сервера
- Оцените ресурсы, затем сравните предложения и посчитайте годовую стоимость.
- Создайте VPS с поддерживаемой версией Ubuntu LTS, добавьте SSH-ключ при создании.
- Подключитесь по SSH с компьютера:
ssh user@SERVER_IP(пользователь зависит от образа провайдера). - Обновите систему:
sudo apt update && sudo apt upgrade -y. - Создайте отдельного пользователя для приложения, ограничьте SSH-доступ, настройте межсетевой экран и разрешите только нужные порты. Не отключайте парольный вход до проверки доступа по ключу.
- Разместите приложение, создайте службу
systemdдля фонового процесса или используйте контейнеры; настройте автозапуск. - Для веб-приложения настройте обратный прокси, домен и HTTPS. Добавьте мониторинг, автоматические обновления безопасности и резервные копии вне VPS.
Проверка: приложение работает после перезагрузки, SSH доступен только авторизованным пользователям, восстановление из резервной копии проверено. Подробности выбора VPS.
7. Приложение с базой данных
- Определите тип данных, предполагаемый объём, требования к доступности и резервному копированию.
- Для первого прототипа рассмотрите управляемую базу данных, чтобы не обслуживать её самостоятельно; проверьте бесплатные лимиты.
- Создайте базу, отдельного пользователя приложения с минимально необходимыми правами и строку подключения в секретах окружения.
- Создайте таблицы через миграции; не храните пароли в коде и не открывайте порт базы в интернет без необходимости.
- Подключите приложение, выполните тестовую запись и чтение, настройте регулярные резервные копии.
- Проверьте восстановление данных и поведение приложения при недоступности базы.
Проверка: данные сохраняются между перезапусками, доступ ограничен, восстановление работает.
8. Cloudflare Pages: публикация из GitHub
- Создайте репозиторий с
index.htmlв корне. - Откройте Cloudflare → Workers & Pages → Create → Pages → подключение GitHub.
- Выберите репозиторий и ветку
main. - Для обычного HTML-сайта не задавайте команду сборки, если она не нужна; каталог публикации должен указывать на папку с
index.html. - Запустите развёртывание и откройте выданный адрес
pages.dev. - Измените текст в GitHub и убедитесь, что после новой сборки изменения появились на сайте.
Если 404: проверьте каталог публикации и наличие index.html именно в нём. Если старая версия: проверьте статус последнего deployment и кэш браузера. Если сборка падает: проверьте логи и уберите команду сборки, не нужную для статического HTML.
9. GitHub Pages: бесплатный сайт без сервера
- Загрузите
index.htmlв репозиторий GitHub. - В Settings → Pages выберите Deploy from a branch.
- Укажите ветку
mainи папку/(root)(или/docs, если файлы там). - Сохраните настройки и дождитесь публикации.
- Проверьте URL в разделе Pages и ссылки между страницами.
Если сайт не открывается: проверьте статус публикации и настройки репозитория. Если стили или ссылки сломаны: для project site используйте относительные пути с учётом имени репозитория, а не абсолютные ссылки от корня домена.
10. Частые ошибки при запуске Telegram-бота и Python
- Бот не отвечает: убедитесь, что процесс запущен, токен задан как
BOT_TOKEN, а команда/startзарегистрирована. Не выводите токен в лог. - Ошибка 401 Unauthorized от Telegram: проверьте токен в переменной окружения; если он раскрыт, перевыпустите через BotFather.
- Conflict при polling: проверьте, не работает ли второй экземпляр бота и не настроен ли webhook для того же токена.
- Приложение засыпает: проверьте лимиты бесплатного плана и поддерживает ли платформа непрерывные процессы.
- ModuleNotFoundError: активируйте нужное виртуальное окружение и установите зависимости именно в него.
- Порт недоступен: проверьте, что веб-приложение слушает
0.0.0.0и порт, предоставленный платформой, а также настройки firewall. - Данные исчезают после перезапуска: не храните важные данные только во временной файловой системе; используйте постоянное хранилище и резервные копии.
При диагностике фиксируйте точный текст ошибки, время и шаг воспроизведения, но удаляйте из логов токены, пароли и персональные данные.
11. Контрольный список перед запуском
- Сайт или API открывается по HTTPS.
- Секреты находятся в переменных окружения, а не в репозитории.
- Приложение перезапускается после сбоя и пишет логи.
- Проверены ограничения тарифа и стоимость продления.
- Для важных данных настроены и проверены резервные копии.
- Есть понятный способ обновления и отката.
Когда проект готов, сравните полную стоимость и поддержите развитие бесплатных инструкций, если они помогли.
Как выбрать подходящее руководство
Начните с интерактивного подбора. Если проект не требует серверного кода — выберите статический сайт. Для webhook и API — Python API или serverless. Для постоянного polling — бот и VPS. Для CMS — WordPress-хостинг. Для важных данных — отдельное внимание базе и резервным копиям.