Режим разработки на сайте. Как вносить изменения на работающий сайт в формате «demo»?
Добрый день.
Сегодня возник интересный вопрос, интересует возможность реализации идеи. Суть - имею сайт на хостинге (содержание сайта значения не имеет, то, что нужно знать, так это то что сайт работает и посещается), отключение сайта на определенный/неопределенный срок не рассматриваю.
Например, сейчас требуется внести координальные изменения в структуру сайта, а именно подправить контроллеры, удалить лишние функции и дописать новые в моделях, вьюшки переписать. В общем серьезный такой "апгрейд" системы. Изменения в БД не планируются, только в файлах сайта. Проект закрытый, доступ внутри одной конкретной компании и отключение сайта приведёт к негативу со стороны сотрудников и, соответственно, начальства.
Сегодня возникла идея следующего вида - есть ли возможность с помощью какого то флага в настройках сайта (либо в самом коде либо в БД) включать "режим разработчика" с возможностью вносить изменения на сайт, которые будут видны только администратору системы. А потом, с помощью "волшебной" кнопки применять все сделанные изменения и для всех остальных пользователей системы.
Думаю сразу возникнет вопрос, почему бы не клонировать всю систему на локальный сервер и работать с ним, а потом загружать все в сеть. Почему я отбросил этот вариант? Потому что доступ к изменениям, которые еще официально не подтверждены, должен иметь не только я. Будут еще люди, которые будут отслеживать вносимые изменения, согласовывать эти изменения и принимать их. Поэтому необходимо сделать такой функционал в рамках одной системы.
> Почему я отбросил этот вариант? Потому что доступ к изменениям, которые еще официально не подтверждены, должен иметь не только я. Будут еще люди, которые будут отслеживать вносимые изменения, согласовывать эти изменения и принимать их. Поэтому необходимо сделать такой функционал в рамках одной системы.
Мне нужно, чтобы группа людей, раскиданных по миру (ну ладно, по стране) могли иметь онлайн доступ к просмотру вносимых изменений, потом после согласования всех изменений можно было их подтверждать и они вносились бы на сайт. Git это умеет? Насколько я понял git умеет отслеживать вносимые изменения, но не совсем понятно умеет ли он то, что я хочу.
Ну в теории - это можно. Никто вам не мешает везде писать что то вроде
if ($test_mode == true)
{
//отдаем новый функционал
}
else
{
//отдаем старый функционал
}
Но это неправильно. Самый правильный вариант - это поднимать еще один сайт, для ветки с тестовым функционалом. Хоть на локальной машине и шарить на всех, хоть на той где основной сайт - просто давать доступ по другому урлу. Иначе утонете в тоннах ифов.
Крайний вариант - разрулить это на уровне роутинга страниц, это потенциально уменьшит количество условий, но все равно очень очень не найс.
"Все" поднимают для таких целей отдельный сайт. Это не обязательно новый сервер/домен, если код нормально написан, сайт будет одинаково работать, располагаясь как в корневой папке site.com, так и во вложенной site.com/testing.
Если добиться работы во вложенной папке проблемно, заводится test.site.com.
Git при этом замечательно пригодится, чтобы заливать все изменения - как при тестировании по мере изменений, так и по окончании - одним махом все.
почему бы не клонировать всю систему на локальный сервер и работать с ним, а потом загружать все в сеть. Почему я отбросил этот вариант?
Можно и так, но лучше в той среде, в том же окружении, где сайту предстоит жить. Клон на на том же хостинге на другом домене и закрытый от посторонних.
Делаете поддомен. Там колдуете, потом переносите на основной. Мало того, так как колдовство Ваше наверное весь сайт не затрагивает можно вынести только часть, остальные файлы подключить с основного домена. Главный вопрос на чем сайт?
Я в независимости от того что за движок, делаю подобное средствами nginx.
В конфигурации уже указана папка, в которой файл говорящий о том, что идёт тех. обслуживание.
А в момент непосредственного обслуживания, убираю комментарий у этой строчки, который перенаправляет все IP кроме моего к этой папке. Кустарно, согласен, но работает - как говорится :))
(удобненько, так как не нужно вносить никаких изменений в сам движок/фреймворк/код)