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
apt-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:
openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl 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
NameVirtualHost *:443 <VirtualHost *:443> #Activate SSL SSLEngine on SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key #VirtualHost Servername ServerName trac.domain.ext ServerAdmin trac@domain.ext DocumentRoot /opt/projects/trac #Authentication <Location /> AuthType Basic AuthName "Trac" AuthUserFile /opt/projects/.htpasswd Require valid-user #Trac SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /opt/projects/trac/ PythonOption TracUriRoot / </Location> </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
NameVirtualHost *:443 <VirtualHost *:443> #Activate SSL SSLEngine on SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key #VirtualHost Servername ServerName svn.domain.ext ServerAdmin svn@domain.ext DocumentRoot /opt/projects/svn <Location /> DAV svn #Authentication AuthType Basic AuthName "Subversion" AuthUserFile /opt/projects/.htpasswd Require valid-user #Subversion SVNParentPath /opt/projects/svn SVNListParentPath on SVNAutoVersioning On </Location> <LocationMatch "/.+"> #Subversion permission file AuthzSVNAccessFile /opt/projects/svn/.htpasswd </LocationMatch> </VirtualHost>
Es importante separar el AuthzSVNAccessFile de <Location /> 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.
vi /etc/apache2/ports.conf
<IfModule mod_ssl.c>
Listen 443
</IfModule>cd /etc/apache2/mods-enabled ln -s /etc/apache2/mods-available/dav.load . ln -s /etc/apache2/mods-available/dav_svn.load . ln -s /etc/apache2/mods-available/mod_python.load . ln -s /etc/apache2/mods-available/ssl.conf . ln -s /etc/apache2/mods-available/ssl.load . cd /etc/apache2/sites-enabled ln -s /etc/apache2/sites-available/svn.domain.ext 001-svn.domain.ext ln -s /etc/apache2/sites-available/trac.domain.ext 001-trac.domain.ext
Ahora vamos a crear un proyecto de prueba
mkdir -p /opt/projects/svn mkdir -p /opt/projects/trac svnadmin create /opt/projects/svn/NewProject trac-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 ..............
Ahora creamos los ficheros de acceso de usuarios.
[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
[NewProject:/] user1 = rw user2 = r * =
Ahora ya tenemos todo listo, podemos instalar el modulo TracWebAdmin para que sea mas facil la administracion del trac.



