Multiples Proyectos Con Trac Y Svn Usando HTTPS

Voy a explicar como montar el sistema de gestion de proyectos trac y subversion usando https para trabajar con subversion. Yo lo he montado en una debian usando apache2, asi que lo primero que necesitamos es instalar todo lo necesario

1apt-get install trac subversion apache2 subversion libapache2-svn libapache2-mod-python2.3

Una vez descargado e instalado creamos el certificado necesario para usar tanto trac y subversion bajo https. Entra en el directorio /etc/apache2/ssl y ejecuta lo siguiente:

1openssl genrsa -des3 -out server.key 1024
2openssl req -new -key server.key -out server.csr
3cp server.key server.key.org
4openssl rsa -in server.key.org -out server.key
5openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Ahora ya tenemos listo los certificados, asi que ahora solo nos queda configurar el apache. Yo he creado un trac.dominio.ext y un svn.dominio.ext para hacer esto, pero esto va a gusto de cada uno. Yo como uso dos subdominios distintos, lo tengo en ficheros separados.

Primero editaremos el trac, asi que creamos el fichero /etc/apache2/sites-available/trac.domain.ext

 1NameVirtualHost *:443
 2<VirtualHost *:443>
 3  #Activate SSL
 4  SSLEngine on
 5  
 6  SSLCertificateFile    /etc/apache2/ssl/server.crt
 7  SSLCertificateKeyFile /etc/apache2/ssl/server.key
 8  
 9  #VirtualHost Servername
10  ServerName trac.domain.ext
11  ServerAdmin [email protected]
12  
13  DocumentRoot /opt/projects/trac
14  
15  #Authentication
16  <Location />
17    AuthType Basic
18    AuthName "Trac"
19    AuthUserFile /opt/projects/.htpasswd
20    Require valid-user
21
22    #Trac
23    SetHandler mod_python
24    PythonHandler trac.web.modpython_frontend
25    PythonOption TracEnvParentDir /opt/projects/trac/
26    PythonOption TracUriRoot /
27    
28    </Location>
29</VirtualHost>

El fichero no necesita demasiada explicacion, simplemente le decimos que active el SSL, que pida autentificacion y cargamos el modulo del trac y le especificamos el path de donde estan todos nuestros proyectos.

Ahora vamos con el fichero /etc/apache2/sites-available/svn.domain.ext

 1NameVirtualHost *:443
 2<VirtualHost *:443>
 3  #Activate SSL
 4  SSLEngine on
 5  
 6  SSLCertificateFile    /etc/apache2/ssl/server.crt
 7  SSLCertificateKeyFile /etc/apache2/ssl/server.key
 8  
 9  #VirtualHost Servername
10  ServerName svn.domain.ext
11  ServerAdmin [email protected]
12  
13  DocumentRoot /opt/projects/svn
14  <Location />
15    DAV svn
16    
17    #Authentication
18    AuthType Basic
19    AuthName "Subversion"
20    AuthUserFile /opt/projects/.htpasswd
21    Require valid-user
22    
23    #Subversion
24    SVNParentPath /opt/projects/svn
25    SVNListParentPath on
26    SVNAutoVersioning On
27  </Location>
28  
29  <LocationMatch "/.+">
30    #Subversion permission file
31    AuthzSVNAccessFile /opt/projects/svn/.htpasswd
32  </LocationMatch>
33</VirtualHost>

Es importante separar el AuthzSVNAccessFile de ya que sino no listara todos los proyectos en http://svn.domain.ext/ por problemas de permisos.

Ahora que tenemos estos ficheros listos, hay que activar el modulo de ssl en el apache2 y los dos dominios.

1vi /etc/apache2/ports.conf
1<IfModule mod_ssl.c>
2  Listen 443
3</IfModule>
 1cd /etc/apache2/mods-enabled
 2ln -s /etc/apache2/mods-available/dav.load .
 3ln -s /etc/apache2/mods-available/dav_svn.load .
 4ln -s /etc/apache2/mods-available/mod_python.load .
 5ln -s /etc/apache2/mods-available/ssl.conf .
 6ln -s /etc/apache2/mods-available/ssl.load .
 7
 8cd /etc/apache2/sites-enabled
 9ln -s /etc/apache2/sites-available/svn.domain.ext 001-svn.domain.ext
10ln -s /etc/apache2/sites-available/trac.domain.ext 001-trac.domain.ext

Ahora vamos a crear un proyecto de prueba

1mkdir -p /opt/projects/svn
2mkdir -p /opt/projects/trac
3svnadmin create /opt/projects/svn/NewProject
4trac-admin /opt/projects/trac/NewProject initenv

Project Name [My Project]> NewProject
Database connection string [sqlite:db/trac.db]>
Path to repository [/var/svn/test]> /opt/projects/svn/NewProject
Templates directory [/usr/share/trac/templates]>
Creating and Initializing Project
Configuring Project
trac.repository_dir
trac.database
trac.templates_dir
project.name
Installing default wiki pages
…………..

1chown -R www-data:www-data /opt/projects/

Ahora creamos los ficheros de acceso de usuarios.

1htpasswd -c /opt/projects/.htpasswd user1 htpasswd /opt/projects/.htpasswd user2

Y el archivo de permisos de subversion, que tiene el siguiente formato

1
2
[Repositorio:/Path]
user = [ [r[w]]]

Por ejemplo, queremos que el user1 pueda leer y escribir, el user2 leer, y anonymous nada (no deberia haber anonymous ya que el htpasswd no los deja pasar, pero siempre viene bien protegerse por si acaso), el fichero quedaria asi

1
2
3
4
[NewProject:/]
user1 = rw
user2 = r
* =

Ahora ya tenemos todo listo, podemos instalar el modulo TracWebAdmin para que sea mas facil la administracion del trac.


DIVX/XVID a DVDR en GNU/Linux
WordPress Post Update Plugin
comments powered by Disqus