Actividad 1

Actividad 01
Windows Azure y Control de Versiones con SVN
Herramientas y Métodos de Ingeniería del Software. Universidad de Almería
Joaquín Cañadas. Curso 2014-15
Introducción.................................................................................................................................. 1
Términos de los pases académicos de Azure............................................................................... 3
Pasos a realizar en la sesión ......................................................................................................... 3
1.
Activación de la cuenta de Windows Azure ...................................................................... 3
2.
Creación de la máquina Ubuntu........................................................................................ 4
3.
Instalación del servidor Subversion .................................................................................. 4
4.
Installing Apache on Ubuntu: reverse proxy ..................................................................... 7
5.
Configuración y Administración de Collabnet SVN ........................................................... 9
6.
Ejercicios SVN .................................................................................................................. 13
7.
Despliegue de la HomePage ............................................................................................ 14
Introducción
Para gestionar adecuadamente los artefactos producidos durante el desarrollo de software y
sus versiones, así como para trabajar en equipo, necesitamos en un sistema de control de
versiones (SVN, GIT, TFS, etc). La nube nos ofrece recursos muy valiosos para esta tarea.
Esta práctica tiene como objetivos:
1. Activar la cuenta de Windows Azure para el equipo.
2. Crear una máquina virtual Ubuntu Server en Azure sobre la que instalaremos los
servicios necesarios, el primero será el servidor SVN.
3. Instalar y configurar un sistema de control de versiones Subversion para el equipo
en un servidor centralizado: Collabnet Subversion Edge. Este sistema lo usaremos
durante el resto de la asignatura.
4. Gestionar adecuadamente el servidor SVN:
 Crear usuarios y crear equipos
 Crear repositorios
 Asignar permisos de acceso, ...
