Actividad 1
Transcription
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