Cómo configurar un servidor Subversion (SVN) en GNU / Linux - Ubuntu [cerrado]

95

Tengo una computadora portátil con Ubuntu que me gustaría que actúe como servidor de Subversion. Tanto para mí para comprometerme localmente como para otros de forma remota. ¿Cuáles son los pasos necesarios para que esto funcione? Incluya los pasos para:

  • Obtenga y configure Apache y los módulos necesarios (sé que hay otras formas de crear un servidor SVN, pero me gustaría que fuera específico de Apache)
  • Configure una forma segura de acceder al servidor (SSH / HTTPS)
  • Configurar un conjunto de usuarios autorizados (como en, deben tener autorización para comprometerse, pero pueden navegar libremente)
  • Validar la configuración con una confirmación inicial (una especie de "Hola mundo")

Estos pasos pueden involucrar cualquier combinación de instrucciones de la línea de comandos o de la aplicación GUI. Si puede, tenga en cuenta dónde las instrucciones son específicas para una distribución o versión en particular, y dónde se puede utilizar la elección de una herramienta en particular por parte del usuario (por ejemplo, nano en lugar de vi ).

Grundlefleck
fuente
¿Puedo usar el servidor Subversion en Ubuntu y los clientes en cualquier plataforma? como el cliente Tortoise SVN en Windows?
Raheel Hasan

Respuestas:

146

Pasos que he tomado para convertir mi computadora portátil en un servidor Subversion. El crédito debe ir a AlephZarro por sus instrucciones aquí . Ahora tengo un servidor SVN en funcionamiento (que actualmente solo se ha probado localmente).

Configuración específica: Kubuntu 8.04 Hardy Heron

Requisitos para seguir esta guía:

  • programa administrador de paquetes apt-get
  • editor de texto (yo uso kate)
  • derechos de acceso de sudo

1: Instale el servidor HTTP Apache y los módulos necesarios:

sudo apt-get install libapache2-svn apache2

Se instalarán los siguientes paquetes adicionales:

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

2: habilitar SSL

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

Agregue o verifique que lo siguiente esté en el archivo:

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

3: Genere un 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: crear host virtual

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

Cambiar (en ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

y (en svnserver)

<VirtualHost *> to <VirtualHost *:443>

Agregue, en ServerAdmin (también en el archivo svnserver):

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

5: Habilite el sitio:

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

Para superar las advertencias:

sudo kate /etc/apache2/apache2.conf

Añadir:

"ServerName $your_server_name"

6: Agregar repositorio (s): La siguiente configuración asume que queremos alojar múltiples repositorios. Ejecute esto para crear el primer repositorio:

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 más repositorios: repita el paso 6 (cambiando el valor de REPOS), saltándose el pasomkdir /var/svn

7: agregar un usuario autenticado

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

8: Habilite y configure WebDAV y SVN:

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

Agregar o descomentar:

<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 el servidor apache:

sudo /etc/init.d/apache2 restart

10: Validación:

Encendió un navegador:

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

Ambos requerían un nombre de usuario y contraseña. Creo que sin comentar:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

en /etc/apache2/mods-available/dav_svn.conf, permitiría la navegación anónima.

El navegador muestra "Revisión 0: /"

Cometer algo:

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

Acepte el certificado e ingrese la contraseña. Vea lo que acaba de comprometerse:

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

Siguiendo estos pasos (asumiendo que no he cometido ningún error al copiar / pegar), tenía un repositorio SVN en funcionamiento en mi computadora portátil.

Grundlefleck
fuente
Las instrucciones también funcionaron perfectamente en Jaunty. ¡Gracias!
Michael Moussa
6
Parecía funcionar perfectamente, pero obtengo un 403 prohibido cuando intento acceder a él y no me piden una contraseña. ¿Alguna pista sobre lo que podría estar mal?
korona
@korona: Accediendo a él de qué manera: ¿ejecutando comandos SVN o navegando hacia él?
Grundlefleck
1
"NameVirtualHost *" to "NameVirtualHost *:443"está en ports.conf mientras que <VirtualHost *> to <VirtualHost *:443>está en la configuración de svnserver. esto debería mencionarse. Me confundí bastante porque busqué en la configuración de svnserver para NameVirtualHost y no pude encontrarlo.
Wandang
1
En Debian Stretch, parece que necesita instalar en libapache2-mod-svnlugar de libapache2-svn(ya que este último ya no está disponible).
TheStoryCoder
2

Luego, necesitaba ejecutar (dentro del contexto del ejemplo citado anteriormente)

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

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

De lo contrario, seguí recibiendo un error 409 al realizar modificaciones locales (aunque los compromisos eran efectivos en el lado del servidor, necesitaba hacer un seguimiento con actualizaciones locales)

Thierry Marianne
fuente
1

Este artículo parece ofrecer un resumen bastante bueno de todo el proceso. Recomendaría seguir las instrucciones y luego publicar algunas preguntas más específicas sobre cualquier problema que encuentre y que no se abordan en los artículos a los que otras personas y yo hemos vinculado en estas respuestas.

Kibbee
fuente
1

Si obtiene 403 prohibido cuando ingresa al servidor web, puede ser porque usó un nombre de host que no es el que especificó en su archivo de configuración (es decir, localhost o 127.0.0.1). Intente presionar https: // whateveryousetasyourhostname en su lugar ...

PuO2
fuente
Otra causa 403: establezca la ruta svn a un enlace simbólico. Si su ruta svn es un enlace simbólico, deberá permitir los siguientes enlaces simbólicos.
copolii
-2

Escriba un solo comando en el terminal.

Para abrir la terminal, presione Ctrl+ Alt+ Ty luego escriba este comando:

$sudo apt-get install subversion
Ashish Saini
fuente
-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

Si lo desea, puede combinarlos en un comando como:

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

No puedo ayudar con el resto ...

UnkwnTech
fuente