09. Публикация проекта на хостинге

Что значит «выложить сайт»

Когда вы создаёте проект локально (в XAMPP, OpenServer или Laragon), он работает только на вашем компьютере. Чтобы сайт стал доступен другим пользователям, его нужно разместить на хостинге — сервере, который работает круглосуточно.
Хостинг — это как квартира для вашего сайта. Вы переносите туда все файлы, и любой человек может «зайти в гости» по адресу вашего домена.

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

Существуют десятки хостинг-провайдеров. Для начинающих отлично подойдёт:
  • Airnet — простой интерфейс, доступные цены, есть всё необходимое.

На что обращать внимание при выборе

  • Поддержка PHP 8+ и MySQL.
  • Доступ к phpMyAdmin или к базе через панель управления.
  • Возможность использовать .htaccess и HTTPS.

Регистрация домена

Домен — это адрес вашего сайта (например, mysite.ru). Можно купить домен прямо у хостинг-провайдера, чтобы всё было в одном месте.

Как работает связка домен + хостинг

  • Домен указывает на IP-адрес вашего сервера через DNS-записи.
  • Когда пользователь вводит адрес, браузер обращается к серверу, где лежат ваши файлы.

Подготовка проекта к публикации

Перед загрузкой на сервер убедитесь:
  • Код не содержит абсолютных путей вроде `C:/xampp/htdocs`.
  • Все подключения (картинки, стили, скрипты) прописаны через относительные пути (`/img/logo.png`).
  • Файл конфигурации содержит переменные для подключения к БД.

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

  • Откройте панель хостинга → раздел «Базы данных».
  • Создайте новую базу (например, my_app) и пользователя с паролем.
  • Импортируйте структуру из локального phpMyAdmin (через вкладку «Импорт» → выберите .sql-файл).

Настройка подключения

Обновите данные в файле, где создаётся PDO-соединение:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=my_app;charset=utf8', 'my_user', 'my_password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

Внимание: на хостинге имя базы и пользователя часто совпадает и имеет префикс (например, `u12345_my_app`).

Загрузка файлов на сервер

Есть три основных способа:
  • FTP-клиент (например, FileZilla) — стандартный и удобный способ.
  • Файловый менеджер в панели управления — можно загрузить ZIP-архив и распаковать прямо на сервере.
  • SSH-доступ — для продвинутых пользователей, даёт больше контроля.

Настройка FileZilla

  • Хост: ftp.имяхостинга.ru
  • Пользователь и пароль из панели управления.
  • Порт: 21
После подключения перетащите файлы проекта в папку public_html или www.

Настройка .htaccess

Файл .htaccess позволяет включить ЧПУ-ссылки, защиту и настройки PHP. Пример:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

Полезно добавить


# Отключаем показ ошибок пользователю
php_flag display_errors Off
# Включаем перенаправление на HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Проверка сайта

Теперь откройте свой домен в браузере, например https://вашдомен.ру.

Если что-то не работает:

  • Проверьте правильность подключения к базе данных.
  • Проверьте пути к файлам и регистр букв (на Linux-сервере он чувствителен!).
  • Откройте error_log — там записаны ошибки PHP.

Отображение ошибок (только для теста)

Чтобы временно включить вывод ошибок на сервере:

ini_set('display_errors', 1);
error_reporting(E_ALL);
После тестирования обязательно отключите показ ошибок!

Советы по безопасности

  • Удалите файлы с паролями из общедоступных папок.
  • Не храните дамп базы (.sql) на сервере.
  • Регулярно делайте резервные копии файлов и базы.
  • Используйте HTTPS и сложные пароли к панели и FTP.

Практические задания

  • Создайте тестовый сайт и выложите его на бесплатный хостинг (например, 000webhost).
  • Настройте подключение к базе данных через PDO и убедитесь, что запросы работают.
  • Добавьте .htaccess и сделайте ЧПУ-ссылки (например, /about вместо about.php).

Итоги урока

Теперь вы умеете:
  • Выбирать подходящий хостинг и домен.
  • Создавать базу данных и подключаться к ней на сервере.
  • Загружать файлы и настраивать .htaccess.
  • Отлаживать и защищать сайт после публикации.