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:
- Evitar que Subversion te pregunte la clave de acceso cada vez que te conectes.
- 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.