- Home »

Хостинг для разработчиков: Как настроить dev/test/prod окружения?
Привет! Если ты когда-нибудь деплоил сайт или пилил сервис, то наверняка слышал про dev/test/prod окружения. Но вот как их грамотно разрулить на хостинге — вопрос, который часто вызывает ступор даже у опытных вебмастеров и системных админов. Давай разберёмся, зачем это вообще нужно, как всё настроить по уму и какие грабли поджидают на пути.
Зачем нужны разные окружения: dev, test, prod?
Сценарий простой: ты пишешь код, тестируешь, выкатываешь. Но если всё делать на одном сервере, то:
- Клиенты видят твои баги и эксперименты (а это фейл).
- Тестовая база портит продовые данные.
- Ломается что-то важное — и всё, минус репутация.
Поэтому нормальные пацаны (и девчата) всегда делают три (или хотя бы два) окружения:
- Development (dev) — тут творишь без оглядки, всё ломается, фича-бренчится, тестится локально или на сервере для команды.
- Testing/Staging (test) — максимально близко к продакшену, но не для реальных пользователей. Можно давать тестерам, SEO-шникам, заказчику.
- Production (prod) — боевой сервер, всё строго, только проверенный код и реальные данные.
Как это реализовать на хостинге: схемы и подходы
Вариант 1. Три отдельных сервера (идеал, но дорого)
- Каждое окружение — на своём VPS/VDS или выделенном сервере.
- Плюсы: максимальная изоляция, безопасность, можно настраивать всё по отдельности.
- Минусы: дорого, не всегда оправдано для небольших проектов.
Вариант 2. Один сервер, разные папки/поддомены (реально и удобно)
- Один VPS/shared-хостинг, но три сайта:
dev.site.ru
,test.site.ru
,site.ru
. - В каждом — своя папка, база данных, конфиги.
- Плюсы: экономия, быстрое развертывание, удобно для малых/средних проектов.
- Минусы: риск случайно залить dev-код на prod, возможны конфликты зависимостей.
Вариант 3. Docker-контейнеры (современно и гибко)
- На одном сервере крутятся изолированные контейнеры под каждое окружение.
- Удобно держать разные версии PHP, Node, базы и т.д.
- Плюсы: изоляция, масштабируемость, DevOps-стайл.
- Минусы: надо уметь с Docker, не везде поддерживается на shared-хостинге.
Вариант 4. Git-ветки + автоматический деплой
- Связываешь ветки репозитория с разными папками/окружениями на сервере.
- Например:
main/master — прод
develop — тест
feature/* — дев
- Плюсы: удобно для командной работы, легко откатывать изменения.
- Минусы: требует CI/CD-систему (например, GitHub Actions, Buddy или GitLab CI).
Практика: как настроить dev/test/prod окружения на хостинге
1. Организация структуры на сервере
/home/youruser/ ├── dev.site.ru/ ├── test.site.ru/ └── site.ru/
Для каждого окружения — отдельная папка, отдельный .env
или config.php
. В идеале — разные базы данных и доступы.
2. Настройка поддоменов
- В панели управления хостингом (ISPmanager, cPanel, DirectAdmin и т.д.) добавляешь поддомены
dev.site.ru
иtest.site.ru
. - Указываешь путь к соответствующей папке.
- В DNS прописываешь A-записи (или CNAME, если нужно).
3. Разделение конфигов и секретов
Никогда не используй одну базу для всех окружений! Для каждого — своя база, свои пользователи и пароли. Идеально — хранить секреты в .env
(Laravel, Symfony, Node.js), или в отдельных файлах вне веб-директории.
DB_HOST=localhost DB_NAME=site_dev DB_USER=dev_user DB_PASS=********
4. Автоматизация деплоя
Ручками заливать файлы — прошлый век. Используй Git и авто-деплой:
# Пример деплоя через git hook cd /home/youruser/dev.site.ru git pull origin develop composer install php artisan migrate
Или подключи Buddy, GitHub Actions Deploy to FTP, DeployBot.
5. Ограничь доступ к dev/test
- Закрой dev и test окружения по IP или basic-авторизацией.
- В .htaccess для Apache:
AuthType Basic
AuthName "Restricted"
AuthUserFile /home/youruser/.htpasswd
Require valid-user
- Для Nginx — через
auth_basic
или ограничение по IP:
location / {
allow 192.168.1.0/24;
deny all;
}
- Иначе поисковики могут проиндексировать твой dev-сайт или тестовые дубли!
Плюсы и минусы разных подходов (кейсы из жизни)
Позитивный кейс (реальный опыт)
У клиента был интернет-магазин на OpenCart. Внедрили dev/test/prod на одном VPS с разными поддоменами и базами. В результате:
- Баги ловились на тесте, а не на проде.
- SEO-шник спокойно тестировал микроразметку на staging, не боясь сломать основной сайт.
- Внедрение новых фич стало быстрее — не надо было делать ночные выкладки.
Негативный кейс (грабли новичков)
Владелец сайта держал dev и prod на одной базе (экономил место). Однажды тестировщик случайно удалил полтаблицы — и на боевом сайте пропали товары. Итог — потеря продаж, куча ругани.
Частые ошибки и мифы
- Ошибка: Использовать одну и ту же базу для всех окружений.
- Ошибка: Держать dev/test открытыми для всех (дубли в поиске, утечка данных, санкции от Яндекса/Google).
- Миф: “Маленькому сайту не нужно dev/test”. На самом деле, даже для лендинга полезно иметь тестовую площадку.
- Ошибка: Не делать бэкапы dev/test окружений. Иногда там тоже важные данные (например, тестовые заказы).
- Миф: “На shared-хостинге нельзя сделать dev/test/prod”. Можно! Просто через поддомены и папки.
Советы по выбору хостинга для dev/test/prod
- Ищи тарифы с поддержкой неограниченных сайтов/поддоменов.
- Проверь, можно ли создавать несколько баз данных.
- Обрати внимание на возможность подключения по SSH, поддержки Git, Composer, Docker (если нужно).
- Хорошо, если у хостера есть staging-функция (например, Beget Staging).
- Проверь, не запрещает ли хостер держать тестовые сайты (редко, но бывает в ToS).
Похожие решения и альтернативы
- Локальная разработка (Laragon, XAMPP, Docker Desktop): удобно, но обязательно нужен отдельный сервер для теста перед продом.
- Сервисы для staging: Netlify, Vercel (для фронта), Heroku (для бэка). Подходят для pet-проектов или MVP.
- CI/CD платформы: GitHub Actions, GitLab, CircleCI — для автоматизации деплоя.
Заключение: как правильно организовать dev/test/prod на хостинге?
Подытожим: грамотная организация dev/test/prod окружений — это не понты, а реальная защита от багов, фейлов и потери репутации. Даже если у тебя небольшой сайт, выдели поддомены, разнеси базы, настрой доступы и автоматизируй деплой. Это сэкономит тебе кучу времени и нервов.
Для новичков и небольших проектов хватит обычного shared-хостинга с поддержкой поддоменов и нескольких баз. Для сложных — бери VPS/VDS и строй инфраструктуру на Docker, с CI/CD.
Не забывай про безопасность: dev и test должны быть закрыты от внешнего мира и поисковиков. И всегда делай бэкапы.
Если хочешь примеры настроек под твой стек — пиши в комменты (или гугли официальные доки, например Laravel .env, Docker Compose, PHP-FPM configs).
Удачных деплоев и минимум багов! 🚀
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.