1. Instalacion
Lo primero que haremos será instalar las herramientas necesarias y comprobar si nuestro Ubuntu ya tiene instalado algunos modulos necesarios. Para instalar las herramientas necesarias:
root@mylinux:~$ sudo apt-get install subversion subversion-tools
Si utilizaremos svn a través de internet (lo cual es una de sus grandes cualidades) necesitaremos comprobar que Apache tenga instalado los módulos dav y dav_svn, para esto, verificamos si ya los tenemos instalados:
root@mylinux:~$ a2enmod dav
root@mylinux:~$ a2enmod dav_svn
y si no están instalados, los instalamos:
root@mylinux:~$ sudo apt-get install libapache2-svn
2. Configuracion
Crearemos un grupo y los usuarios necesarios para manejar los permisos que tengan que ver con subversion . Para crear el grupo (en este caso lo llame subversion , pero puedes llamarlo como quieras):
root@mylinux:~$ sudo groupadd subversion
y para agregarle usuarios a el grupo recien creado los cuales queremos que usen de algun modo nuestro servidor:
root@mylinux:~$ sudo usermod -G subversion myuser1
root@mylinux:~$ sudo usermod -G subversion myuser2
El siguiente paso será crear los archivos que contendrán los usuarios anteriores con sus passwords para poder utilizar svn , para ello:
root@mylinux:~$ sudo htpasswd -c /etc/apache2/dav_svn.passwd myuser1
root@mylinux:~$ sudo htpasswd /etc/apache2/dav_svn.passwd myuser2
La primera línea lleva la opción -c por la simple razón de que crea el fichero. Los demás usuarios se añaden a el fichero creado. Cada vez que agreguemos un usuario, nos irá pidiendo su contraseña y la confirmación de la misma.
3. Creación y configuración de un repositorio
En la mayoría de casos querremos tener más de un repositorio, por ejemplo uno para pruebas, y otros que sirvan a proyectos reales. Por eso crearemos un directorio padre (/var/www/ svn ) y dentro de él crearemos tantos un subdirectorio para el repositorio SVN de cada proyecto:
Directorio padre de los repositorios:
root@mylinux:~$ sudo mkdir /var/www/ svn
Directorio para las primeras pruebas con SVN . Crearemos tantos como sea necesario, aunque en este ejemplo sólo hacemos uno:
root@mylinux:~$ sudo mkdir /var/www/ svn /$REPOS
3.1 Crear estructuras de soporte svn en el repositorio:
Esto debemos repetirlo para cada subdirectorio que queramos que sirva como repositorio Subversion . Este comando crea un conjunto de ficheros necesarios para almacenar la información de versionado del proyecto y jamás deberíamos manipular su contenido directamente. Para ello tenemos comandos y aplicaciones que se encargarán de mantener la información adecuadamente.
root@mylinux:~$ sudo svnadmin create /var/www/ svn /$REPOS
3.2 Crear subdirectorios para el tronco, las ramas y las etiquetas (Opcional):
Típicamente los proyectos suelen estructurarse internamente manteniendo un "tronco" principal en un subdirectorio llamado "trunk" y las ramas derivadas del proyecto principal en un subdirectorio "branches". La carpeta "tags" se usa para las etiquetas. No es necesario crear estas carpetas, además se pueden crear más adelante cuando las necesitemos.
root@mylinux:~$ sudo svn mkdir -message="Preparando los direcotorios..."
file:///var/www/ svn /$REPOS/trunk
file:///var/www/ svn /$REPOS/tags
file:///var/www/ svn /$REPOS/branches
Le damos los correspondientes permisos a los repositorios que en mi caso han sido creados dentro de /var/www/ svn
root@mylinux:~$ sudo chown -R www-data: subversion /var/www/ svn /$REPOS
root@mylinux:~$ sudo chmod -R 770 /var/www/ svn /$REPOS
4. Habilitar y configurar WebDAV y SVN :
Configuraremos Apache para que use los repositorios, configuramos el archivo que gestiona el módulo de apache para el svn :
root@mylinux:~$ sudo gedit /etc/apache2/mods-available/dav_svn.conf
Dentro ponemos esta configuración, en este caso solo descomentaremos estas lineas, ya que las mismas estan comentadas en el archivo:
##
# SVN
#
<Location / svn >
DAV svn
SVNParentPath /var/www/ svn
AuthType Basic
AuthName "Repositorio Subversion del proyecto"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Si deseamos que el modo lectura no este accesible para cualquiera, (ya sea porque nuestro proyecto sea confidencial o no queramos que sea visto desde fuera, o lo que sea) basta con reemplazar la sección:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
por
Require valid-user
Necesitamos reiniciar apache para que tome la nueva configuración.
root@mylinux:~$ sudo /etc/init.d/apache2 restart
5. Acceso mediante protocolo ( svn ://)
Cuando se haya creado el repositorio de Subversion , podrás configurar el control de acceso. Puedes editar el archivo /var/www/ svn /proyecto/conf/svnserve.conf para configurar el control de acceso. Por ejemplo, para configurar la autenticación, puedes descomentar las siguientes líneas en el archivo de configuración:
#
# password-db = passwd
Tras descomentar las líneas anteriores, podrás mantener la lista de usuarios en el archivo passwd. Para ello, edita el archivo passwd en el mismo directorio y añade el nuevo usuario. La sintaxis es la siguiente:
username = password
Ahora, para acceder a Subversion a través del protocolo personalizado svn ://, bien sea desde la misma máquina o desde otra diferente, debes ejecutar svnserver usando la orden svnserve. La sintaxis es la siguiente:
root@mylinux:~$ sudo svnserve -d --foreground -r /var/www/ svn /
# -d -- modo demonio
# --foreground -- ejecutar en primer plano (útil para depuración)
# -r -- raíz del directorio a servir
Definicion de los parametros utilizados
· -d ejecuta svnserve como un demonio.
· -r permite a los clientes no tener que escribir la ruta completa. Esto resulta más cómodo al cliente y aporta cierta seguridad al ocultar los detalles de donde están realmente los repositorios.
6. Configuracion del servicio como demonio
Se debe crear el fichero /etc/init.d/svnserve:
root@mylinux:~$ sudo nano /etc/init.d/svnserve
agregarle el siguiente contenido:
#! /bin/sh
set -e
# /etc/init.d/ svn : start and stop the SVN daemon
test -x /usr/bin/svnserve || exit 0
. /lib/lsb/init-functions
SVND_OPTS="-d -r /var/www/ svn /"
export PATH="${PATH:+$PATH:}/usr/bin:/bin"
case "$1" in
start)
log_begin_msg "Iniciando servidor SVN ..."
start-stop-daemon --start --quiet --exec /usr/bin/svnserve -- $SVND_OPTS || log_end_msg 1
log_end_msg 0
;;
stop)
log_begin_msg "Cerrando servidor SVN ..."
start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/svnserve || log_end_msg 1
log_end_msg 0
;;
reload|force-reload)
log_begin_msg "Recargando servidor SVN "
start-stop-daemon --stop --signal 1 --quiet --oknodo --exec /usr/bin/svnserve || log_end_msg 1
log_end_msg 0
;;
restart)
log_begin_msg "Reiniciando servidor SVN ..."
start-stop-daemon --stop --quiet --oknodo --retry 30
start-stop-daemon --start --quiet --exec /usr/bin/svnserve -- $SVND_OPTS || log_end_msg 1
log_end_msg 0
;;
*)
log_success_msg "Usage: $0 {start|stop|reload|force-reload|restart}"
exit 1
esac
exit 0
NOTA: se deben dar los permisos 775 para que al arrancar se pueda acceder al demonio
root@mylinux:~$ sudo chmod 777 /etc/init.d/svnserve
Ahora sólo nos queda crear los enlaces simbólicos necesarios en la estructura /etc/rcx.d para que el servicio se arranque y se pare automáticamente al arrancara y parar el servidor. Para ello se hará:
root@mylinux:~$ sudo update-rc.d svnserve defaults
7. Instalar WebSVN
Instalamos WebSVN, si nos pide alguna configuración solo hay que recordar que el directorio de nuestros repositorios es /var/www/ svn /
root@mylinux:~$ sudo aptitude install websvn
**opcionial instalamos enscript, que nos sirve para el para coloreado de sintaxis en websvn
root@mylinux:~$ sudo aptitude install enscript
Movemos la carpeta de websvn que se intalo en /usr/share/ a /var/www/
root@mylinux:~$ sudo cp -r /usr/share/websvn/ /var/www/
Configuramos el módulo de apache para el websvn
root@mylinux:~$ sudo gedit /etc/apache2/mods-available/dav_svn.conf
y agregamos al final lo siguiente:
<Location /websvn/>
Options FollowSymLinks
order allow,deny
allow from all
AuthType Basic
AuthName " Subversion Repository"
</Location>
Guardamos y cerramos dav_svn.conf
Reiniciamos apache para que aplique las configuraciones.
root@mylinux:~$ sudo /etc/init.d/apache2 restart
Para configuraciones adicionales o reconfiguraciones podemos utilizar el comando dpkg-reconfigure websvn o irnos directamente al archivo de configuracion que esta en etc/websvn/svn_deb_conf.inc
8. Cómo corregir Apache - "apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName" Error en Ubuntu
Probablemente podría enfrentan el siguiente error misma mientras estaba de reiniciar el servidor Apache en Ubuntu
root@mylinux:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Para solucionar ese problema, tiene que editar el archivo httpd.conf. Abra el terminal y el tipo
root@mylinux:~$ sudo gedit /etc/apache2/httpd.conf
Por defecto el archivo httpd.conf estará en blanco. Ahora sólo tiene que añadir la siguiente línea al archivo
ServerName localhost
Finalmente reiniciar el servidor
root@mylinux:~$ sudo /etc/init.d/apache2 restart
ANEXOS
configurar ip fija en ubuntu server
sudo nano /etc/network/interfaces
auto eth0 (o la que corresponda)
iface eth0 inet static
address xxx.xxx.xxx.xxx (la ip que quieras que tenga)
netmask xxx.xxx.xxx.xxx (la mascara de red que nececitas)
gateway xxx.xxx.xxx.xxx (si estas atras de un router o un firewall)
despues tiras desde consola /etc/init.d/networking restart y listoooooo
para confirmar pones en la consola ifconfig eth0 y te deberia de
haber cambiado todo.
Cada vez que reinicies, los datos los va a tomar de
/etc/network/interfaces asique no vas a tener que tocarle nada mas.
Activar root en ubuntu
sudo passwd root