Урок 31

Публикация блога в интернете

30 мин

Пора показать миру!

Ваш блог работает локально — отлично! Теперь опубликуем его в интернете, чтобы любой мог посмотреть.

Варианты хостинга

Shared Hosting (виртуальный хостинг)

Самый простой вариант для начинающих. Подходит для небольших проектов.

  • Плюсы: Дёшево (~100-500₽/мес), не нужно настраивать сервер
  • Минусы: Ограниченные возможности, медленнее VPS
  • Примеры: Beget, Timeweb, SprintHost, REG.RU

VPS (виртуальный сервер)

Для более серьёзных проектов.

  • Плюсы: Полный контроль, можно настроить под себя
  • Минусы: Нужно уметь администрировать Linux
  • Примеры: DigitalOcean, Linode, Hetzner, Selectel

PaaS (платформа как сервис)

Облачные платформы с автоматическим деплоем.

  • Плюсы: Удобно, автоматический деплой из Git
  • Минусы: Дороже, привязка к платформе
  • Примеры: Railway, Render, Platform.sh
Рекомендация для начинающих: Начните с shared-хостинга (например, Beget или Timeweb). Это дёшево и просто.

Подготовка проекта к деплою

1. Структура файлов

На shared-хостинге публичная папка называется public_html (или www). Загрузите туда содержимое папки public/.

Локально:                    На хостинге:
my-blog/                     /home/user/
├── public/                  ├── public_html/     ← содержимое public/
│   ├── index.php                ├── index.php
│   ├── includes/                ├── includes/
│   └── ...                      └── ...
└── vendor/                  └── vendor/          ← вне public_html!

2. Настройки базы данных

Создайте на хостинге базу данных через панель управления (cPanel, ISPmanager и т.д.).

Обновите config.php с новыми данными:

<?php
// Конфигурация для продакшена
$db_host = "localhost";           // Обычно localhost на shared-хостинге
$db_name = "user123_blog";        // Имя базы от хостера
$db_user = "user123_blog";        // Пользователь от хостера
$db_pass = "сложный_пароль";      // Пароль от хостера

try {
    $pdo = new PDO(
        "mysql:host=$db_host;dbname=$db_name;charset=utf8mb4",
        $db_user,
        $db_pass,
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
} catch (PDOException $e) {
    die("Ошибка подключения к базе данных");
}
?>

3. Импорт базы данных

Экспортируйте локальную базу через phpMyAdmin:

  1. Откройте phpMyAdmin локально
  2. Выберите базу данных
  3. Вкладка "Экспорт" → "Выполнить"
  4. Скачается файл .sql

Импортируйте на хостинге:

  1. Откройте phpMyAdmin на хостинге
  2. Выберите созданную базу
  3. Вкладка "Импорт" → Выберите файл → "Выполнить"

Пошаговый деплой на Beget

Шаг 1: Регистрация

  1. Зарегистрируйтесь на beget.com
  2. Выберите тариф (есть бесплатный тестовый период)
  3. Получите доступ к панели управления

Шаг 2: Создание базы данных

  1. В панели перейдите в "MySQL"
  2. Нажмите "Добавить базу данных"
  3. Запишите имя базы, пользователя и пароль

Шаг 3: Загрузка файлов

Есть два способа:

Способ А: Через FTP

  1. Скачайте FTP-клиент (FileZilla)
  2. Подключитесь к хостингу (данные в панели)
  3. Загрузите файлы в public_html

Способ Б: Через Git (рекомендуется)

  1. Загрузите проект на GitHub
  2. На хостинге подключитесь по SSH
  3. Выполните: git clone https://github.com/вы/блог.git

Шаг 4: Импорт базы данных

  1. В панели перейдите в "phpMyAdmin"
  2. Выберите созданную базу
  3. Импортируйте SQL-файл

Шаг 5: Настройка конфига

Обновите includes/config.php с данными хостинга.

Шаг 6: Проверка

Откройте ваш сайт по адресу от хостера (или привяжите домен).

Использование .env файла

Хорошая практика — хранить пароли в .env файле:

# .env (НЕ коммитить в Git!)
DB_HOST=localhost
DB_NAME=user123_blog
DB_USER=user123_blog
DB_PASS=сложный_пароль
<?php
// config.php
require_once __DIR__ . "/../../vendor/autoload.php";

use Dotenv\Dotenv;

$dotenv = Dotenv::createImmutable(__DIR__ . "/../../");
$dotenv->load();

$pdo = new PDO(
    "mysql:host=" . $_ENV["DB_HOST"] . ";dbname=" . $_ENV["DB_NAME"] . ";charset=utf8mb4",
    $_ENV["DB_USER"],
    $_ENV["DB_PASS"]
);
?>

Чек-лист перед деплоем

Пункт Готово?
Убраны отладочные var_dump() и echo
Отключен вывод ошибок (display_errors = Off)
Настроено логирование ошибок в файл
Пароли не хардкожены (используется .env)
.env добавлен в .gitignore
База данных создана и импортирована
Права на папки правильные (755 для папок, 644 для файлов)

Привязка домена

  1. Купите домен (например, на REG.RU или Beget)
  2. В настройках домена укажите DNS-серверы хостинга
  3. В панели хостинга привяжите домен к папке сайта
  4. Подождите 24-48 часов (обновление DNS)

SSL-сертификат (HTTPS)

Обязательно установите бесплатный SSL-сертификат Let's Encrypt:

  1. В панели хостинга найдите раздел "SSL"
  2. Выберите "Let's Encrypt"
  3. Нажмите "Установить"

Теперь сайт доступен по https://

Поздравляем!
Ваш блог теперь доступен в интернете!

Мы используем файлы cookie для улучшения работы сайта и персонализации контента. Продолжая использовать сайт, вы соглашаетесь с использованием cookies в соответствии с нашей Политикой конфиденциальности.