0. Introducción
1. Instalacion
2. Configuración de Apache
3. SVN
4. Scripts
5. Notas y Referencias
0. Introducción
Subversion es un software de sistema de control de versiones diseñado específicamente para reemplazar al popular CVS, el cual posee varias deficiencias. Es software libre bajo una licencia de tipo Apache/BSD y se le conoce también como svn por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.
1. Instalacion
apt-get install subversion libapache2-svn libapache-mod-dav apache2 openssl gcc g++
2. Configuración de Apache
2.1 SSL
Para habilitar el Apache2 para que escuche en el puerto de SSL
a2enmod ssl
echo 'Listen 443' >> /etc/apache2/ports.conf
Si vemos que nos dice que está ocupado el puerto con:
netstat -pan | grep 443
revisamos quien está escuchando. Y cambiamos el puerto de escucha, o modificamos el servidor que estuviera escuchando en dicho puerto.
Generamos un Certificado SSL:
apache2-ssl-certificate
si el comando no existe, se lo puede descargar haciendo:
wget http://czarism.com/files/apache2-ssl.tar.gz
lo descomprimimos haciendo
tar zxvf apache2-ssl.tar.gz
mv apache2-ssl-certificate /usr/sbin
mv ssleay.cnf /usr/share/apache2
mkdir /etc/apache2/ssl
y luego generamos el certificado.
apache2-ssl-certificate
Por ejemplo se puede completar con:
Country Name (2 letter code) [GB]:ES
State or Province Name (full name) [Some-State]:Madrid
Locality Name (eg, city) []:Madrid
Organization Name (eg, company; recommended) []:Lamia
Organizational Unit Name (eg, section) []:lamia
server name (eg. ssl.domain.tld; required!!!) []:lamia.es
Email Address []:info@lamia.es
2.2. Configuración de SSL en Apache2
hacemos backup del por defecto
cp /etc/apache2/sites-enabled/000-default /etc/apache2/sites-enabled/ssl
Lo dejamos de la siguiente forma:
NameVirtualHost *:443
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
3. SVN
Lo que se va aexplicar aquí es la manera "manual" de hacerlo. Luego se postearán una serie de scripts que nos ayudarán en esta tarea.
Creamos el directorio
mkdir /home/svn
mkdir /home/svn/permisos
chown www-data:www-data /home/svn
chmod 750 /home/svn
Generamos el archivo con usuarios y contraseñas, cuando queramos dar permisos a otro usuario deberemos hacerlo aquí:
su www-data -c "htpasswd -c -m /home/svn/permisos/dav_svn.passwd root"
Creamos un repositorio
svnadmin create /home/svn/test
chown -R www-data:www-data /home/svn/test
chmod -R g+ws /home/svn/test
Copiamos el archivo authz de ejemplo y le agregamos el usuario root al repositorio test:
cp /home/svn/test/conf/authz /home/svn/permisos/dav_svn.authz
echo "[test:/]" >> home/svn/permisos/dav_svn.authz
echo "root = rw" >> home/svn/permisos/dav_svn.authz
NOTA: Es lo mismo usar htpasswd que htpasswd2
- Archivos de Configuración
vim /home/svn/test/conf/svnserve.conf
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
### Visit http://subversion.tigris.org/ for more information.
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = read
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory. If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = lamia Repository
Modificar /home/svn/test/conf/authz agregándole las siguientes líneas:
[/]
root = rw
Copiar los dos archivos al directorio de permisos
cp /home/svn/test/conf/svnserve.conf /home/svn/permisos
cp /home/svn/test/conf/authz /home/svn/permisos
Finalizacion de Apache2
vim /etc/apache2/sites-enabled/ssl
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Taringa Subversion Repository"
AuthUserFile /home/svn/permisos/dav_svn.passwd
AuthzSVNAccessFile /home/svn/permisos/dav_svn.authz
Require valid-user
Reiniciar Apache2
/etc/init.d/apache2 restart
4. Scripts
Estos scripts fueron hechos para simplificar la gestión del SVN, crearlos en /home/svn/permisos linkear contra /user/sbin
4.1. svnaddrep
#!/bin/sh
#
# svn projets creation
#
serv="https://127.0.0.1/"
cwd="/home/svn/"
if [ "$1" = "" ]; then
echo -n "Repository name: ";
read projet;
else
projet="$1";
fi
site="$serv$projet";
echo " svnadmin create $cwd$projet --fs-type fsfs";
svnadmin create $cwd$projet
echo " chown -R www-data:www-data $cwd$projet";
chown -R www-data:www-data $cwd$projet
cp /home/svn/permisos/authz $cwd$projet/conf
cp /home/svn/permisos/svnserve.conf $cwd$projet/conf
echo "[$projet:/]" >> /home/svn/permisos/dav_svn.authz;
echo "root = rw" >> /home/svn/permisos/dav_svn.authz;
echo -n "Add initial structure (root password requiered)?(y/n):";
while true; do
echo -n "Add initial structure (root password requiered)?(y/n):";
read yn;
case $yn in
[yY]* ) echo " svn mkdir $site/trunk $site/branches $site/tags -m
\"Subversion archive folder creation.\"";
svn mkdir $site/trunk $site/branches $site/tags -m "Subversion archive folder
creation.";break;;
[nN]* ) echo;exit;;
esac
done
echo "
##########################################
Finished!
Remember to add users...
##########################################";
4.2. svnadduser
#!/bin/sh
#
# svn user creation
#
if [ "$1" = "" ]; then
echo -n "Username:";
read user;
else
user="$1";
fi
su www-data -c "htpasswd -m /home/svn/permisos/dav_svn.passwd $user"
4.3. svndeluser
#!/bin/sh
#
# svn user creation
#
if [ "$1" = "" ]; then
echo -n "Username:";
read user;
else
user="$1";
fi
su www-data -c "htpasswd -D /home/svn/permisos/dav_svn.passwd $user"
5. Notas y Referencias
wiki
Taringa
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.