Spanish Virtual Observatory

Projects/Astronomical_Data_Centres/Publishing/FAQ1

  • Question. David Montes (4 abril 2014)

He visto que al tener conectado el tomcat7 con el portátil conectado a la red de aquí 
que tiene puesto un nombre (macoolx.fis.ucm.es) y una IP fija se podía entrar 
tanto localmente:


como desde cualquier otro ordenador como:

http://macoolx.fis.ucm.es:8080/UCMcoolstars/

y se podia entrar tanto a la pagina de búsqueda como a la privada sin ningún passwd.
He desconectado el tomcat para que esto no ocurra,
pero entonces ya no puedo seguir haciendo pruebas a no ser que desconecte la red del portátil.

Estaría muy bien saber como tengo que configurar el Apache para enlazarlo con el Apache tomcat7 
y que la parte privada fuera realmente privada
y poder poner todo esto en otro ordenador distinto a mi portátil que seria el que funcionaria como servidor 
y sobre el que podría continuar haciendo las pruebas…
 
  • Answer. José Manuel Alacid (4 abril 2014)

El tema de configuración del servidor depende del sistema operativo que uses, pero te explico como lo he hecho yo en linux, y no debería de ser muy diferente, igual cambian los paths donde está instalado tomcat y apache.

Para empezar tendrías que tener instalado tomcat y apache, recomendable si es tomcat7 y apache2.

Habría que descargarse el módulo "mod_jk", que es el que hace que Apache redirija las conexiones a Tomcat, puedes encontrarlo aquí
http://tomcat.apache.org/download-connectors.cgi

Entramos en el fichero de configuración de tomcat7 (/etc/tomcat7/server.xml), y descomentamos lo siguiente (es decir quitar "<!--" y "-->" que le rodea)

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Creamos un fichero workers.properties en el path /etc/apache2/ (o el path que corresponda a apache2)
Y en este fichero escribimos:

# Definir un worker usando ajp13  worker.list=worker1  # Definir las propiedades del worker (ajp13)  worker.worker1.type=ajp13  worker.worker1.host=localhost worker.worker1.port=8009

Modificamos el fichero /etc/apache2/mods-available/jk.conf, y buscamos la línea que empiece por JkWorkersFile, debería quedar como:

JkWorkersFile /etc/apache2/workers.properties  

Y por último, modificamos el fichero /etc/apache2/sites-enabled/000-default. antes de la línea "</VirtualHost *.80>" escribimos:

JkMount /project* worker1

donde "project" sería el nombre de nuestro proyecto, "UCMcoolstart" en tu caso.

Y finalmente reiniciamos tomcat y apache:

/etc/init.d/tomcat7 restart /etc/init.d/apache2 restart


si esto ha funcionado bien, deberías de poder entrar en tu proyecto sin indicar el puerto 8080, es decir con
http://localhost/UCMcoolstars/. Si no puedes acceder algo ha ido mal.

Para poner contraseña de acceso a la parte privada:

Habilitamos los módulos rewrite y ssl escribiendo dentro del directorio apache2:

sudo a2enmod rewrite sudo a2enmod ssl 


Entramos en el fichero /etc/apache2/sites-available/default-ssl y cambiamos el "<VirtualHost _default_:443>" por "<VirtualHost *:443>". Agregamos antes de "</VirtualHost>" la línea JkMount "/project* worker1" donde project es el nombre de tu proyecto (UCMcoolstart). Y escribimos detrás de algún "</Directory>" lo siguiente:

<Location /project/private>
        Options Indexes FollowSymLinks Multiviews
        Order allow, deny
        allow from all

        AuthName "PRIVATE ZONE"
        AuthType Basic
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
</Location>

Entramos en el fichero /etc/apache2/sites-available/default y después de "<VirtualHost *:80>" escribimos:

RewriteEngine on
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^.*/project/private/(.*)$
https://%{SERVER_NAME}/project/private/$1 [R,L]

Siempre cambiando project por el nombre de tu proyecto.

Creamos un enlace simbolico en /etc/apache2/sites-enabled llamado "default-ssl" que apunte a "/etc/apache2/sites_available/default-ssl". Esto en linux sería "ln -s /etc/apache2/sites_available/default-ssl /etc/apache2/sites_enabled/default-ssl"

Y por último vamos al directorio /etc/apache2 y creamos los usuarios que puedan acceder de la siguiente manera:
"htpasswd -c .htpasswd nombre_usuario" con nombre_usuario el nombre del usuario que queramos crear, y te pedirá una contraseña para este. Esto solo será la primera vez, después tendremos que quitar el -c, y hacer "htpasswd .htpasswd nombre_usuario"

Para terminar reiniciamos apache

/etc/init.d/apache2 restart

Y probamos a ver si todo ha ido bien y nos pide usuario y contraseña para acceder a la parte privada.