Como configurar um servidor Subversion (SVN) no GNU/Linux - Ubuntu [fechado]
Pergunta
Eu tenho um laptop rodando Ubuntu que gostaria de atuar como servidor Subversion.Tanto para mim me comprometer localmente, quanto para outros remotamente.Quais são as etapas necessárias para que isso funcione?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 (por exemplo, eles devem estar autorizados a confirmar, mas podem navegar livremente)
- Valide a configuração com um commit inicial (uma espécie de "Olá, mundo")
Essas etapas podem envolver qualquer combinação de instruções de linha de comando ou de aplicativo GUI.Se possível, observe onde as instruções são específicas para uma distribuição ou versão específica e onde a escolha de uma ferramenta específica pelo usuário pode ser usada (por exemplo, nano em vez de vi).
Solução
Passos que tomei para tornar meu laptop um servidor Subversion.O crédito deve ir para AlephZarro por suas direçõ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:Criar 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 (no 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 pressupõe que queremos hospedar vários repositórios.Execute isto 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:faça o passo 6 novamente (alterando o valor de REPOS), pulando o passo mkdir /var/svn
7:Adicione 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 remova o comentário:
<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:
Abra um navegador:
http://localhost/svn/$REPOS
https://localhost/svn/$REPOS
Ambos exigiam nome de usuário e senha.Acho que descomentando:
<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 cometer:
svn co --username $user_name https://localhost/svn/$REPOS
Seguindo essas etapas (supondo que não cometi nenhum erro ao copiar/colar), eu tinha um repositório SVN funcionando em meu laptop.
Outras dicas
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, continuei recebendo um erro 409 ao cometer modificações locais (embora os compromissos fossem eficazes do servidor, eu precisava acompanhar as atualizações locais)
Este artigo parece fornecer 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 sejam abordados nos artigos aos quais eu e outras pessoas vinculamos nessas respostas.
Se você receber 403 proibido ao acessar o servidor web, pode ser porque você usou um nome de host que não é o que você especificou em seu arquivo de configuração (ou seja, localhost ou 127.0.0.1).Tente bater https://whateveryouseasyourhostname em vez de...
Por favor, escreva um único comando no terminal.
Para abrir o terminal, pressione Ctrl + Alt. + T, e digite este comando:
$sudo apt-get install subversion
Para Apache:
sudo apt-get -yq install apache2
Para SSH:
sudo apt-get -yq install openssh-server
Para Subversão:
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
Não posso ajudar com o resto...