5. Realizar unos ejemplos sencillos sobre el servidor SVN del equipo: para ello es
necesario usar un cliente adecuado al servidor que hayamos instalado, por
ejemplo, TortoiseSVN, Subversive en Eclipse, etc. Comenzaremos por los primeros
ejemplos son los vistos en clase.
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
1
Server 1 (Linux Ubuntu)
SVN, GitLab, Jenkins,
Tomcat,...
Software Eng. support
and teamwork Server
Server 2
SQL Azure
Web Apps
Testing or preproduction Server
Mobile Apps
Open ports: 22 (SSH); 80; 8080 (HTTP)
UAL Wifi for Students
Ad
Lab or Student’s Computers (PCs and Mac books)
La instalación del servidor SVN la realizaremos en un servidor virtual en la nube sobre el que
instalaremos esta y otras herramientas de soporte a las actividades de ingeniería del software.
Como servidor utilizaremos una máquina virtual en la cuenta Windows Azure del equipo, se
recomienda Linux Ubuntu Server, ya que todas las herramientas que vamos a usar utilizan
mejor los recursos en Linux que en Windows.
This figure describes de infrastructure and resources available for this course. Each team has:
-
a Windows Azure acamedic pass which provides, among others, 2 small compute
instances, to create two virtual machines in the cloud, and 35GB of extra storage.
Laptops for local work.
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
2
Términos de los pases académicos de Azure
http://azure.microsoft.com/en-us/offers/azure-pass/
- You receive Microsoft Azure monetary credits as entitled customers $100/month, 6 months.
- The choice is yours on how you use your Microsoft Azure credits. Use them on any Microsoft
Azure service including, Virtual Machines, Websites, Cloud Services, Mobile Services, Storage,
SQL Database, HDInsight, Media Services, and many more.
- Use up to your monthly Microsoft Azure credits at no charge.
- If you exceed your monthly credits, your service will be disabled for that month.
- Any unused monthly credits cannot be carried over to subsequent months and cannot be
transferred to other Azure subscriptions.
- You can choose to turn off your Spending Limit, and any usage each month in excess of the
monthly credits will be charged at the Pay-As-You-Go rates.
Pasos a realizar en la sesión
1. Activación de la cuenta de Windows Azure
Los pasos a realizar son:
1. Apuntarse a un equipo de prácticas (2 personas)
2. Crear una cuenta Microsoft (live.com) para el equipo de prácticas.
3. Seguir los pasos de activación de la cuenta de Windows Azure indicados en el
documento que encontrareis en el foro del equipo de prácticas “Getting_StartedWindows_Azure_Platform_Academic_Pass.pptx”.
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
3
During the Azure registration process, enter the information related to the University
of Almería:
First Name: TeamXX
Last Name: HMIS
Email: your new Microsoft account
Company Name: University of Almeria
Zip Code: 04120
Check your email in order to read the activation email. It last no more than 5 minutes.
After that, log in to https://manage.windowsazure.com/
2. Creación de la máquina Ubuntu
4.
Crear un servidor virtual Linux Ubuntu Server para el Servidor de soporte IS. Para ello
hay que seguir los pasos indicados en http://www.windowsazure.com/es-es/
Windows Azure / Documentation / Virtual Machines / Linux
Create a virtual machine running Linux
5. Para poder acceder a la máquina Linux habrá que usar la aplicación Putty. Se explica
con detalle aquí: How to log on to a virtual machine running Windows Server
6. Crear los usuarios en la máquina Linux, uno para cada miembro del equipo, y otro para
el profesor.
7. Si se desea mayor seguridad usar parejas de claves SSH en lugar de login/password
ENTREGA: Enviar un mensaje en el foro privado del equipo con
Name of the Linux virtual machine: _________.cloudapp.net
Professor credentials: username and password.
3. Instalación del servidor Subversion
http://www.collab.net/downloads/subversion
La instalación de Collabnet Subversion Edge sobre Ubuntu en Azure se puede realizar
siguiendo los pasos que se indican en el enlace a continuación. Como requisito será necesario
tener instalado JDK, se recomienda OpenJDK, y Python.
http://www.collab.net/lightbox/download_info/61/34
Descargar Collabnet del siguiente enlace:
wget https://downloads-guests.open.collab.net/files/documents/61/10489/CollabNetSubversionEdge-
--> Actualizado 2015!
Extraerlo a la carpeta /opt/ mediante el commando
4.0.13_linux-x86_64.tar.gz
cd /opt
sudo tar -zxvf /home/youruser/yourfile.tar.gz
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
4
Install Java: Open JDK
sudo apt-get install openjdk-7-jdk
Install Python:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.7
How to set JAVA_HOME for OpenJDK?
http://askubuntu.com/questions/175514/how-to-set-java-home-for-openjdk
Open /etc/environment in any text editor like nano or gedit and add the following
JAVA_HOME="/usr/lib/jvm/open-jdk" (java path could be different)
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64”  este es el path para OpenJDK
After that, close Putty session and enter again.
Cambiar permisos a la carpeta /opt/csvn:
sudo chown
-R $USER:$USER /opt/csvn/
La variable $USER tomará el valor del usuario con el cual actualmente estás identificado.
Install the application so that it will start automatically when the server restarts
$ cd /opt/csvn
$ sudo -E bin/csvn install
Comprobar que el usuario con permisos en la carpeta csvn (dados antes con chown) es el
mismo que aparece en el archivo data/conf/csvn.conf en la variable RUN_AS_USER.
Start the server. Be sure that you are logged in as your own use rid and not running as root.
This will take a few minutes.
$ bin/csvn start
Apertura de puertos en Windows Azure
Tras el paso 5 de la instalación, csvn start, mientras se carga el servidor, será necesario
abrir los puertos 3343 y el 9090 en Azure (ver EXTREMOS de la máquina virtual)
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
5
Agregar
Finalmente, debemos poder entrar en la administración de Collabnet Subversion Edge:
Attention!!
When using the UAL Wifi,
only ports 22, 80, 443
and 8080 are available to
connect in machines
outside the UAL !!
We need to connect to
ports 3343 and 9090 !!
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
6
Alternativamente se puede usar
nginx, como se propone después!
4. Installing Apache on Ubuntu: reverse proxy
Proxy inverso con Apache2
sudo apt-get install apache2
Apache2 is installed on the following path: /etc/apache2/
Configuring Apache2
Historically the main Apache2 configuration file is httpd.conf
However,
in
Ubuntu
14.04
the
Apache
configuration
resides
in
/etc/apache2/apache2.conf and all options modified by users should go into a new
*.conf-file inside /etc/apache2/conf-enabled/. This method should be "updatesafe", as httpd.conf or apache2.conf may get overwritten on the next server update.
This is implemented inside /etc/apache2/apache2.conf, you will find the following
line, which includes those files:
# Include the virtual host configurations:
IncludeOptional conf-enabled/*.conf
Adding virtual host and reverse proxy to Apache2
We need to install two paths in reverse proxy configuration, to enable Collabnet
Subversion administration tool (port 3343) and SVN server (port 9090) to be available
on port 80. First, we install the mod_proxy Apache2 module.
sudo apt-get install libapache2-mod-proxy-html
sudo apt-get install libxml2-dev
sudo a2enmod proxy proxy_http
sudo /etc/init.d/apache2 restart
Then, create a new file with the virtualHost configuration:
sudo nano /etc/apache2/conf-enabled/virtualHosts.conf
<VirtualHost *:80>
ProxyRequests
off
ProxyPass /csvn http://localhost:3343/csvn
ProxyPassReverse /csvn http://localhost:3343/csvn
ProxyPass /svn http://localhost:9090/svn
ProxyPassReverse /svn http://localhost:9090/svn
</VirtualHost>
Save the file, and restart Apache2:
sudo /etc/init.d/apache2 restart
Refs: https://www.digitalocean.com/community/tutorials/como-configurar-virtual-host-de-apache-en-ubuntu-14-04-lts-es
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
7
Proxy inverso con Nginx
# <- esto quiere decir que el comando hay que ejecutarse como root, o con sudo.
# apt-get install nginx
# nano /etc/nginx/sites-enabled/default
Borrar todo el contenido del archivo, y poner lo siguiente, editando el nombre de máquina por
el vuestro:
server {
listen 80 default_server;
root /usr/share/nginx/html;
index index.html index.htm;
server_name NOMBRE DE VUESTA MÁQUINA.cloudapp.net;
location / {
try_files $uri $uri/ =404;
}
location /csvn {
proxy_pass http://127.0.0.1:3343/csvn;
}
location /svn {
proxy_pass http://127.0.0.1:9090/svn;
}
}
Finalmente, ejecutar nginx:
# service nginx start
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
8
5. Configuración y Administración de Collabnet SVN
Wizard de configuración. Cambiar el nombre del servidor (y el Puerto si no es 9090)
Crear usuarios
Un usuario para cada miembro del equipo, y otro para el profesor
En caso de duda, consultar la ayuda:
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
9
Crear repositorios
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
10
Hay que crear un repositorio para cada miembro del equipo sobre el que se ejecutarán los
ejemplos sencillos y otro repositorio para el proyecto de homepage del equipo.
Asignar permisos de acceso
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
11
Se pueden crear grupos de usuarios para asignar permisos de acceso (lectura y escritura) a los
repositorios, tantos grupos como se deseen en el bloque [groups]
Tras ello, se asignan permisos a cada repositorio:
[/] hace referencia a la carpeta raíz donde cuelgan todos los repositorios. Lo adecuado para
esa carpeta es dar permiso al grupo de administradores, y denegar acceso al resto.
[repo1:/] hacer referencia a la raíz del repositorio 1. Con @nombreGrupo se asignan permisos
de acceso a los miembros del grupo (r: read, w: write, rw: read&write)
A continuación se muestra un ejemplo de archivo de configuración:
## Grupos
[groups]
Admin_User_Group = admin,joaquin
users = usuario1, usuario2
## Repositorios
[/]
@Admin_User_Group = rw
* =
[hmisrepo01:/]
@users = rw
[hmisrepo03:/]
@users = rw
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
12
6. Ejercicios SVN
Se pide:
1) Resolver de forma individual (cada miembro del equipo en su repositorio) los ejemplos
básicos vistos en el aula de GD: simples y con ramas.
2) Crear un proyecto HomePage del equipo, sincronizado con un repositorio SVN, para la
página Web estática del grupo. La HomePage debe tener por ahora, al menos 3 páginas:
1. Principal: nombre del equipo, número de equipo, links a las herramientas instaladas
(Collabnet y SVN)
2. Miembros del equipo: una página por miembro del equipo, que incluya nombre y foto
(o nick y avatar)
3. Links: Repositorio de HMIS, documentación oficial Azure,
documentación oficial CollabNet SVN,
documentación SVN (SVN book: http://svnbook.red-bean.com/en/1.7/), etc, etc
La página debe ser creada de forma colaborativa, cada miembro del equipo debe hacer una
parte del trabajo, y sincronizar los archivos locales con el repositorio SVN de nombre
“homepage” en vuestro servidor.
Se deben incrustar las imágenes disponibles en el repositorio de la asignatura
http://sauce.ual.es:9090/svn/hmis2014/trunk/GT/A01/logoual/. Para ello, utilizar la propiedad
“externals” sobre el repositorio HomePage.
Una vez terminada la Homepage del equipo, desplegarla como página principal en vuestro
servidor Apache que se está ejecutando en el puerto 80 del servidor Linux. Para ello, usar el
comando de consola svn para hacer un checkout como es explica a continuación.
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
13
7. Despliegue de la HomePage
El despliegue de la Homepage en vuestro servidor se realiza copiando los archivos de la
HomePage en la ruta raiz (DocumentRoot) del servidor que se esté ejecutando en el puerto 80
(Apache2 o Nginx). En Apache2, el documentRoot predeterminado es /var/www. Para copiar
la homepage en ese path, debéis hacer checkout desde vuestro repositorio Homepage,
mediante el comando:
sudo svn co URLdelRepo /var/www --username=miusuario
Os recomiendo que antes probéis en otra carpeta, por ejemplo /home/miusuario, y verifiqueis
que el checkout se está haciendo correctamente:
svn co URLdelRepo /home/miusuario --username=miusuario
Tras ello, haced el checkout en la ruta "buena". Después, simplemente con el navegador
conectad a vuestro servidor y debería visualizar vuestra homepage.
Si no se visualizan vuestros archivos, probad el comando:
sudo tail /var/log/apache2/error.log
In order to find out exact path that Apache tries to find.
En mi caso, mi servidor Apache busca en la ruta /etc/apache2/htdocs, por lo que el checkout
lo he tenido que hacer en esa otra ruta.
Para los que useis Nginx tendreis una carpeta DocumentRoot diferente, pero el proceso es el
mismo.
En el servidor del profesor, estarán enlazadas las páginas principales de todos los equipos...
algo así:
Doc: Windows Azure y Control de Versiones con SVN (v.1.51)
14