Локальный сервер - это веб-сервер, который работает на вашем собственном компьютере и отдаёт сайт по адресу localhost, без хостинга и без интернета. На нём проверяют сайт перед публикацией и спокойно отлаживают код. Создать его в 2026 году можно тремя путями: поставить готовую сборку вроде Open Server Panel или XAMPP, собрать окружение в Docker или, если нужен только просмотр HTML-страниц, запустить встроенный сервер Python или PHP одной командой.
| Чем поднять | ОС | Что внутри | Когда брать | Ограничения |
|---|---|---|---|---|
| Open Server Panel 6 | Windows 10 и новее, 64 бита | на выбор версии PHP, Apache, Nginx, MySQL, MariaDB, PostgreSQL, Redis, MongoDB | сайты на PHP под Windows, нужно несколько версий PHP | только Windows; минимум 4 ГБ памяти и 15 ГБ на SSD |
| XAMPP | Windows, Linux, macOS | Apache, MariaDB, PHP 8.2, phpMyAdmin | быстрый старт, учебный проект | последняя сборка вышла в ноябре 2023 года, версии компонентов старые |
| Laragon | Windows | Apache или Nginx, MySQL, PHP, Node.js | разработчикам на Laravel | с версии 7 для коммерческого использования нужна платная лицензия |
| Docker (Compose) | Windows, Linux, macOS | любые сервисы из образов, как на продакшене | командная разработка, одинаковое окружение у всех | порог входа выше; Docker Desktop платный для компаний от 250 человек или с выручкой от $10 млн, Docker Engine на Linux бесплатен |
| Встроенный сервер языка | любая | python -m http.server, php -S | показать статичную страницу, быстро проверить скрипт | не для постоянной работы и не для продакшена |
Сайт на PHP или Python нельзя просто открыть двойным щелчком, как HTML-файл: код должен выполнить сервер, а браузер получит уже готовую страницу. Локальный сервер берёт эту роль на себя прямо на вашем компьютере. Правки видны сразу, не нужно каждый раз заливать файлы на хостинг, а ошибка не роняет боевой сайт.
Под локальным сервером иногда понимают и другое - компьютер в офисной сети, на котором лежат общие папки или база 1С. Это отдельная задача, о ней ниже, в разделе про сервер из компьютера. Если нужен разбор самого понятия, он есть в статье что такое локальный сервер.
Чаще всего локальный сервер нужен разработчику на время. Собрать новую версию сайта, проверить, не сломает ли обновление CMS какой-нибудь плагин, прогнать миграцию базы. Когда всё работает, изменения переносят на хостинг или рабочий сервер.
Реже его держат постоянно. Например, как внутренний сайт или справочник для сотрудников, доступный только из офисной сети. Тут на первый план выходят надёжность и доступ с других компьютеров.
Сначала определитесь с инструментом. Пишете на PHP под Windows и не хотите разбираться с контейнерами - берите Open Server Panel. Нужно, чтобы окружение у всех в команде и на продакшене совпадало до версии, - Docker. XAMPP подойдёт для учебного проекта, но версии в нём застыли на 2023 годе.
Шестая версия панели в 2024 году была переписана с нуля и устроена иначе, чем привычная многим пятая. Порядок такой:
home, например home\example.local. Внутри - папку .osp для настроек и папку public для файлов сайта..osp файл project.ini с базовыми настройками.http://example.local.Установите XAMPP в C:\xampp, откройте XAMPP Control Panel и нажмите Start напротив Apache и MySQL. Файлы сайта кладут в C:\xampp\htdocs, сайт открывается по адресу http://localhost, а база - через phpMyAdmin по адресу http://localhost/phpmyadmin. Учтите, что в последней сборке MariaDB 10.4, поддержка которой закончилась в 2024 году, и PHP не новее 8.2.
Docker поднимает каждый компонент в отдельном контейнере, а описание всего окружения помещается в один файл. Ниже минимальная связка Nginx + PHP + MySQL. В папке проекта создайте три файла и папку site с файлами сайта.
Файл docker-compose.yml:
services:
web:
image: nginx:1.27
ports:
- "8080:80"
volumes:
- ./site:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
php:
build: .
volumes:
- ./site:/var/www/html
db:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: app
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Файл Dockerfile (в официальном образе PHP нет расширений для MySQL, их надо доустановить):
FROM php:8.3-fpm
RUN docker-php-ext-install pdo_mysql mysqli
Файл nginx.conf:
server {
listen 80;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Запуск - командой docker compose up -d в папке проекта, сайт откроется по адресу http://localhost:8080. Из PHP к базе подключаются по имени сервиса db, а не по localhost. Порт 8080 выбран специально: он реже занят, чем 80.
В мае 2024 года Docker Hub на время закрывал доступ с российских IP-адресов. Если образы не скачиваются, пропишите в настройках Docker зеркало реестра - их держат российские облачные провайдеры и платформы для разработчиков.
Положите в корень сайта файл index.php с одной строкой и откройте сайт в браузере. Появилась таблица с версией PHP и списком расширений - сервер работает и выполняет код. Страница с исходным текстом вместо таблицы означает, что веб-сервер не передаёт файлы PHP интерпретатору.
После проверки файл удалите: phpinfo() показывает пути, версии и настройки, и на сервере, доступном из сети, это лишняя подсказка взломщику.
Если сайт не открывается, причина почти всегда одна из этих:
| Симптом | Причина | Что сделать |
|---|---|---|
| Apache или Nginx не стартует, ошибка про порт 80 | порт занят другой программой: IIS, другой службой Windows или Skype старых версий | выполните netstat -ano | findstr :80, найдите программу по номеру процесса или переведите сервер на порт 8080 |
Браузер показывает «Не удаётся получить доступ к сайту» по имени site.local | домен не прописан в файле hosts | проверьте C:\Windows\System32\drivers\etc\hosts или откройте сайт по localhost |
| MySQL не запускается | на компьютере уже работает другая MySQL или MariaDB на порту 3306 | остановите лишнюю службу или смените порт |
| Docker: ошибка при скачивании образа | нет доступа к Docker Hub | настройте зеркало реестра |
Nginx ставят локально по одной причине: чтобы окружение повторяло боевое. Если на хостинге или рабочем сервере сайт обслуживает Nginx, правила перенаправлений и кэширования лучше проверять на нём же. В Open Server Panel Nginx выбирается как веб-сервер проекта, в Docker это отдельный контейнер, как в примере выше.
Сам по себе Nginx PHP не выполняет. Он отдаёт статику и передаёт запросы к PHP-файлам процессу PHP-FPM. Поэтому в связке всегда два компонента.
Apache удобен там, где сайт опирается на файлы .htaccess. Их понимает только Apache, и большинство CMS на виртуальном хостинге рассчитаны именно на него. В XAMPP Apache уже внутри, в Open Server Panel его выбирают так же, как Nginx. Часто их ставят вместе: Nginx принимает запросы и отдаёт картинки и стили, Apache обрабатывает PHP. Чем они отличаются и что выбрать для проекта, сравнивали в статье Apache или Nginx, а пошаговая установка Apache на Linux и Windows разобрана отдельно.
Веб-сервер, PHP и база данных закрывают большинство задач. Остальное добавляют, когда этого требует проект.
Memcached и Redis - это кэш в оперативной памяти. Сайт кладёт туда результаты тяжёлых запросов к базе и сессии пользователей, и следующая страница собирается быстрее. Локально кэш ставят, если он есть на боевом сервере: иначе ошибки, связанные с кэшем, всплывут только после публикации. В Open Server Panel Redis подключается как модуль, в Docker - ещё одним сервисом в docker-compose.yml. Для PHP понадобится соответствующее расширение.
MongoDB - документная база данных, её берут, когда данные плохо ложатся в таблицы. В Open Server Panel она есть модулем, в Docker - официальный образ mongo. Чтобы PHP-код мог работать с MongoDB, нужно расширение mongodb для PHP (его и называют PHP-драйвером). Смотреть и править данные удобно в бесплатной программе MongoDB Compass от разработчиков базы.
Денвер много лет был стандартным локальным сервером под Windows, и инструкции по нему до сих пор находятся в поиске. Проект давно не развивается: в нём старые 32-битные сборки, Perl-скрипты управления и PHP 5-й версии, поддержка которой закончилась ещё в 2010-х. Актуальные версии CMS на таком PHP не запускаются, а обновить компоненты внутри Денвера руками - отдельный квест без гарантии результата.
Если у вас старый проект на Денвере, перенесите файлы сайта и дамп базы в Open Server Panel или XAMPP и проверьте сайт на актуальной версии PHP. Ошибки, которые всплывут, всё равно пришлось бы исправлять при переезде на любой хостинг с актуальным PHP.
Для сайта из HTML, CSS и JavaScript без серверного кода сборка не нужна. Достаточно встроенного сервера, который есть в Python и PHP. Перейдите в папку сайта и выполните одну из команд:
python -m http.server 8000
php -S localhost:8000
Сайт откроется по адресу http://localhost:8000. Зачем вообще сервер, если HTML открывается и так? Браузер по-разному относится к файлам, открытым с диска и полученным по HTTP: часть скриптов, загрузка данных через fetch и модули JavaScript без сервера не работают.
Для PHP, Python, Node.js и других языков, где страницы собирает код, сервер должен этот код выполнять. С PHP это делают сборки и Docker из раздела про установку. У Python и Node.js встроенные средства для разработки есть в самих фреймворках: в Django - команда python manage.py runserver, во Flask - flask run. Python, вопреки распространённому мнению, давно и широко используют для динамических сайтов.
Встроенные серверы и php -S рассчитаны только на разработку. Нагрузку и одновременные подключения они держат плохо, поэтому сайт для людей так не публикуют.
Если под локальным сервером вы понимаете компьютер, к которому будут подключаться коллеги, - для общих папок, внутреннего сайта или базы, - обычный ПК справится, но с оговорками.
Для тестового стенда, домашней лаборатории или общей папки на двух-трёх человек старого компьютера хватит. Проблемы начинаются, когда от него начинает зависеть работа офиса. В десктопной Windows 10 и 11 к общим ресурсам одновременно могут подключиться не больше 20 устройств, а поддержка Windows 10 закончилась в октябре 2025 года. В типичном офисном ПК нет памяти с коррекцией ошибок, дисков с горячей заменой, второго блока питания и удалённого управления на уровне железа: если компьютер завис ночью, перезагружать его придётся руками. Как собрать такую машину своими силами и на что смотреть в железе, разобрали в статье про домашний сервер.
Когда сервер нужен на годы и работает круглосуточно, проще сразу взять сервер башенного типа. Внешне он похож на системный блок, стоит под столом без серверной стойки, но внутри у него всё перечисленное выше.
По умолчанию локальный сервер доступен только с того компьютера, где он запущен. Чтобы сайт открывался у коллег в той же сети, серверу разрешают принимать подключения не только с localhost, открывают порт в брандмауэре Windows, а на других компьютерах заходят по IP-адресу сервера или прописывают домен в их файл hosts. Подробно, с разбором типовых ошибок подключения, это описано в статье про то, как зайти на локальный сервер.
Открывать локальный сервер в интернет пробросом портов на роутере не стоит: сборки для разработки не настроены для работы снаружи. Если сайт должен быть доступен из интернета, ему нужен нормальный хостинг или выделенный сервер. Пошаговый разбор, как создать свой сервер для сайта - от установки до публикации в интернет, - в отдельной инструкции.
Для сайтов на PHP - Open Server Panel 6: актуальные версии PHP и баз данных, несколько проектов с разными настройками. Если в команде несколько разработчиков на разных системах, удобнее Docker.
Для статичного сайта - да, если на компьютере уже есть Python или PHP: хватит команды python -m http.server. Для сайта на CMS понадобится сборка или Docker.
Чаще всего отличаются версии PHP или базы данных, набор расширений PHP или веб-сервер. Держите локально те же версии, что на хостинге, - в Docker это делается указанием версии образа.
Нет. Сборки для разработки работают с упрощёнными настройками, часто с пустым паролем администратора базы. Для публикации нужен отдельно настроенный сервер или хостинг.
Сайт вырос из локального сервера, а компьютер под столом уже работает на весь офис?
Подберём сервер под ваши задачи: внутренний сайт, общие папки, базу 1С или тестовый стенд для разработчиков. Соберём конфигурацию и протестируем её перед отгрузкой. Посмотрите, сколько стоит сервер для офиса, или напишите нам: +7 (800) 551-80-12, info@ittelo.ru. Серверами мы занимаемся больше 11 лет и за это время накопили серьёзную экспертизу. Даём гарантию до 5 лет, берём сервер на постпродажное обслуживание и не пропадаем после отгрузки.