Esto es casi una nota mental
sudo nano /etc/default/tomcat7
Esto es casi una nota mental
sudo nano /etc/default/tomcat7
La idea es simple, las aplicaciones Tomcat corren por lo general en el puerto 8080, y seria mas elegante si pudiéramos servir esta app desde apache por el puerto 80. Vamos a ello.
Crea un nuevo virtualhost:
<virtualhost *:80>
ServerName youtrack.ecapy.com
ProxyPreserveHost On
ProxyRequests Off
<proxy *>
Order deny,allow
Allow from all
</proxy>
ProxyPass /youtrack ajp://localhost:8080/youtrack
ProxyPassReverse /youtrack ajp://localhost:8080/youtrack
RewriteEngine On
RewriteRule ^/$ "http://youtrack.ecapy.com/youtrack" [L]
ErrorLog /var/log/apache2/yt-error.log
CustomLog /var/log/apache2/yt-access.log common
</virtualhost>
En este ejemplo, lo he configurado para que youtrack sea accedido mediante youtrack.ecapy.com.
Los últimos dos pasos son habilitar el modulo ajp que es el modulo que usa apache para hablar con tomcat:
sudo a2enmod proxy_ajp
Y reiniciamos apache:
sudo service apache2 restart
Chau!
Aparentemente a la gente de tomcat se les ha olvidado actualizar la documentacion que muestra en la página index que ofrece por defecto:
Por lo que si las seguís, va a ser imposible que accedas al “manager webapp”. Aprovecho para felicitar a los maestros de Tomcat, que un error así no es nada a comparación del pedazo de soft que nos dan sin pedir ni una moneda
Vamos a solucionar este problemita:
Edita el archivo /etc/tomcat7/tomcat-users.xml y agrega estas lineas dentro del tag <tomcat-users></tomcat-users>:
<role rolename="manager-gui"></role>
<user username="miusuario" password="mipassword" roles="manager-gui"></user>
No olvides de poner el usuario y clave que quieras.
Listo, saludos.
Aclaraciones:
Este tutorial asume que tienen instalado Java 7 y tomcat 7. Si tienen las versiones 6 le cambian el numero donde sea oportuno y funciona.
Vamos a ello:
Cuando tengas en tus manos el paquete se Solr, descomprimelo y ponte con la consola dentro de esa carpeta.
Cambia a sudo:
sudo su
Curiosidad: Aunque en el paquete que descargamos de Apache Solr haya al rededor de 2950 archivos solo nos van a hacer falta al rededor de 10:
Lanzamos en consola lo siguiente:
cp dist/solr-*.war /var/lib/tomcat7/webapps/solr.war
mkdir /var/lib/tomcat7/solr
cp -R example/multicore/core0/ /var/lib/tomcat7/solr/core0
mkdir /var/lib/tomcat7/solr/core0/data
chown -R tomcat7:tomcat7 /var/lib/tomcat7/solr
mkdir /var/lib/tomcat7/lib
cp dist/solrj-lib/* /var/lib/tomcat7/lib
Ahora edita /var/lib/tomcat7/solr/solr.xml, pega lo siguiente y guárdalo.
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true" sharedLib="lib">
<cores adminPath="/admin/cores">
<core name="core0" instanceDir="core0">
<property name="dataDir" value="/var/lib/tomcat7/solr/core0/data"></property>
</core>
</cores>
</solr>
Edita /etc/tomcat7/Catalina/localhost/solr.xml, pega lo siguiente y guárdalo.
<?xml version="1.0" encoding="UTF-8" ?>
<context docBase="/var/lib/tomcat7/webapps/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true">
<environment name="solr/home" type="java.lang.String" value="/var/lib/tomcat7/solr" override="true"></environment>
</context>
Listo, reiniciemos tomcat para ver en funcionamiento el core que hemos creado:
service tomcat7 restart
Entramos en http://localhost:8080/solr/ y lo vamos a ver.
Bueno ya tenemos un Solr con un core, pero tiene poco sentido montar un Solr de multicores que tenga un solo core, así que vamos a crear uno mas.
Para este nuevo core (y todos los que quieras crear) hay que hacer dos cosas:
1: copiar la carpeta core0 junto a su owner para ahorrarnos de andar creando la misma estructura:
cp -Rp /var/lib/tomcat7/solr/core0 /var/lib/tomcat7/solr/producto
NOTA: No olvides editar /var/lib/tomcat7/solr/producto/conf/schema.xml y /var/lib/tomcat7/solr/producto/conf/solrconfig.xml para ajustar sus parámetros.
2: actualizar /var/lib/tomcat7/solr/solr.xml agregandole un nuevo tag con lo siguiente:
<core name="producto" instanceDir="producto">
<property name="dataDir" value="/var/lib/tomcat7/solr/producto/data"></property>
</core>
Reinicia tomcat y ya tenes otro core.
Suerte y saludos.
Si instalaste un Apache Solr y lo estas usando por medio de Drupal 6, otro CMS o una propia implementación, seguramente no te interese que dicho servicio se pueda acceder por medio del puerto 8080 (o el puerto asignado en tu servidor para Tomcat).
Bueno, un ejemplo es mucho mas claro que casos hipotéticos, así que les planteo mi necesidad:
Tengo un Ubuntu con un Drupal configurado con el modulo “apachesolr” que se conecta a localhost en el puerto 8080. Hasta ahí todo normal, el problema es que si a alguien se le ocurre tipear la URL de mi pagina montada en Drupal pero por el puerto 8080… va a poder ver Tomcat, y lo que es mas peligroso, Apache Solr y su administrador (Solr carece de mecanismos de seguridad porque los delega a Tomcat).
Bueno en el ejemplo que comente antes tenemos una solución ideal: Capar el puerto 8080 para que solo se pueda acceder por “localhost”.
Para lograr nuestro cometido solamente tenemos que editar un XML: “server.xml“:
sudo gedit /etc/tomcat6/server.xml
Busca la linea:
<connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"></connector>
Comentarla:
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
Y poner por dejado de la linea anterior lo siguiente:
<connector port="8080"
address="127.0.0.1"
maxHttpHeaderSize="8192"
maxThreads="15"
minSpareThreads="2"
maxSpareThreads="7"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
compression="on"
compressionMinSize="0"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"></connector>
Guarda los cambios y reinicia Tomcat:
sudo service tomcat6 restart
Gualá. Comprobemos que haya funcionado:
Primero mira cual es la ip que tiene tu servidor haciéndole ping:
Usa “ifconfig” para ver la ip, que seguramente tenga la pinta “192.168.1.xxx” o “10.0.2.xx”
bien, ahora suponiendo que seguis en Ubuntu (es mi ejemplo y uso Ubuntu ) abri un navegador y proba a acceder a:
http://localhost:8080
y a:
http://192.168.1.xxx:8080 (las xxx reemplazalas por el resto de tu IP).
Como pudiste ver, podes acceder a localhost pero no por medio de la IP, incluso si probas a acceder a esa IP desde otra maquina/ordenador/PC/ipad/ipod/android/o-lo-que-sea XD
Hemos acabado.