<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nemediano &#187; apache</title>
	<atom:link href="http://www.nemediano.com.mx/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nemediano.com.mx</link>
	<description>Reflexiones de un espiritu curioso</description>
	<lastBuildDate>Fri, 16 Jul 2010 22:07:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Poniendo un entorno de desarrollo Java en Ubuntu</title>
		<link>http://www.nemediano.com.mx/2008/poniendo-un-entorno-de-desarrollo-java-en-ubuntu/</link>
		<comments>http://www.nemediano.com.mx/2008/poniendo-un-entorno-de-desarrollo-java-en-ubuntu/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 01:12:28 +0000</pubDate>
		<dc:creator>nemediano</dc:creator>
				<category><![CDATA[Acerca de mi]]></category>
		<category><![CDATA[Computación]]></category>
		<category><![CDATA[Recetario de Ubuntu]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.nemediano.com.mx/2008/poniendo-un-entorno-de-desarrollo-java-en-ubuntu/</guid>
		<description><![CDATA[En el posgrado, en la clase de Programación Avanzada muy para mi desagrado nos han obligado a programar en Java. Aunque la clase pinta ser bastante interesante, por que ha tomado un poco el tinte de cátedra, no pude evitar mi decepción cuando nos dijeron que el curso giraría en torno al desarrollo en Java. [...]]]></description>
			<content:encoded><![CDATA[<p>En el <a href="http://www.mcc.unam.mx/" target="_blank">posgrado</a>, en la clase de <a href="http://hp.fciencias.unam.mx/~alg/pAvz/" target="_blank">Programación Avanzada</a> muy para mi desagrado nos han obligado a programar en Java.</p>
<p>Aunque la clase pinta ser bastante interesante, por que ha tomado un poco el tinte de cátedra, no pude evitar mi decepción cuando nos dijeron que el curso giraría en torno al desarrollo en Java.</p>
<p>El primer profesor es la <a href="http://hp.fciencias.unam.mx/~alg/" target="_blank">Dra. Amparo Lopez</a>, su clase ha sido un poco aburrida para mi, por que ella misma admitió que seria un curso introductorio y que los que ya supiéramos programar en Java podríamos saltarnos su parte de la cátedra, (vía un proyecto en Java).</p>
<p>Como he decidido quedarme, y se que para las demás partes de la cátedra sera importante tener un entorno de desarrollo completo en Java he decidido escribir este post.</p>
<p>Este post debería de servirle a cualquier estudiante que quiera (o tenga) que aprender java</p>
<p><span id="more-67"></span></p>
<h2>¿Que es lo que entiendo por entorno de desarrollo Java?</h2>
<p>Queremos tener un compilado Java, para esto usar el JDK de <strong>sun</strong>, es decir <strong>no queremos</strong> la alternativa libre.</p>
<p>Queremos tener un IDE muy eficiente. Para esto usaremos <a href="http://www.eclipse.org/" target="_blank">eclipse</a>, por ser software libre y por ser a mi juicio y el de muchas personas que conozco, el mejor IDE para desarrollar en Java (propietarios incluidos).</p>
<p>Queremos un servidor/contenedor de <a href="http://en.wikipedia.org/wiki/Java_Servlet" target="_blank">servlets</a> y <a href="http://en.wikipedia.org/wiki/JavaServer_Pages" target="_blank">JSP&#8217;s</a>, para esto utilizaremos uno de los mejores: <a href="http://tomcat.apache.org/" target="_blank">apache tomcat</a> por aquello de que también es software libre.</p>
<p>En resumen:</p>
<ul>
<li>JDK de sun (vía repositorios).</li>
<li>Eclipse EE para desarrollo en Java (descargado del web).</li>
<li>Servidor Web Tomcat (descargado del web).</li>
</ul>
<h2>De donde partimos</h2>
<p>Hago las siguientes suposiciones:</p>
<p>Que tienes ya instalado Ubuntu (Yo estoy probando en 8.04, pero pienso que puedes adaptar estos pasos a tus necesidades fácilmente).</p>
<p>Que vamos a levantar Tomcat no como servicio, si no <strong>dentro de Eclipse</strong>, y por el puerto <strong>8080</strong>, esto con el fin de que si ya tenemos otro servidor web (por ejemplo un <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank">LAMP</a>) no tengan conflictos. Y además si es un entorno de desarrollo, probablemente tengas un servidor dedicado en algún otro lado.</p>
<p>Asumimos que <strong>no tenemos</strong> instalado el Eclipse de los repositorios. Por que al instalarlo también instala el java libre y lo usara en vez de usar el de sun.</p>
<p><strong>Advertencia:</strong> Considero que eclipse es el mejor IDE de Java, pero eso no quiere decir que sea ligero, no recomiendo instalarlo en maquinas de menos de 512MB de RAM y al menos otro tanto de swap</p>
<h2>Instalando Java JDK de Sun</h2>
<p>Este es el único paquete que nos traeremos de los repositorios, por su sencillez y que no esta tan atrasado respecto a las versiones disponibles del web. Además así nos evitamos setear un montón de variables de entorno manualmente. Así que instalamos ya sea vía apt o synaptic los siguientes paquetes:</p>
<ul>
<li>sun-java6-bin</li>
<li>sun-java6-demo</li>
<li>sun-java6-jdk</li>
<li>sun-java6-jre</li>
<li>sun-java6-doc</li>
</ul>
<p>El paquete sun-java6-doc es opcional si queremos tener la documentación. Desgraciadamente este es un metapaquete que no contiene la documentación. Así que si deseamos instalarlo, tendremos que ir a la <a href="http://java.sun.com/javase/downloads/index.jsp#docs" target="_blank">pagina de sun</a>, descargar la documentación de java, una archivo llamado <em>jdk-6-doc.zip</em>, luego cambiarle de dueño a root, y moverlo a /tmp. Después decirle a synaptic o apt que instalen el paquete.</p>
<p>Asumiendo que estamos parados en donde esta el archivo descargado:</p>
<p><code>sudo chown root:root jdk-6-doc.zip<br />
mv jdk-6-doc.zip /tmp<br />
sudo apt-get install sun-java6-doc</code></p>
<h2>Instalamos Eclipse</h2>
<p>Lo descargamos del <a href="http://www.eclipse.org/downloads/" target="_blank">sitio oficial</a>, queremos la versión que dice: <em>Eclipse IDE for Java EE Developers</em> por que es el mas completo para nuestros propósitos.</p>
<p>Podríamos usar cualquier otro y después instalarle los paquetes adicionales que nos hagan falta, pero ¿Para que molestarnos? Si podemos descargar uno que ya viene listo para usarse con Java.</p>
<p>Una vez que lo descarguemos, solo hace falta descomprimirlo en algún lado, lo mas recomendable es ponerlo en alguna carpeta usada comúnmente para guardar programas, yo ocupe /opt pero también podría funcionar /usr/local por aquello de la buena educación.</p>
<p>Supongamos que estamos parados donde se hizo la descarga:</p>
<p><code>tar -xzvf eclipse-jee-ganymede-linux-gtk.tar.gz<br />
sudo mv eclipse/ /opt</code></p>
<p>Ahora sólo nos hace falta crear un lanzador para usar Eclipse, asumiedo que usamos Gnome, vamos a <em>Sistema -&gt; Preferencias -&gt; Menú Principal</em>. Se abrira <strong>alacarte</strong> seleccionamos un el menú donde queremos crear el lanzador, un buen lugar es <strong>Programación</strong>, y de ahi le damos <strong>Elemento nuevo</strong>.</p>
<p>Llenamos los datos que nos piden: el tipo es Aplicación, el nombre Eclipse, en comando le damos examinar y buscamos el ejecutable se llama <strong>eclipse</strong>, y esta dentro de <em>la carpeta eclipse.</em>. El eclipse EE para java al parecer viene sin icono, puedes buscar alguno en la web, <a title="Icono de Eclipse" href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/icon.png" target="_blank">aqui</a> pongo uno por si te sirve.</p>
<p>Un pantallazo de la de como le hize yo:</p>
<p><a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/propiedades-del-lanzador.png"><img class="alignnone size-thumbnail wp-image-70" title="propiedades-del-lanzador" src="http://www.nemediano.com.mx/wp-content/uploads/2008/09/propiedades-del-lanzador-150x150.png" alt="" width="150" height="150" /></a></p>
<h2>Instalando Apache Tomcat</h2>
<p>Primero vamos al <a href="http://tomcat.apache.org/" target="_blank">sitio de Apache tomcat</a>, y de ahí descargamos la ultima versión, cuando escribí esto era la rama 6.x la versión 6.0.18 y de ahí descargamos la distribución .tar.gz. (en realidad cualquiera hubiera servido, pues son multiplataforma, pero por costumbre en Linux el usamos la que viene compresa .gz).</p>
<p>Ahora descomprimimos tomcat y lo movemos a algún directorio apropiado, de nuevo yo uso /opt.</p>
<p><code>tar -xzvf apache-tomcat-6.0.18.tar.gz<br />
sudo mv apache-tomcat-6.0.18 /opt/apache-tomcat</code></p>
<p>Liiisto esa es la instalación de tomcat, si queremos probarlo, podemos ejecutar el archivo <strong>start.sh</strong> para arrancar Tomcat y <strong>shutdown.sh</strong> para detenerlo. Ambos viven en el directorio <strong>bin</strong>, dentro del directorio de Tomcat.</p>
<p><code>/opt/apache-tomcat/bin/startup.sh<br />
/opt/apache-tomcat/bin/shutdown.sh</code></p>
<p>Para probar podemos arrancar Tomcat y abrir nuestro navegador en el sitio http://localhost:8080, donde nos debe contestar Tomcat dándonos la bienvenida. Si quieres ver que hace, puedes navegar a Miscellaneous y de ahí ejecutar alguno de los JSP o de los Servlets que trae de ejemplo. También recomendaría editar el archivo $CATALINA_HOME/conf/tomcat-users.xml y añadir a un usuario con privilegios de administración para usar el manager.</p>
<p>Aquí hay un ejemplo de como hacer una edición básica del archivo: tomcat-users.xml</p>
<pre>&lt;?xml version='1.0' encoding='utf-8'?&gt;
&lt;tomcat-users&gt;
  &lt;role rolename="manager"/&gt;
  &lt;role rolename="admin"/&gt;
  &lt;user username="jorge" password="secreto" roles="admin,manager"/&gt;
&lt;/tomcat-users&gt;</pre>
<h2>Poniendo todo junto</h2>
<p>Ahora viene lo divertido, hay que decirle a Eclipse, donde esta Tomcat, esto tiene la enorme ventaja que así él podrá arrancarlo cuando lo use y pararlo cuando no. Es decir prácticamente administra él.</p>
<p>Primero ejecutamos eclipse, al lanzarlo por primera vez se ve una pantalla de bienvenida: En esta pantalla podemos leer la documentación y ver algunos tutoriales de eclipse, es muy recomendable leerlos en algún momento. Por ahora vamos directamente al <em>workbench</em>.</p>
<p><a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-java-eclipse-platform.png"><img class="alignnone size-thumbnail wp-image-73" title="pantallazo-java-eclipse-platform" src="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-java-eclipse-platform-150x150.png" alt="" width="150" height="150" /></a></p>
<p>En la parte superior del <em>workbench</em> el primer icono que encontramos de izquierda a derecha es el de <strong>New</strong>, lo presionamos y abre un submenu, ahí le damos la ultima opción la que dice <strong>Other</strong>.</p>
<p>Se abre una ventana pidiéndote que selecciones el asistente, buscamos en la carpeta de <strong>Servers</strong>, aquel que dice <strong>Server</strong> y le damos <strong>Next</strong></p>
<p><a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-new.png"><img class="alignnone size-thumbnail wp-image-74" title="pantallazo-new" src="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-new-150x150.png" alt="" width="150" height="150" /></a></p>
<p><strong>Una aclaración:</strong> eclipse solo puede tener un servidor de cada tipo y versión corriendo a la vez, así que si ya definiste algún servidor Tomcat 6.0 antes, no te dejará hacerlo de nuevo hasta que lo borres y lo vuelvas a crear (o cambies de workspace)</p>
<p>En la siguiente pantalla te pide que digas que tipo de Servidor seleccionas la carpeta de <strong>Apache</strong> y el servidor tipo <strong>Tomcat v6.0 Server</strong>, es importante también que le digas que el nombre del host es <strong>localhost</strong>. Y en el nombre del servidor le puedes poner lo que quieras el default esta bien.</p>
<p><a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-new-server.png"><img class="alignnone size-thumbnail wp-image-75" title="pantallazo-new-server" src="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-new-server-150x150.png" alt="" width="150" height="150" /></a></p>
<p>En donde dice <strong>Server Runtime enviroment</strong> le damos Add y se abre otro cuadro de dialogo, aquí lo importante es que le digamos donde esta instalado el Tomcat como se ve en la pantalla.</p>
<p><a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-new-server-runtime-environment.png"><img class="alignnone size-thumbnail wp-image-76" title="pantallazo-new-server-runtime-environment" src="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-new-server-runtime-environment-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Si todo esta bien le puedes dar <strong>Finish</strong> y se &#8220;crea&#8221; el Server dentro de eclipse.</p>
<h2>Probando la instalación</h2>
<p>Cada que quieras hacer un nuevo proyecto con JSP&#8217;s o Servlets, creas un nuevo proyecto de tipo <strong>Web</strong> y luego <strong>Dinamic Web Project</strong> y te fijas que el <strong>Target Runtime Enviroment</strong> sea el servidor que recién creamos.</p>
<p>Para efectos de prueba, puedes descargarte <a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/intro-app-eclipse.zip">este proyecto</a> de prueba, e intentar ejecutarlo. Desde el menú <strong>File</strong>, <strong>Import</strong>, <strong>General</strong>, <strong>Existing Proyect into Workspace</strong>, <strong>Select Archive File</strong> y seleccionar el zip recién descargado.</p>
<p>Una vez importado desde la pestaña de servers <strong>arrancas el Servidor Tomcat</strong>, luego navegas dentro del proyecto recién importando y le pides que te muestre el JSP de prueba debes ver algo parecido a esto:</p>
<p><a href="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-java-http-localhost8080-intro-hellojsp-eclipse-platform.png"><img class="alignnone size-thumbnail wp-image-77" title="pantallazo-java-http-localhost8080-intro-hellojsp-eclipse-platform" src="http://www.nemediano.com.mx/wp-content/uploads/2008/09/pantallazo-java-http-localhost8080-intro-hellojsp-eclipse-platform-150x150.png" alt="" width="150" height="150" /></a></p>
<h2>Mas información</h2>
<p>Este post fue escrito basándome un poco en el <a href="http://oreilly.com/catalog/9780596006419/" target="_blank">libro de Orelly</a>, un poco en la documentación del mismo eclipse y bastante en <a href="http://www.coreservlets.com/Apache-Tomcat-Tutorial/" target="_blank">este</a> sitio.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.nemediano.com.mx%2F2008%2Fponiendo-un-entorno-de-desarrollo-java-en-ubuntu%2F&amp;t=Poniendo%20un%20entorno%20de%20desarrollo%20Java%20en%20Ubuntu" id="facebook_share_icon_67" style="font-size:11px; line-height:13px; font-family:'lucida grande',tahoma,verdana,arial,sans-serif; text-decoration:none;"><img src="http://b.static.ak.fbcdn.net/images/share/facebook_share_icon.gif" alt="Share on Facebook" /></a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_67') || document.getElementById('facebook_share_icon_67') || document.getElementById('facebook_share_both_67') || document.getElementById('facebook_share_button_67');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_67') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://www.nemediano.com.mx/2008/poniendo-un-entorno-de-desarrollo-java-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Instalar SVN como modulo de Apache, con SSL y autentificación básica, en Ubuntu</title>
		<link>http://www.nemediano.com.mx/2007/instalar-svn-como-modulo-de-apache-con-ssl-y-autentificacion-basica-en-ubuntu/</link>
		<comments>http://www.nemediano.com.mx/2007/instalar-svn-como-modulo-de-apache-con-ssl-y-autentificacion-basica-en-ubuntu/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 22:04:04 +0000</pubDate>
		<dc:creator>nemediano</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Mis demonios]]></category>
		<category><![CDATA[Recetario de Ubuntu]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[instalar]]></category>
		<category><![CDATA[modulo]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://nemediano.wordpress.com/2007/12/19/instalar-svn-como-modulo-de-apache-con-ssl-y-autentificacion-basica-en-ubuntu/</guid>
		<description><![CDATA[Pues hace un rato que aprendimos a hacer este tipo de instalación en la Unidad y como se me hace algo útil, muy practico, y que a veces no es trivial de hacer, me decidí a escribir este tutorial. Estoy muy basado en el tutorial que escribió Viktor Zigo Suponemos que la instalación se va [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom:0;">Pues hace un rato que aprendimos a hacer este tipo de instalación en la Unidad y como se me hace algo útil, muy practico, y que a veces no es trivial de hacer, me decidí a escribir este tutorial. Estoy muy basado en el <a title="alephzarro" href="http://alephzarro.com/blog/2007/01/07/installation-of-subversion-on-ubuntu-with-apache-ssl-and-basicauth/" target="_blank">tutorial</a> que escribió <em><span style="font-style:normal;">Viktor Zigo</span></em></p>
<ul>
<li> Suponemos que la instalación se va a realizar en Ubuntu, esto significa que el servidor va a  vivir en Ubuntu.</li>
<li> Que queremos que los repositorios  sean visibles vía web, que el servidor web sea Apache de la 	rama 2.x (Subversión tiene su propio servidor, nosotros mejor 	ocuparemos Apache).</li>
<li> Que el protocolo para comunicarse  sea SSL, la información viaje encriptada (es decir que el URL  sea https://algo).</li>
<li> Que se podría hospedar mas de un repositorio.</li>
<li> Que para conectarse un usuario 	tenga que proporcionar un password.</li>
<li> Que tengamos políticas de acceso, es decir que no todos los usuarios puedan ver todas las carpetas, habrá algunos que puedan ver, otros que puedan escribir, y a cada carpeta le podemos poner diferentes atributos (permisos).</li>
</ul>
<p><span id="more-30"></span></p>
<p style="margin-bottom:0;">Cuando aprendimos a hacer esta instalación leímos el tutorial de Viktor Zigo, que esta libre bajo una licencia Creative Commons, sin embargo me decido a aumentar algunas cosas como la política de acceso, además dado que no hay mucha documentación en español sobre este tema, me imagino que este documento le ayudara a alguien.</p>
<h2 class="western">Paquetes necesarios</h2>
<p style="margin-bottom:0;">Hay que instalar, o verificar que estén instalados los siguientes paquetes:</p>
<ul>
<li> subversion</li>
<li> libapache2-svn</li>
<li> libapache-mod-dav</li>
<li> apache2</li>
</ul>
<p>En ubuntu 7.10 el paquete  libapache-mod-dav, no existe simplemente continuamos sin el pues mod-dav ya esta incluido en apache2</p>
<h2 class="western">Habilitar el modulo de SSL en apache</h2>
<p style="margin-bottom:0;">Para hacer este paso primero hay que habilitar el modulo de apache que deja comunicarse via SSL, luego hay que editar un archivo de configuración de apache para decirle que escuche por el puerto 443, que es el default de SSL</p>
<h3 class="western">Habilitar el modulo de apache2 de SVN</h3>
<p><code>sudo a2enmod ssl</code></p>
<h3 class="western">Editar el archivo de configuración /etc/apache2/ports.conf del apache.</h3>
<p style="margin-bottom:0;">Agregando al final la linea: “Listen 443”. Es decir deben haber dos lineas, la del 80 y la del 443</p>
<p style="margin-bottom:0;"><strong>Nota</strong> me acabo de dar cuenta de que en Ubuntu 7.10, no es necesaria la edición del archivo, pues el comando anterior a2enmod, <strong>ya edita</strong> el archivo por nosotros, lo que se debe de hacer es fijarnos en este archivo y que escuche el 443.</p>
<h2 class="western">Generar un certificado</h2>
<p style="margin-bottom:0;">Para hacer un certificado hay que ocupar una herramienta, desde Ubuntu Festy en adelante esta herramienta es: <strong>make-ssl-cert</strong>, antes de eso la herramienta era: apache2-ssl-certificate.</p>
<p style="margin-bottom:0;">Sea cual sea el caso, hay que hacer un certificado, el certificado es un archivo .pes y una llave, que es un archivo con números raros de nombre.</p>
<p style="margin-bottom:0;">Para hacer el certificado la herramienta nos hace algunas preguntas, como quienes somos, donde se ubica el servidor físicamente, a que organización pertenecemos, etc.</p>
<p style="margin-bottom:0;">Es importante usar el nombre real de nuestro servidor, cuando lo pida, por que de lo contrario cada vez que un usuario quiera acceder al repositorio, su cliente le marcara un warning diciendo que el servidor y el emisor del certificado no corresponden.</p>
<p style="margin-bottom:0;">Si el servidor va a ser accesible por un dominio, el dominio es el nombre del servidor, si va a ser accedido por una IP fija, la IP es el nombre del servidor, si va a ser accedido dentro de una red interna el nombre en la red de la maquina es el nombre del servidor.</p>
<p style="margin-bottom:0;">La herramienta debe generar ambos archivos el <em>apache.pem</em> y el de la llave, lo mas recomendable es que estos se encuentren en la carpeta ssl, dentro de la carpeta de apache. Puede que sea necesario que nosotros tengamos que mover los archivos manualmente.</p>
<p style="margin-bottom:0;">La herramienta antes de Festy 7.04 se usaba asi:</p>
<p><code>sudo apache2-ssl-certificate</code></p>
<p style="margin-bottom:0;">Desde Festy en adelante se usa así:</p>
<p><code>sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem</code></p>
<p style="margin-bottom:0;">En donde el primer argumento es el comando a invocar en este caso <em>make-ssl-cert</em>, el segundo es una plantilla de certificado en este caso se ubica en  /<em>usr/share/ssl-cert/ssleay.cnf</em>, y el tercero el lugar donde se pone el certificado /<em>etc/apache2/ssl/apache.pem</em>. Es decir que lo único que podría cambiar es el tercer argumento aunque no se recomienda. Es importante que <strong>antes</strong> se cree la carpeta donde va a vivir el certificado</p>
<h2 class="western">Crear un host virtual</h2>
<p style="margin-bottom:0;">En apache2 hay posibilidad de que un solo servidor maneje muchos sitios, lo mas recomendable es hacer un sitio aparte para nuestros repositorios de SVN.</p>
<p style="margin-bottom:0;">Copiamos el sitio de default, para ocuparlo de plantilla</p>
<p><code>sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/$NOMBRESITIO</code></p>
<p style="margin-bottom:0;">En donde $NOMBRESITIO, es el nombre que queremos que tenga nuestro sitio que maneja los repositorios. por ejemplo podemos ponerle repos.</p>
<h3>Editamos configuración del sitio</h3>
<p style="margin-bottom:0;">Abrimos con nuestro editor de textos plano favorito el recién creado archivo de configuración del sitio y lo editamos:</p>
<p style="margin-bottom:0;">Cambiamos la parte que dice:</p>
<p><code>NameVirtualHost *<br />
&lt;VirtualHost *&gt;</code></p>
<p style="margin-bottom:0;">Por:</p>
<p><code>NameVirtualHost *:443<br />
&lt;VirtualHost *:443&gt;</code></p>
<p style="margin-bottom:0;">Y añadimos las siguientes lineas:</p>
<p><code><br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.pem<br />
SSLProtocol all<br />
SSLCipherSuite HIGH:MEDIUM</code></p>
<p style="margin-bottom:0;">Dentro de las etiquetas <em>VirtualHost</em>, pero fuera de cualquier etiqueta <em>Directory</em></p>
<p style="margin-bottom:0;">Habilitamos el nuevo host virtual</p>
<p style="margin-bottom:0;">Primero le decimos a apache que ya hay un nuevo sitio</p>
<p><code>sudo a2ensite $NOMBRESITIO</code></p>
<p style="margin-bottom:0;">Y reiniciamos apache</p>
<p><code>sudo /etc/init.d/apache2 restart</code></p>
<p style="margin-bottom:0;">Si hubo errores al editar el archivo, ahora se quejara, corregimos hasta que apache arranque, si hay un warning de que no puede determinar el nombre de dominio calificado, es normal.</p>
<p style="margin-bottom:0;">Y se puede arreglar añadiendo ServerName $NOMBREDELSERVIDOR al archivo de configuración principal de apache: <em>/etc/apache2/apache2.conf</em> (el nombre del servidor es el nombre de la maquina que lo hospeda)</p>
<h2 class="western">Creando los repositorios:</h2>
<p style="margin-bottom:0;">Suponemos que queremos tener varios repositorios, creamos una carpeta donde ponerlos todos, un buen lugar para hacerlo es en: <em>/var/svn</em>, luego hacemos los repositorios y le cambiamos los permisos a los repositorios para que el usuario de apache (<em>www-data</em>), tenga total control sobre ellos.</p>
<p style="margin-bottom:0;">Por ejemplo:</p>
<p><code>sudo mkdir /var/svn<br />
sudo svnadmin create /var/svn/$REPOS<br />
sudo chown -R www-data:www-data /var/svn/$REPOS<br />
sudo chmod -R g+ws /var/svn/$REPOS</code></p>
<p style="margin-bottom:0;">Donde $REPOS, es el nombre del repositorio a crear, se pueden hacer varios repositorios. Que deberían vivir bajo la mima carpeta, en este caso <em>/var/svn</em>.</p>
<h2 class="western">Agregar usuarios al repositorio</h2>
<p style="margin-bottom:0;">Para que un usuario pueda consultar el repositorio, debe de tener un password, el encargado de hacer la validación sera Apache, y la manera como lo hará sera verificando que el usuario y el password, estén en un archivo de texto plano.</p>
<h3>Creando el archivo de password</h3>
<p style="margin-bottom:0;">Hay que ocupar la herramienta <strong>htpasswd</strong>, en versiones de Ubuntu anteriores a 7.04, la herramienta se llama htpasswd2, ambas son la misma herramienta, solo le quitaron el 2, en el nombre, así que es cuestión de usar el que nos corresponda.</p>
<p style="margin-bottom:0;">Ejemplo:</p>
<p><code>sudo htpasswd -c -m /etc/apache2/svn-auth-file $NOMBREUSUARIO</code></p>
<p style="margin-bottom:0;">En este momento nos preguntara cual va a ser el password del para el usuario $NOMBREDEUSUARIO y se crea el archivo de nombre <em>svn-auth-file</em>. El nombre del archivo puede ser cualquiera pero se sugiere algo que nos recuerde que son los passwords del svn, y puede vivir en cualquier lado, pero se recomienda que viva donde el apache lo hace.</p>
<p style="margin-bottom:0;">El modificador -c, es para que cree el archivo de passwords y el modificador -m para que encripte el password.</p>
<p style="margin-bottom:0;"><strong>Importante:</strong> Si queremos agregar un nuevo usuario usamos el comando <strong>sin</strong> el modificador -c y lo apuntamos al archivo que ya creamos, de esta manera los passwords de ambos usuarios están guardados en el mismo archivo. En nuestro ejemplo seria:</p>
<p><code>sudo htpasswd -m /etc/apache2/svn-auth-file $NOMBRENUEVOUSUARIO</code></p>
<h2 class="western">Agregando políticas de acceso</h2>
<p style="margin-bottom:0;">Vamos a hacer una archivo de control de acceso, lo mas simple es usar como plantilla alguno de los que viene en cualquier repositorio. Por ejemplo podemos ir al repositorio que acabamos de hacer y dentro de su directorio <em>conf</em>, hay un archivo de ejemplo: <em>authz</em></p>
<p style="margin-bottom:0;">Podemos tomar este archivo de ejemplo como plantilla. Y copiarlo al directorio de apache, cambiarle por los permisos adecuados y después editarlo con nuestras preferencias. Podemos ponerle cualquier nombre yo aquí lo llamo <em>svn-authz-file</em>.</p>
<p><code>sudo cp /var/svn/$REPOS/conf/authz /etc/apache2/svn-authz-file<br />
sudo chmod 644  /etc/apache2/svn-authz-file<br />
sudo gedit /etc/apache2/svn-authz-file</code></p>
<p style="margin-bottom:0;">Editar el archivo no es difícil y podemos ver que la plantilla ya trae un ejemplo con la sintaxis. Yo por ejemplo solo le agrego algo como esto:</p>
<p><code>[$REPOS:/]<br />
$NOMBREUSUARIO = rw<br />
$NOMBRENUEVOUSUARIO = r</code><br />
En donde $NOMBREUSUARIO puede leer y escribir el repositorio $REPOS y $NOMBRENUEVOUSUARIO solo puede leerlo.</p>
<h2>Poniendo todas las opciones de configuración a nuestro repositorio</h2>
<p style="margin-bottom:0;">Ahora solo resta decirle a apache que sirva de interfaz a nuestro repositorio con todas las opciones que le acabamos de dar.</p>
<p style="margin-bottom:0;">Para hacer esto editamos el archivo <em>dav_svn_conf</em> que se encuentra dentro de la carpeta <em>mods-available</em> del directorio de apache.</p>
<p><code>sudo gedit /etec/apache2/mods-available/dav_svn_conf</code></p>
<p style="margin-bottom:0;">Este archivo tiene de nuevo un ejemplo de llenado, cada repositorio tiene sus opciones dentro de las etiquetas <em>location</em>. Podemos repetir la que ya tiene por defecto y agregarle nuestras opciones.</p>
<p><code>&lt;Location /<strong>$REPOS</strong>&gt;<br />
DAV svn<br />
# our access control policy<br />
AuthzSVNAccessFile <strong>/etc/apache2/svn-authz-file</strong><br />
SVNPath "<strong>/var/svn/$REPOS</strong>"<br />
AuthType Basic<br />
AuthName "Subversion repository"<br />
AuthUserFile <strong>/etc/apache2/svn-auth-file</strong><br />
Require valid-user<br />
<strong>SSLRequireSSL</strong><br />
&lt;/Location&gt;</code></p>
<p style="margin-bottom:0;">De estas opciones debemos modificar dentro de la etiqueta de apertura de <em>location</em> el nombre de nuestro repositorio. En donde dice <strong>SVPath</strong> ponemos el lugar donde esta el repositorio. En la opción de  <em>AuthzSVNAccessFile</em> el archivo que creamos de políticas de control de acceso. Y en la opción de <em>AuthUserFile</em> el archivo donde están las contraseñas de los usuarios. No olvidemos añadir tambien la linea <strong>SSLRequireSSL</strong></p>
<h2>Reiniciamos apache</h2>
<p style="margin-bottom:0;">Por ultimo para que todos los cambios surtan efecto:</p>
<p><code>sudo /etc/init.d/apache2 restart</code></p>
<p style="margin-bottom:0;">Si algún archivo no quedo bien editado ahora se quejara, de no ser así podemos proceder a probarlo:</p>
<p style="margin-bottom:0;">Abrimos nuestro navegador web favorito y visitamos las dirección http://localhost/$REPOS y debe de contestarnos algo así como 403: Forbiden. Ahora visitamos el sitio http<strong>s</strong>://localhost/$REPOS y debe pedirnos usuario y contraseña, en caso de que la contraseña sea incorrecta o que el usuario que introducimos no tenga permiso de lectura sobre $REPOS volverá a contestarnos 403: Forbiden.</p>
<p style="margin-bottom:0;">Si el usuario se autentifica correctamente y tiene los permisos necesarios, debe mostrarnos el repositorio si aun no hemos hecho ningún import o commit, debe ser un repositorio vacío en la revisión 0.</p>
<p style="margin-bottom:0;">He probado que estos pasos funcionan en Ubuntu 6.10, 7.04 y 7.10</p>
<h2>Mas conocimientos</h2>
<p style="margin-bottom:0;">Recuerden que el mejor lugar para aprender mas de subversion es el <a href="http://svnbook.red-bean.com/">libro oficial</a>, que ademas es libre y existe una traducción al español.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.nemediano.com.mx%2F2007%2Finstalar-svn-como-modulo-de-apache-con-ssl-y-autentificacion-basica-en-ubuntu%2F&amp;t=Instalar%20SVN%20como%20modulo%20de%20Apache%2C%20con%20SSL%20y%20autentificaci%C3%B3n%20b%C3%A1sica%2C%20en%20Ubuntu" id="facebook_share_icon_30" style="font-size:11px; line-height:13px; font-family:'lucida grande',tahoma,verdana,arial,sans-serif; text-decoration:none;"><img src="http://b.static.ak.fbcdn.net/images/share/facebook_share_icon.gif" alt="Share on Facebook" /></a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_30') || document.getElementById('facebook_share_icon_30') || document.getElementById('facebook_share_both_30') || document.getElementById('facebook_share_button_30');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_30') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://www.nemediano.com.mx/2007/instalar-svn-como-modulo-de-apache-con-ssl-y-autentificacion-basica-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
