@1-800-IT
новичок

Как правильно вести разработку web-проектов?

Так сложилось, что приходится (пока что) в одиночку вести разработку, но ожидается пополнение в команде, а схема действий, что есть сейчас, совершенно к этому не готова.

Сейчас весь кодинг идет в PHPStorm, без локального сервера, по Ctrl+S идет разворачивание через SFTP на боевой сервер, по уму и во избежание проблем начал задумываться о git'е и отдельном сервере для тестирования. Как все грамотно должно выглядеть?

Пока моё представление такое:
  1. Редактор по сохранению выгружает на второй сервер, максимально близкий по конфигам к первому
  2. Проверяется работоспособность и отсутствие ошибок
  3. Из редактора сабмитится в git
  4. Из git'а разворачиваем на боевой сервер.
  5. Во избежание расхождения и правок в экстренных случаях прямо на боевом - сливаем боевой как некоторые "срезы" в git, оттуда копируя на компьютеры и тестовый сервер
  6. Раз в N времени синхронизировать базу тестового сервера с боевой версии


Проект специфичен (серверная часть для JS-скриптов, установленных на паре других сайтах) и переключение между тестовым и боевым, скорее всего, будет проводиться bat'ником, вписывающим разные IP (боевой/тестовый) для домена серверной части в hosts и сбрасывающий DNS-кеш локального компьютера.

А как разворачивать автоматически на боевой сервер последние ревизии с GIT'а? Как поступать с пользовательскими файлами и прочим, что не относится непосредственно к движку: аватары, временные файлы, файлы кеша?

Есть ли более совершенные схемы или готовые руководства по настройке такой схемы работы?
  • Вопрос задан
  • 5917 просмотров
Решения вопроса 1
OnYourLips
@OnYourLips
Из git'а разворачиваем на боевой сервер.
Ни в коем случае так делать нельзя.
Остальные пункты тоже нельзя.

Вам стоит прочитать по continuous integration - все ваши проблемы там решены.
Из софта наиболее дружественен к новичкам TeamCity, и он бесплатен для крошечных команд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Matvey-Kuk
@Matvey-Kuk
Разработчик в Cisco, CA.
Не понятен пункт 5. Зачем сливать из боевого в гит? В гите должны храниться только исходные коды, по этому там всегда самая актуальная версия. И суть тестового сервера теряется из-за пункта 3. Обычно строится так:

Локальная машина разработчика -> пуш в git ветку test -> ci сервер сам накатывает ветку test на тестовый сервер -> разраб проверяет обновление -> мерж git ветки test с master -> ci накатывает ветку master на боевой сервер.

Параллельно по таймауту работают джобы по бэкапу боевого сервера на резервный, базы данных(mysqldump) и статики(rsync), например, раз в день с 3:00 до 4:00. Обновление базы на тестовом сервере обычно никак не автоматизируется, ибо там всегда каша из мусорных данных, которые наплодили автотесты.
Ответ написан
iLeonidze
@iLeonidze
xbooster.ru
А чем Вас не устраивает локальная сеть? Разворачиваете проект в локальной сети, расшариваете между машинами. Пишите код, на стейбл-релизах постите в гит. В качестве бэкапа в Вашем случае пойдет самый обычный крон, копирующий всё на второй винт.

ЗЫ. Пользуюсь WebStorm, схема примерно такая же, всё работает. Единственное, все операции делаются через VPN-туннелирование из-за сервера на другом конце света :D
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы