Как правильно разместить девелоперскую копию сайта на втором сервере?
Всем доброго дня!
Недавно столкнулся с неожиданной проблемой, которая почему-то ранее никак себя не проявляла.
К примеру на одном хостинге есть сайт www.site.ru (работает через SSL)
Я разворачиваю его полную копию на другом хостинге и том же домене, копирую SSL сертификат с боевого сервера.
У себя в hosts прописываю ip девелоперского сервера и всё ок, точнее раньше было всё ок.
Проблема 1.
Я дал доступ к девелоперскому серверу разработчику, который работает на Win10.
Он правит hosts, заходит на сайт, при первой загрузке у него открывается сайт с девелоперского сервера, а при обновлении страницы или переходу по внутренней ссылке, открывается сайт с боевого сервера.
При этом если закрыть браузер и попытаться зайти по адресу снова, сразу открывается уже боевой сервер.
Похоже что при первой загрузке считывается ip из hosts, а потом уже идет запрос к DNS, который говорит что IP текущего сервера не фигурирует в записях для домена и отправляет запрос на IP боевого сервера, который указана в DNS.
Из защитного ПО стоит только стандартный Defender, который пробовали отключать - не помогло.
У меня на Win7 и у другого разработчика на Win8 проблема не проявляется.
Проблема 2.
Сайт работает с Google maps.
Раньше опять таки на девелоперском сервере всё было ок, а теперь карты не грузятся.
API key выдан для домена, домен тот же, но карты не грузятся, в консоли браузера пучек ошибок "Failed to load resource: the server responded with a status of 403 ()".
Есть идея что нужно прописать IP девелоперского сервера в зонах основного провайдера, но это неточно.
Я в DNS записях мягко говоря не разбираюсь, поэтому не понимаю можно ли сделать это, если да, то какой тип записи выбрать и сделать это так чтобы на девелоперский сервер на пошли случайные пользователи, а только те, кто поменял прописал ip в hosts.
А почему не хотите сабдомен сделать или другой домен вообще для разработки, зачем эти приколы с hosts? Бесплатный SSL сертификат получить не проблема, как и api key от карт. И не будет никаких проблем, в конфигах dev сервера укажете домен, и сам файл с гитигнор добавите, чтобы на боевом сервере не перезатерлись данные.
OKyJIucT, на поддомене нельзя разворачивать, т.к. в куче мест (база, шаблоны и т.д.) забито www.site.ru, при открытии сайта на subdomain.site.ru сайт по сути не работает.
Понятно что это не есть гуд, но как говорится - что имеем.
Раньше пробовал менять десятком запросов домен в базе, в файлах автозаменой, но это очень муторно и при обновлении боевого сервера приходится проделывать обратную процедуру.
А с учетом того что копия пожет разворачиваться несколько раз в неделю... в общем плюнул я на это дело и разворачиваю за 15 минут на том же домене.
вопрос из разряда "как мне правильно выстрелить себе в ногу".
Три роли:
продакшен
тестинг
девелоп
сделайте так, чтобы конфиги для них подключались разные.
в коде не нужно жестко харкодить домен.
девелоп - по хорошему вообще должен уметь запускаться без домена из иде. по локалхост:порт
А делая как вы в какойто момент обязательно запутаетесь и испортите продашен.
а вот на то, что в куче мест забито маленький хак .
забрать весь вывод в переменную . сделать замену.
если нет единой точки входа, то в php такое можно сделать через автодобавляемые файлы.
Олег Муравейко, конфиги и так разные.
Адрес боевого сайта хранится и в коде и в шаблонах и в базе, переделку этого хозяйства никто не оплатит.
Подменять адрес сайта на выводе в принципе вариант, но это не решит вопрос с базой, в нескольких местах прописан домен и это не просто путь к картинке например, а для использования в ранних циклах подготовки контента. И там нужно влезать на более ранних этапах.
Испортить продакшн в принципе можно, только за 2 года работы такого пока не бывало, были инциденты с непониманием на каком сервере нахожусь во фронте, а в остальном всё норм.
чую жуткая легаси и спагети стайл.
Так что там с базой. конекты к ней по всему коду размазаны ?
и везде текстом вместо хотя бы константы ?
логины и пароли тоже по всему коду ?
Ну, раз по-человечески сделать dev / staging / production не вариант, то в голову приходят такие варианты:
1. Если сайты на разных серверах - поставить перед ними load balancer. Весь трафик слать на продакшн, а девелоперов по IP - на копию. SSL-сертификат нужно будет перенести на балансировщик, разумеется.
2. Если сайты физически на одном сервере - настроить Nginx / Apache или что там у вас для разных IP смотреть в разный docment root. Всех слать в папку прода, а свои IP - в клон.