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
|
|
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
|
|
Ahora ya tenemos todo listo, podemos instalar el modulo TracWebAdmin para que sea mas facil la administracion del trac.