Лучшее решение для домашнего сервера команды

Я создал домашний сервер с Ubuntu 12.04 Server (используя старый нетбук с процессором Atom и 512 МБ). Идея заключается в том, чтобы использовать его для небольшой команды (максимум 10 человек), которая будет иметь постоянный доступ по основным SSH к основным проектам и сможет добавлять функции с помощью Git, а также будет иметь собственный каталог (с настроенным VirtualHost) для свои личные проекты.

Все настроено и работает, но мой вопрос:

Какое лучшее решение здесь для всех, чтобы работать? Они должны быть в группе http, а затем все имеют обычные права доступа к папке /var/www (которая также содержит GitWeb и Drupal) или создать нового пользователя с именем проекта (в качестве примера). ) где только те, кто имеет пароль, могут иметь доступ к работе (настроено с помощью VirtualHost).

Обратите внимание: идея состоит в том, чтобы один человек отвечал за сервер напрямую (поскольку он является тем, кто его размещает), еще два человека будут иметь доступ к root из своего дома, чтобы настроить что-либо из их дом, плюс кто-нибудь еще, кто присоединяется к группе без какого-либо root доступа, но только необходимого доступа для создания личных работ и работы с Git.

2
задан 6 November 2012 в 02:35

3 ответа

Есть 2 отдельных вопроса, один о настройке Apache и другой о настройке git.

Относительно Apache: нет необходимости предоставлять доступ к /var/www всем, Apache поддерживает веб-каталогов для каждого пользователя , поэтому после включения пользовательских каталогов с одной строкой в ​​конфигурации пользователи должны иметь возможность добавлять файлы в каталог public_html в своем домашнем каталоге и получать его в http://example.com/~username/

Что касается Git: хитрость заключается в том, чтобы добавить всех пользователей в группу и затем убедиться, что Репозиторий на сервере создается с флагом --shared и принадлежит этой группе. Для этого я использую скрипт:

#!/bin/bash
REPONAME=$1
BASE=/var/www/git

echo "Creating new repository: " $1
mkdir $BASE/$REPONAME
cd $BASE/$REPONAME
git --bare init --shared
git update-server-info
chown -R apache:apache $BASE/$REPONAME
echo "Done."
echo "SSH clone URL is ssh://example.com/www/git/$REPONAME"

Такой репозиторий должен создавать пользователь с супер-правами администратора, но после этого каждый сможет его использовать. Если пользователю нужен личный репозиторий, он может просто создать его в своем домашнем каталоге.

0
ответ дан 6 November 2012 в 02:35

Лучшее решение не состоит в том, чтобы иметь никого, но администратора сервера ssh или удаленный в машину. Вместо этого имейте каждую работу разработчика над их собственной машиной, и каждый человек просто делает git pull/push выбирать код от центрального ответвления сервера. Тем путем работа, которую делает каждый человек, абсолютно независима кроме тех случаев, когда они объединяют изменения от других. Мерзавец будет заботиться обо всех полномочиях, все, что необходимо было бы сделать, удостоверяются, что у каждого разработчика есть учетная запись для использования.

См. раздел "Using git for collaboration" этого документа: http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html

Можно также интересоваться разделом "Distributed workflows" этого документа: http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html

1
ответ дан 6 November 2012 в 02:35

Ваше решение, вероятно, будет работать нормально. Вам просто нужно убедиться, что Apache может читать файлы в /var/www.

.

В качестве альтернативы вы всегда можете установить apache2-mpm-itk, что позволит вам настраивать виртуальные хосты, работающие как пользователи, отличные от того, под которым работает Apache (обычно www-data). Больше информации о apacke2-mpm-itk здесь .

0
ответ дан 6 November 2012 в 02:35

Другие вопросы по тегам:

Похожие вопросы: