Como configurar um servidor Subversion (SVN) no GNU / Linux - Ubuntu [fechado]

95

Eu tenho um laptop com Ubuntu que gostaria de atuar como um servidor Subversion. Devo comprometer-me tanto localmente quanto remotamente. Quais são as etapas necessárias para fazer isso funcionar? Inclua etapas para:

  • Obtenha e configure o Apache e os módulos necessários (sei que existem outras maneiras de criar um servidor SVN, mas gostaria que fosse específico do Apache)
  • Configure uma forma segura de acessar o servidor (SSH / HTTPS)
  • Configure um conjunto de usuários autorizados (como em, eles devem ter autorização para se comprometer, mas são livres para navegar)
  • Valide a configuração com um commit inicial (uma espécie de "Hello world")

Essas etapas podem envolver qualquer combinação de linha de comando ou instruções do aplicativo GUI. Se você puder, observe onde as instruções são específicas para uma determinada distribuição ou versão e onde a escolha do usuário de uma ferramenta específica pode ser usada em seu lugar (digamos, nano em vez de vi ).

Grundlefleck
fonte
Posso usar o servidor Subversion no Ubuntu e clientes em qualquer plataforma? como o cliente Tortoise SVN no Windows?
Raheel Hasan

Respostas:

146

Etapas que executei para tornar meu laptop um servidor Subversion. O crédito deve ir para AlephZarro por suas instruções aqui . Agora tenho um servidor SVN funcionando (que atualmente só foi testado localmente).

Configuração específica: Kubuntu 8.04 Hardy Heron

Requisitos para seguir este guia:

  • programa gerenciador de pacotes apt-get
  • editor de texto (eu uso kate)
  • direitos de acesso sudo

1: Instale o servidor Apache HTTP e os módulos necessários:

sudo apt-get install libapache2-svn apache2

Os seguintes pacotes extras serão instalados:

apache2-mpm-worker apache2-utils apache2.2-common

2: Habilitar SSL

sudo a2enmod ssl
sudo kate /etc/apache2/ports.conf

Adicione ou verifique se o seguinte está no arquivo:

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

3: Gere um certificado SSL:

sudo apt-get install ssl-cert
sudo mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

4: Crie um host virtual

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svnserver
sudo kate /etc/apache2/sites-available/svnserver

Mudança (em ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

e (em svnserver)

<VirtualHost *> to <VirtualHost *:443>

Adicione, em ServerAdmin (também no arquivo svnserver):

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

5: Habilite o site:

sudo a2ensite svnserver
sudo /etc/init.d/apache2 restart

Para superar os avisos:

sudo kate /etc/apache2/apache2.conf

Adicionar:

"ServerName $your_server_name"

6: Adicionando repositório (s): A configuração a seguir assume que queremos hospedar vários repositórios. Execute para criar o primeiro repositório:

sudo mkdir /var/svn

REPOS=myFirstRepo
sudo svnadmin create /var/svn/$REPOS
sudo chown -R www-data:www-data /var/svn/$REPOS
sudo chmod -R g+ws /var/svn/$REPOS

6.a. Para mais repositórios: execute a etapa 6 novamente (alterando o valor de REPOS), pulando a etapamkdir /var/svn

7: Adicionar um usuário autenticado

sudo htpasswd -c -m /etc/apache2/dav_svn.passwd $user_name

8: Habilite e configure WebDAV e SVN:

sudo kate /etc/apache2/mods-available/dav_svn.conf

Adicione ou descomente:

<Location /svn>
DAV svn

# for multiple repositories - see comments in file
SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>

9: Reinicie o servidor apache:

sudo /etc/init.d/apache2 restart

10: Validação:

Abriu um navegador:

http://localhost/svn/$REPOS
https://localhost/svn/$REPOS

Ambos exigiam nome de usuário e senha. Acho que descomentar:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

em /etc/apache2/mods-available/dav_svn.conf, permitiria a navegação anônima.

O navegador mostra "Revisão 0: /"

Comprometa algo:

svn import --username $user_name anyfile.txt https://localhost/svn/$REPOS/anyfile.txt -m “Testing”

Aceite o certificado e digite a senha. Confira o que você acabou de comprometer:

svn co --username $user_name https://localhost/svn/$REPOS

Seguindo essas etapas (supondo que não cometi nenhum erro ao copiar / colar), obtive um repositório SVN funcionando em meu laptop.

Grundlefleck
fonte
As instruções funcionaram perfeitamente no Jaunty também. Obrigado!
Michael Moussa
6
Pareceu funcionar perfeitamente, mas recebo um 403 proibido ao tentar acessá-lo, e não há solicitação de senha. Alguma dica sobre o que pode estar errado?
korona
@korona: Como acessá-lo: executando comandos SVN ou navegando até ele?
Grundlefleck
1
"NameVirtualHost *" to "NameVirtualHost *:443"está no ports.conf enquanto <VirtualHost *> to <VirtualHost *:443>está nas configurações do svnserver. isso deve ser mencionado. Fiquei muito confuso porque pesquisei nas configurações do svnserver por NameVirtualHost e não consegui encontrar.
Wandang de
1
No Debian Stretch, parece que você precisa instalar ao libapache2-mod-svninvés de libapache2-svn(já que o último não está mais disponível).
TheStoryCoder
2

Depois, precisei executar (dentro do contexto do exemplo citado acima)

$ sudo chmod g + w /var/svn/$REPOS/db/rep-cache.db

$ sudo chown www-data: www-data /var/svn/$REPOS/db/rep-cache.db

Caso contrário, continuava recebendo um erro 409 ao confirmar modificações locais (embora os compromissos fossem eficazes no lado do servidor, eu precisava acompanhar as atualizações locais)

Thierry Marianne
fonte
1

Este artigo parece dar um bom resumo de todo o processo. Eu recomendaria seguir as instruções e, em seguida, postar algumas perguntas mais específicas sobre quaisquer problemas que você encontrar e que não foram abordados nos artigos que eu e outras pessoas vinculamos nestas respostas.

Kibee
fonte
1

Se você obtiver 403 proibido ao acessar o servidor web, pode ser porque você usou um nome de host diferente do que especificou no arquivo de configuração (ou seja, localhost ou 127.0.0.1). Em vez disso, tente acessar https: // qualquer que seja seu nome de host ...

PuO2
fonte
Outra 403 causa: definir o caminho svn para um link simbólico. Se o seu caminho svn for um link simbólico, você terá que permitir os seguintes links simbólicos.
copolii
-2

Escreva um único comando no terminal.

Para abrir o terminal, pressione Ctrl+ Alt+ Te digite este comando:

$sudo apt-get install subversion
Ashish Saini
fonte
-2

Para Apache:

sudo apt-get -yq install apache2

Para SSH:

sudo apt-get -yq install openssh-server

Para Subversion:

sudo apt-get -yq install subversion subversion-tools

Se desejar, você pode combiná-los em um comando como:

sudo apt-get -yq install apache2 openssh-server subversion subversion-tools

Eu não posso ajudar com o resto ...

UnkwnTech
fonte