Так сложилось, что приходится (пока что) в одиночку вести разработку, но ожидается пополнение в команде, а схема действий, что есть сейчас, совершенно к этому не готова.
Сейчас весь кодинг идет в PHPStorm, без локального сервера, по Ctrl+S идет разворачивание через SFTP на боевой сервер, по уму и во избежание проблем начал задумываться о git'е и отдельном сервере для тестирования. Как все грамотно должно выглядеть?
Пока моё представление такое:
- Редактор по сохранению выгружает на второй сервер, максимально близкий по конфигам к первому
- Проверяется работоспособность и отсутствие ошибок
- Из редактора сабмитится в git
- Из git'а разворачиваем на боевой сервер.
- Во избежание расхождения и правок в экстренных случаях прямо на боевом - сливаем боевой как некоторые "срезы" в git, оттуда копируя на компьютеры и тестовый сервер
- Раз в N времени синхронизировать базу тестового сервера с боевой версии
Проект специфичен (серверная часть для JS-скриптов, установленных на паре других сайтах) и переключение между тестовым и боевым, скорее всего, будет проводиться bat'ником, вписывающим разные IP (боевой/тестовый) для домена серверной части в hosts и сбрасывающий DNS-кеш локального компьютера.
А как разворачивать автоматически на боевой сервер последние ревизии с GIT'а? Как поступать с пользовательскими файлами и прочим, что не относится непосредственно к движку: аватары, временные файлы, файлы кеша?
Есть ли более совершенные схемы или готовые руководства по настройке такой схемы работы?