@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'а? Как поступать с пользовательскими файлами и прочим, что не относится непосредственно к движку: аватары, временные файлы, файлы кеша?

Есть ли более совершенные схемы или готовые руководства по настройке такой схемы работы?
  • Вопрос задан
  • 5698 просмотров
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Homeapp Москва
от 180 000 до 200 000 руб.
Mono Волгоград
от 35 000 руб.
101 Медиа Санкт-Петербург
от 80 000 руб.
21 янв. 2020, в 20:25
350000 руб./за проект
21 янв. 2020, в 20:23
4000 руб./за проект