Subversion es un control de versiones de código abierto ampliamente difundido. Casi toda la información es susceptible de ser controladas con versiones, no haré ahora una disertación sobre este concepto…. Subversion no solo gestiona eficientemente las version, sino que permite de una rápida y segura compartir información entre personas ubicadas en diferentes países.

He decidido instalar Subversion en mi servidor comercial bluehost, lo tengo desaprovechado: disco duro ilimitado, y un ancho de banda monumental y sólo hospedo unas pocas páginas web.

Paso 2. Instala un Cliente Telnet/SSH

Yo he utilizado PuTTY, que permite el control remoto de máquinas bajo plataformas Unix. En el caso Bluehost se utilizan máquinas con sistema operativo Linux, por lo tanto PuTTY sigue siendo válido, si el sistema operativo de tu servidor es Windows tienes que utilizar una alternativa.

PuTTY is a free implementation of Telnet and SSH for Win32 and Unix platforms, along with an exterm terminal emulator.

Yo me he instalado lo version: 2007-04-29 PuTTY 0.60. Abre una sesión con PuTTY, la primera ventana que te aparecerá es la siguiente:

Solo tienes que introducir el nombre de tu host y pulsar el botón Open.

Tienes varias opciones para [my_domain].

  • www.midominio.com
  • midominio.com
  • box#.bluehost.com

Donde # es el número de tu box

El problema de los casos anteriores es que luego te pedirá en nombre de usuario, para evitarlo tienes una alternativa para [my_domain]

  • username@www.midominio.com
  • username@midominio.com
  • username@box#.bluehost.com

Donde # es el número de tu box

El PuTTY te pedirá tu clave de acceso al panel de control de tu servidor, Bluehost en mi caso. Si todo ha ido bien, ahora tienes control de tu servidor por línea de comandos.

Paso 3. Instala Subversion

Aprovechando que ya hemos abierto una sesión SSH con el PuTTY ahora instalaremos Subversion. He intentado instalar la última versión 1-6-3, pero durante le proceso de compilación e instalación recibía errores, la versión más reciente que se ha instalado satisfactoriamente viene descripta por la siguiente secuencia de comandos:

cd ~
mkdir src
cd ~/src
wget http://www.gtlib.gatech.edu/pub/apache/apr/apr-util-1.2.12.tar.gz
wget http://www.gtlib.gatech.edu/pub/apache/apr/apr-1.2.12.tar.gz
wget http://subversion.tigris.org/downloads/subversion-1.5.4.tar.gz
wget http://www.webdav.org/neon/neon-0.28.0.tar.gz
tar -xzf apr-util-1.2.12.tar.gz
tar -xzf apr-1.2.12.tar.gz
tar -xzf subversion-1.5.4.tar.gz
tar -xzf neon-0.28.0.tar.gz
cd ~/src/apr-1.2.12
./configure --prefix=$HOME LDFLAGS="-L/lib64"
make
make install
cd ~/src/apr-util-1.2.12
./configure --prefix=$HOME --with-apr=$HOME LDFLAGS="-L/lib64"
make
make install
cd ~/src/neon-0.28.0
./configure --enable-shared --prefix=$HOME LDFLAGS="-L/lib64"
make
make install
cd ~/src/subversion-1.5.4
./configure --prefix=$HOME --without-berkeley-db --with-ssl LDFLAGS="-L/lib64"
make
make install

He copiado este código de un mensaje aportado en el foro de Bluehost realizado por un desinteresado desarrollador web. Por cierto, este hilo en el foro de Bluhost es muy interesante.

En teoría lo único que tienes que hacer es copia el código anterior, pegarlo en la ventana de la sesión de PuTTY y darle al Enter. Tu servidor empezará a compilar y hacer el ejecutable, tarda un rato.

Si todo ha ido bien, en la carpeta $/Home/bin deberías ver los siguientes ejecutables: svn, svnadmin, svndumpfilter, etc.

Paso 4. Incluye los svn Binarios en tu Path

Necesitar modificar el archivo .bashrc para informar a tu servidor dónde se encuentras los archivos binarios de subversion que anteriormente hemos creado y que están ubicado en la carpeta bin.

Siguiendo la páuta definida por el usuario nkohl en el foro de Bluehost:

There is a way to remotely use a Subversion repository running on your Bluehost account using svn+ssh. It only requires a very simple modification to one file.

The only thing you need to do is to modify your ~/.bashrc script to have the path to the svnserve application, which should be in ~/bin. All I did was copy my $PATH declaration from my ~/.bash_profile into my ~/.bashrc.

Basicamente tienes que incluir

PATH=$PATH:$HOME/bin

Despúes de

# User specific aliases and functions

Al final el .bashrc debería quedar de la siguiente manera:

# .bashrc
# User specific aliases and functions
PATH=$PATH:$HOME/bin
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

Atención si utilizar un editor diferente al vi, como es mi caso que he utilizado el WordPad, éste incluye caracteres que luego no interpretará correctamente el servidor Bluehost. Te recomiendo utilizar el vi, o buscar los caracteres invisibles, que se denotan avanzando y retrocediendo con las teclas de cursor.

