Как настроить многопользовательскую среду на сервере разработки с помощью git и github

Как настроить многопользовательскую среду на сервере разработки с помощью git и github

Я работаю над приложением lamp. У нас есть 2 сервера (Debian) Live и Dev.

Я постоянно работаю над dev main, чтобы добавлять новые функции и исправлять ошибки.
Когда все работает хорошо, я scp-копирую соответствующий код в Live-систему. База данных (mysql) локальна для каждой машины.

На самом деле это довольно простая настройка, и я хочу немного улучшить рабочий процесс. Я использую git и github для контроля версий. По общему признанию, я использовал только одну ветку. Это могут быть 3 разных разработчика, которые работают над кодом в разное время. Мы все используем одно и то же имя пользователя linux для подключения к серверу разработки и редактирования кода напрямую, когда это необходимо. Затем я обычно фиксирую и отправляю код в конце дня на github.

Следует помнить, что запустить этот код на локальной машине непросто, поскольку существует множество конфигураций Apache и поддоменов, которые не будут работать на локальной машине, поэтому важно работать на сервере разработки, а не локально.

Мне нужно создать новый процесс, поскольку теперь нам нужен основной ствол и ветка с большим объемом переписанного кода.

Как лучше всего это сделать? Должен ли я создать разные логины unix для каждого разработчика и настроить разные рабочие области на сервере разработки для их изменений? Например

/var/www/mysite_derek /var/www/mysite_paul /var/www/mysite_mike

Я думаю, что они могут сделать pull из основной ветки, а затем создать свою собственную ветку и объединить ее обратно. Я не уверен, как это будет работать с git локально и с github.

Мне также нужно будет создать разные учетные записи пользователей GitHub?

Я хотел бы сделать это «правильным» способом и с запасом на будущее, чтобы иметь много потенциальных разработчиков, но я также не хочу слишком усложнять. Я предпочитаю простое и элегантное решение.

какие-нибудь рекомендации или предложения?

решение1

Решение, которое мы используем с примерно 12 разработчиками, следующее. Оно работает очень хорошо и обеспечивает гибкую настройку без необходимости изменять конфигурацию сервера. Вероятно, оно не будет масштабироваться до 40-50 разработчиков из-за сетевой задержки и скорости хранения сервера.

Мы разделяем/var/www/дерево через Samba, поэтому клиенты Windows могут использовать свои локальные IDE и VCS-клиенты для редактирования на сервере LAMP. Ни у кого нет учетной записи на сервере Linux.

Создайте структуру каталогов следующим образом:

/var/www/mysite.com/www/derek/
/var/www/mysite.com/www/paul/
/var/www/mysite.com/www/mike/

В вашем внутреннем DNS создайте подстановочную запись, которая указывает **.dev* на IP-адрес вашего сервера Lamp. Я предполагаю,123.45.67.89здесь.

В Apache определите виртуальный хост, который выглядит примерно так:

<VirtualHost 123.45.67.89>
   ServerName lamp.dev
   ServerAlias *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/%-4/%1/
</VirtualHost>

Важными частями являются подстановочный знак ServerAlias, который заставляет этот vhost отвечать на все входящие запросы, которые заканчиваются на '.dev'. Другой важной частью является VirtualDocumentRoot, который выглядит сложным, но не так уж и плох. Он просто разрезает входящее имя хоста на части и создает DocumentRoot из этих частей. Вы можетеОб этом подробнее здесь.

Теперь любой разработчик может посетитьhttp://derek.www.mysite.com.dev/и просмотреть их персональную рабочую копию моего сайта.

Добавление нового сайта, поддомена или разработчика сводится к простому созданию правильных каталогов на общем ресурсе Samba.

Для развертывания на производственных серверах я бы рекомендовал вам отказаться от scp и посмотреть наКапистрано, и превосходный централизованный веб-интерфейсВебистрано. Capistrano немного ориентирован на Rails, но для адаптации к PHP, например, требуется всего несколько строк. Webistrano предоставляет центральный графический интерфейс, где вы можете развернуть или обновить сайт прямо из системы управления версиями одним нажатием кнопки. Наличие легко заскриптованных развертываний, которые можно надежно повторять и откатывать в случае проблем, не следует игнорировать.

Связанный контент