Melhor solução para um servidor doméstico de equipe

2

Eu criei um servidor doméstico com o Ubuntu 12.04 Server (usando um netbook antigo com um processador Atom e 512 MB). A ideia é apenas ser usada por uma equipe pequena (no máximo 10 pessoas) que terá acesso constante por SSH aos principais projetos e poderá adicionar funcionalidades com o Git, e terá, também, seu próprio diretório (com o VirtualHost configurado) para seus próprios projetos pessoais.

Tudo está configurado e funcionando, mas minha pergunta é:

Qual é a melhor solução para todos trabalharem? É tê-los no grupo http e então todos têm acesso como usuários normais à pasta /var/www (que também contém GitWeb e Drupal), ou seria criar um novo usuário com o nome do projeto (como exemplo ) onde apenas aqueles com a senha poderiam ter acesso ao trabalho (configurado com o VirtualHost).

Aviso: A ideia é ter 1 pessoa responsável do servidor diretamente (já que ele é quem o está hospedando), mais 2 pessoas que terão acesso ao root de sua casa para configurar qualquer coisa de sua casa, mais qualquer outra pessoa que se junta ao grupo sem qualquer root de acesso, mas apenas o acesso necessário para criar trabalhos pessoais e trabalhar com o Git.

    
por aliasbody 05.11.2012 / 23:25

3 respostas

1

Existem duas perguntas separadas, uma sobre a configuração do Apache e outra sobre a configuração do git.

Em relação ao Apache: não há necessidade de dar acesso a /var/www a todos, o Apache suporta os diretórios da web do usuário , portanto, depois de ativar os diretórios por usuário com uma única linha na configuração, os usuários devem poder adicionar arquivos ao diretório public_html em seu diretório inicial e tê-lo exibido em http://example.com/~username/

Com relação ao Git: o truque aqui é incluir todos os usuários em um grupo e, então, garantir que o repositório no servidor seja criado com --shared flag e seja de propriedade desse grupo. Estou usando um script para isso:

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

echo "Creating new repository: " 
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"

Esse repositório precisa ser criado por um usuário superadministrador, mas depois disso todos poderão fazer push e pull dele. Se um usuário precisar de um repositório privado, ele poderá criar apenas um em seu diretório inicial.

    
por Sergey 06.11.2012 / 00:07
1

Sua solução provavelmente funcionará bem. Você só precisa ter certeza de que o Apache é capaz de ler os arquivos em / var / www.

Como alternativa, você sempre pode instalar o apache2-mpm-itk , que permitirá que você configure hosts virtuais em execução como usuários diferentes daquele que o Apache executa como (normalmente www-data). Mais informações sobre apacke2-mpm-itk aqui .

    
por carestad 06.11.2012 / 00:00
1

A melhor solução é não ter ninguém além do administrador do servidor ssh ou remoto na máquina. Em vez disso, peça a cada desenvolvedor que trabalhe em sua própria máquina, e cada pessoa só usa git pull/push para buscar o código da ramificação do servidor central. Dessa forma, o trabalho que cada pessoa faz é completamente independente, exceto quando estão mesclando mudanças de outras. O Git irá cuidar de todas as permissões, tudo que você precisa fazer é garantir que cada desenvolvedor tenha uma conta de login para usar.

Por favor, consulte a seção "Usando o git for collaboration" deste documento: link

Você também pode estar interessado na seção "Fluxos de trabalho distribuídos" deste documento: link

    
por ImaginaryRobots 06.11.2012 / 00:01