Manuals
RU EN

Сервер · 27

Виртуальный хост *.loc на Windows

Сервер 5 мин чтения

Виртуальный хост *.loc нужен, чтобы скрипт открывался как нормальный сайт: http://project.loc, а не http://localhost/project. Во втором варианте ломаются абсолютные пути, редиректы и иногда авторизация. На Денвере это решали Z-диском и ручными алиасами; в MicroServer проще.

Правило: имя папки в www = имя хоста. Отдельный кусок Apache-конфига на каждый учебный проект писать не нужно.

Быстрый путь

  1. Создайте папку project.loc в каталоге www MicroServer (часто D:\MicroServer\www).
  2. Положите туда файлы скрипта: index.php в корне папки.
  3. Дождитесь синхронизации hosts / перезапуска сервера, если у вас так принято в панели.
  4. Откройте http://project.loc. При включённом SSL — https.

Обзор стека: локальный сервер. Если пришли из поиска про Денвер — Денвер PHP 8.

Почему не localhost/папка

Многие скрипты считают корень сайта за document root хоста. При работе из подкаталога CSS и ajax уезжают не туда, в админке «битые» ссылки. Чинить это константами — хуже, чем сразу поднять нормальный vhost.

Cookie для localhost и для project.loc ведут себя по-разному. Отладка авторизации на фиктивном домене ближе к проду.

Файл hosts

MicroServer дописывает соответствия в системный hosts. Если хост не открывается:

  • сервер не запущен;
  • запись в hosts не появилась — права администратора, антивирус;
  • DNS-кэш Windows ещё держит старое — ipconfig /flushdns;
  • браузер с «безопасным DNS» игнорирует hosts — временно отключите.

Ручная строка вида 127.0.0.1 project.loc допустима для проверки, но лучше не плодить дубли с тем, что пишет сервер.

Вложенные папки при распаковке

Архив часто внутри себя содержит каталог с тем же именем. Распаковали и получили project.loc/project/index.php. В браузере — не то. Поднимите содержимое на уровень хоста. Это же грабель при установке: установка.

HTTPS для *.loc

Локальный CA выпускает сертификаты на ваши хосты. Браузер должен доверять корню. Без этого будет предупреждение — для отладки cookie Secure всё равно лучше настроить доверие. Инструкция: HTTPS локально.

Несколько проектов

Каждый скрипт — своя папка и своя база. Не ставьте два установщика в один host «временно». Дампы и конфиги перепутаются. Базы: phpMyAdmin.

Суффикс .loc — локальное соглашение контура. В интернет такой домен не делегируем. На бою будет обычный .ru/.com; перенос — сюда.

Если привыкли к ручному Apache

Можно писать VirtualHost руками и в других стеках (OpenServer, XAMPP). Схема та же: ServerName, DocumentRoot, доступ к PHP. В MicroServer этот слой уже автоматизирован — не дублируйте конфиги в обход, потом непонятно, кто победил.

На Linux VDS виртуальные хосты настраиваются иначе — через Nginx/Apache на сервере: Nginx + PHP-FPM, выбор машины — VDS.

Диагностика

  • Открывается другой сайт — перепутали папку или кэш DNS.
  • 403/404 — нет index в корне или document root не тот.
  • 500 — лог PHP: ошибка 500.
  • Connection refused к MySQL — сервер/БД не запущены: ошибка базы.

Composer, если нужен проекту: Composer на Windows.

Имя хоста: мелочи, которые ломают день

Пробел в имени папки, кириллица, заглавные буквы вперемешку — плохая идея. Берите латиницу, нижний регистр, суффикс .loc. Board.Loc и board.loc на Windows FS могут слиться, а в браузере и cookies вести себя раздражающе.

Не используйте реальные чужие домены в hosts для «удобства». Завтра забудете строку и будете удивляться, почему example.com открывается в ваш локальный магазин.

Подпапки и роутинг скрипта

Если скрипт всё же лежит в project.loc/public, document root должен указывать на public — в MicroServer для простых случаев проще держать index в корне хоста, как задумано поставкой. Иначе придётся ручным vhost, а смысл «папка = хост» теряется.

ЧПУ обычно завязаны на корень хоста. При установке в подкаталог /shop/ на боевом домене читайте readme — не все продукты это поддерживают из коробки. Локально лучше сразу корень: установка.

Несколько версий одного проекта

board.loc — текущая работа, board-old.loc — копия «как было до обновления». Разные папки, разные базы. Обновили код на board.loc и сломали — сравнили с old. Это дешевле, чем вспоминать, что было вчера. Бэкап перед апдейтом всё равно нужен: бэкап.

HTTPS на конкретном хосте

Не все локальные хосты обязаны сидеть на 443. Включите SSL там, где отлаживаете кабинет и cookie. Инструкция: локальный HTTPS. Для простого просмотра вёрстки хватит http.

Hosts и корпоративный DNS

В корпоративной сети DNS может перехватывать запросы и игнорировать ваш hosts для некоторых зон. Если ping project.loc уходит не на 127.0.0.1 — проблема не в MicroServer. Временно проверьте с другой сети или задайте вопрос своему IT.

ping может показывать IPv6 ::1 — это нормально, если сервер слушает и на IPv6. Если нет — отключите IPv6 в браузере для теста или поправьте слушатели стека.

Связка с базой и переносом

Хост сайта и хост MySQL — разные вещи. Сайт project.loc, MySQL всегда 127.0.0.1 на локалке. Путать их в форме установщика не нужно. База: phpMyAdmin. Требования: PHP/MySQL.

Когда локальный хост обкатан — перенос на домен .ru: перенос. На проде виртуальный хост настраивает панель или Nginx: Nginx + PHP-FPM, не папка *.loc.

Полезный приём: заведите project-stg.loc как копию перед опасным обновлением шаблонов. Скопировали папку, склонировали базу через экспорт/импорт, в конфиге копии другие доступы к БД. Сломали staging — прод-локалка жива. Это не git, но для одиночной разработки на Windows работает годами. Только не держите в hosts десятки мёртвых имён без папок: путаница гарантирована. База для копии: phpMyAdmin, бэкап перед копированием: бэкап. Если копируете и ловите 500 на копии — чаще забыли поменять имя БД в конфиге: ошибка базы. Обзор стека: MicroServer. HTTPS на хосте: локальный HTTPS. Установка скрипта в корень хоста: установка. Если открывается листинг вместо сайта — нет index.php в корне папки хоста.

Частые вопросы

Как создать виртуальный хост loc windows?

В MicroServer имя папки становится хостом. Отдельный vhost руками не пишут.

Сколько времени занимает «Виртуальный хост *.loc на Windows»?

Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.

Нужен ли отдельный сервер?

Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.

Openserver альтернатива php 8?

Разбор рядом в мануале по этому запросу. openserver альтернатива php 8

Локальный сервер windows php 8 mysql?

Разбор рядом в мануале по этому запросу. локальный сервер windows php 8 mysql

Раздел
Денвер и локальный сервер

Локальный стек Windows для отладки скриптов до выкладки на VDS.