Como has abierto una sesión PuTTY para controlar tu servidor, éste ya tiene el vi integrado, por lo tanto puedes utilizar el vi para modificar el archivo.bashrc.

Paso 5. Crea de un Repositorio Subversion

Primero necesitamos crear una carpeta dónde ubicamos los repositorios, yo he creado la carpeta svn en el directorio raíz. El código de línea de comandos es el siguiente:

cd
mkdir svn
cd svn

En este momento estamos en disposición de crear nuestro primer repositorio

svnadmin create --fs-type fsfs myproject
chmod -R 755 myproject

Sustituye el nombre “myproject” por el nombre del repositorio que desees.

Paso 6. Crea Claves de Acceso SSH

El objetivo de crear claves de acceso es fundamentalmente dos:

  1. Evitar que Subversion te pregunte la clave de acceso cada vez que te conectes.
  2. Habilitar una clave de acceso a cada usuario.

El segundo punto es fundamental si deseas compartir tus repositorios con numerosos usuarios, en mi caso el segundo punto era estrictamente necesario ya que la información del repositorio era susceptible de ser compartida entre muchos usuarios de distintos países.

La creación de claves la haremos estableciendo una relación de confianza entre el servidor (bluehost) y el cliente (yo mismo). Para ello se generan para cada usuario un par de claves, una pública, que se guarda en el servidor y otra privada, que se guarda en el PC del usuario.

Paso 6.1. Descarga e Instala el Software para las Claves

Si ya has intalado PuTTY como servidor Cliente Telnet/SSH, no cecesitarás nada mas, ya que el paquete de intalación posee un generador de claves (Yo me he instalado lo version: 2007-04-29 PuTTY 0.60).

El servidor bluehost posee también un generador de claves integrado, pero a mi me resulta más cómodo un entorno gráfico, no soy un fan de la línea de comando.

Paso 6.2. Genera Parejas de Claves

Ejecuta la aplicación “PuTTY Key Generator”, Selecciona una clave de SSH-2 DSA con 1024 bits y seguidamente presiona el botón “Generate”. Mueve el puntero del ratón para generar una trama aleatoria.

Es muy importante el cuadro de texto “Key comment”, en este campo debemos definir el nombre del usuario y en qué dominio del servidor dónde está instalado el subversion.

El cuadro de texto “Key passphrase”, te sugiero que lo dejes vacío. En caso contrario, cada vez que importas tu clave, se te pedirá la frase y en consecuencias no solventaremos el punto 1 del paso 6.

Pulsa el botón “Load” para guardar en un lugar seguro de tu PC la clave privada, la utilizamos luego.

Paso 6.2. Incluye la Clave Pública en el Servidor

Para incluir la clave pública en el servidor, deberás abrir una sesión Telnet y mediante línea de comandos, crear el directorio .ssh en el directorio raíz si no existe y crear o modificar el archivo “authorized_keys” con la clave pública que acabamos de crear.

mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh

Modifica el archivo “authorized_keys” con el editor vi

vi authorized_keys  

He incluye la clave pública. Yo lo que he hecho es copiar y pegar desde la ventana “PuTTY Key Generator”, Te debería quedar algo así:

command="svnserve -t --tunnel-user=user_name1",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss  AAAAB3NzaC1kc3MAAAC......  .......BpE6F3slEv16sBo= user_name1@mydomain.com

Es muy importante incluir la parte

command="svnserve -t --tunnel-user=user_name1",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty

Paso 6.3. Carga la Clave Privada en tu Ordenador

Yo utilizo la aplicación “Pageant” que viene con el PuTTY. La aplicación queda residente en la barra de herramientas y proporcionará la clave siempre que se necesite sin necesidad de la intervención del usuario.

Selecciona la clave privada que generaste en el paso 6.2

Cada vez que arranques el ordenador, tendrás que abrir el “pageant” e incluir la clave privada, para evitar este lo mejor es crear un acceso directo en la carpeta de Inicio de Windows para evitar esto.

Selecciona las propiedades del acceso directo, y en la solapa acceso directo, cuadro de texto destino define la ubicaciones de tu clave ppk.

Ejemplo: “C:\Program files\PuTTY\pageant.exe” C:\Program files\PuTTY\user_namekey1.ppk.

Paso 6.4. Acceso Multiusuario al Repositorio

Para permitir a varios usuarios con sus propias claves, deberás repetir el paso 6.2 y seguidamente ir aplicando el archivo “authorized_keys” con los nuevos usuarios.

Te debería quedar algo así:

command="svnserve -t --tunnel-user=user_name1",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss  AAAAB3NzaC1kc3MAAAC......  .......BpE6F3slEv16sBo= user_name1@mydomain.com
command="svnserve -t --tunnel-user=user_name2",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss  ADsDs3NasdaSDASdasD......  .......asdaSDASdaSsdSd= user_name2@mydomain.com

Crea una clave por cada usuario que desee acceder al repositorio.

Deja una respuesta