lunes, octubre 22, 2012

La madre que trajo a Tomcat, a Eclipse y a todos sus muertos

A lo mejor queréis hacer una página web. Porque mola. Está de moda y eso. A lo mejor pensáis que lo suyo es hacerla en Java, que es lo que se lleva ahora. Además, parece fácil.

NO.

NO LO ES.

Igual programarla no es tan complicado, depende de lo que queráis obtener, pero conseguir que el ordenador que vayáis a utilizar contenga todas las herramientas y cacharros varios para poder empezar es UN MALDITO INFIERNO. Por eso escribo este tutorial, porque lo he intentado y me han entrado tantas ganas de matar, que quiero poner aquí toda la información para que no le pase a más gente lo que a mí.

INCISO

Estoy muy cabreada. Me he pasado días intentando configurar esta maraña de programas, y cuando casi lo tenía, me he dado cuenta de que había borrado un programa esencial para llevar a cabo toda esta basura de proceso. Me dispongo a desinstalarlo todo y a volver a empezar. Estoy muy cabreada.

FIN DEL INCISO

Mi objetivo es hacer una página web en Java, desde un sistema operativo Linux (Mint, que viene a ser Ubuntu, al final) utilizando el entorno de desarrollo Eclipse.

Si hay tres o más palabras desconocidas para ti en el párrafo anterior, hay un listado de blogs maravillosos ahí abajo a la derecha para que puedas leer algo interesante y no mi cruzada personal contra esta instalación de las narices. Si aún así quieres aprender, bienvenido seas y puedes seguir leyendo.

Lo primero que hay que hacer es instalarse un servidor. Yo ya lo hice en su día, pero como la he liado en algún momento y aquí no funciona nada, lo vuelvo a hacer.

La página la voy a hacer en Java (asumo que tenéis Java ya instalado), así que el servidor que voy a instalar es Tomcat. Vamos al gestor de paquetes Synaptic y lo buscamos. Busco Tomcat 7, que es la última versión disponible.

Instalando Tomcat 7 a través de Synaptic

Si os da guerra la instalación por Synaptic (como me está pasando a mí ahora) podéis:

a) Buscar al que lleva la gestión de paquetes de Ubuntu y pegarle.
b) Buscar al creador de Tomcat y pegarle.
c) Realizar la instalación mediante el gestor de software.

La opción c es la más aburrida, pero la más eficaz, y desafortunadamente la única legal, así que vamos a buscar Tomcat 7 en el gestor de software:

Instalando Tomcat 7 a través del gestor de software

Esto va a tardar un rato. Lo suyo es que os vayáis a tomar un café, o a leer. Yo un café ahora no me voy a tomar, porque son las dos de la mañana, y tampoco quiero ponerme a leer, porque estoy leyendo 50 sombras de Grey y es una mierda. Voy a buscar otro libro.

...

O mejor me voy a dormir, que esto va para largo.

...

Resulta que a veces la instalación de Tomcat se atasca en el 12%, pero solo aparentemente. En realidad se sigue instalando. Qué bien. Si os pasa, salid del gestor y volved a entrar; con un poco de suerte pondrá que ya está instalado.

INCISO

He dormido y estoy de mejor humor. A ver cuánto tardo en cabrearme otra vez.

FIN DEL INCISO

¿Ya tenemos Tomcat? ¿Sí? Vamos a ver si funciona. Abrid un terminal y escribid:

sudo service tomcat7 start

Meted vuestra contraseña de administrador y no debería haber ningún problema. Ya tenéís el servidor arrancado. Una vez hecho esto, abrid un navegador y escribid:

localhost:8080

Debería aparecer un mensaje It works!:

It works! - Apache Tomcat 7

Igual no os hace falta nunca, pero, si quisiérais detener el servidor, la instrucción en consola es:

sudo service tomcat7 stop
 
Además, por consejo de la página que se nos acaba de mostrar, id a Synaptic e instalad:

Tomcat7-docs.
Tomcat7-examples.
Tomcat7-admin.

Instalando extras de Tomcat 7 a través de Synaptic

Ya tenéis Tomcat instalado y funcionando. Sigamos.

De la parte de bases de datos se encarga MySQL. Id a Synaptic otra vez:

Instalando MySQL mediante Synaptic

Marcad para instalar mysql-client, mysql-server y phpmyadmin. El resto, si no recuerdo mal, se instalarán por dependencia con éstos, pero si tenéis algún problema, instalad uno por uno todos los paquetes que hay marcados como instalados (cuadradito verde) en la captura previa. No cuento nada de MySQL porque yo ya lo tengo todo en funcionamiento y por tanto no puedo hacer un paso a paso decente, pero de eso sí hay tutoriales aceptables por ahí, en caso de que os hagan falta. Solo comento que para acceder a phpmyadmin hay que poner en el navegador

localhost/phpmyadmin

y que el nombre de usuario por defecto es root.

Vale, ahora toca instalar el entorno de desarrollo. Yo he optado por Eclipse, porque en todas partes lo ponían como la opción por defecto, pero leyendo más cosas por ahí he visto que todo se simplifica mucho si utilizáis Netbeans, así que a lo mejor estáis a tiempo de seguir un camino algo más fácil que éste. Yo sigo con Eclipse.

Entrad aquí y descargad Eclipse IDE for Java EE Developers. La versión que yo me he instalado se llama Juno.

Esto va a llevar un rato, buscad algo entretenido que hacer. Yo me voy a dar una ducha.

...

¿Está descargado Eclipse ya? Bien. Con la elegancia que me confiere el llevar una toalla enroscada en la cabeza, vamos a seguir con este asunto.

Extraed el contenido del paquete descargado y así aparecerá la carpeta de Eclipse. Dentro de la misma aparecerá el icono del programa como tal, y podremos lanzarlo haciendo doble clic en él.

Una vez dentro, hay que elegir una ruta para el workspace. Yo he modificado la que viene por defecto, creando una carpeta eclipseWorkspace dentro de la carpeta Workspaces que ya existe en mi sistema, pero vosotros podéis poner la que os apetezca, o dejar la que viene por defecto.

Ahora hay que decirle a Eclipse que va a tener que llevarse bien con Tomcat. Para ello hacemos lo siguiente:

INCISO

Tengo mil dudas acerca de si este paso es realmente necesario. He hecho unos cuantos experimentos y creo que os lo podéis saltar. Pero si luego no funciona nada, a mí no me lloréis. Yo recomiendo que lo hagáis, por si acaso.

FIN DEL INCISO

COMIENZO DEL PASO SUPUESTAMENTE PRESCINDIBLE

Clic en window/preferences/server/runtime environment/add.

Elegís la versión de Tomcat que hayáis instalado, en este caso, la 7. Además, hay que marcar la opción Create a new local server:

Crear un nuevo servidor local

Ahora le decimos cuál es la ruta de instalación de Tomcat. Esta información se encuentra en la página It works! de la que hablamos antes. La ruta que hay que proporcionar es:

usr/share/tomcat7


Clic en Finish, y ya tenemos a Eclipse al tanto de Tomcat.

El nuevo servidor aparecerá en la ventana Servidores, y podremos arrancarlo haciendo clic derecho, start (o por consola, como ya dijimos antes).

FIN DEL PASO SUPUESTAMENTE PRESCINDIBLE

Me voy a tomar un café y al cine a ver Looper, a ver si así se me olvida un poco que llevo todo el fin de semana encerrada con esta bazofia de instalación. Luego vuelvo.

...

Looper está bien. Si ignoramos las motos voladoras, me ha parecido una película muy digna. Sigamos.

Vamos a comprobar que todo funciona bien, y ya de paso aprendemos a crear un proyecto. Voy a utilizar unas instrucciones que he encontrado aquí y aquí (tendría que poner mil referencias más, pero ya ni sé dónde he mirado cada cosa).

Para crear un proyecto, haced clic en file/new/dynamic web project. Yo creo un dynamic web project porque no tengo intención de que mi web tenga solo contenido estático, pero vosotros echad un vistazo a los tipos de proyectos que hay, para crear el que mejor se adapte a lo que buscáis. También se puede crear un dynamic web project a través de file/new/project/web/Dynamic web project.

Dadle nombre al proyecto (al mío lo he llamado pruebaJuno), y podéis pulsar Finish. El nuevo proyecto se habrá creado dentro de nuestro workspace.

En la ventana Project Explorer, que se encuentra a la izquierda de Eclipse, debería estar el proyecto que acabáis de crear. Si hacéis clic en el más (+) asociado a su carpeta, veréis las carpetas que contiene. Ahora hay que hacer clic derecho en la carpeta Web Content y seleccionar New/JSP file. Llamadlo index.jsp y pulsad finish. Aparecerá algo así:

Creando index.jsp

Ahora seleccionad todo ese código que aparece en pantalla y sustituidlo por:

<html> <body>
Tu navegador es <%= request.getHeader("user-agent")
%> </body> </html&gt

A continuación tenéis dos opciones. La primera es que introduzcáis por consola el código que os voy a dar a continuación, cosa que servirá para solucionar errores que, con un poco de suerte, no vais a llegar a ver nunca. La segunda es que os hagáis los valientes y sigáis con la instalación ignorando dicho código, pensando que ya arreglaréis los errores cuando aparezcan. ÉSTA ES LA MALA. Tenéis que elegir la otra, no me vengáis con tonterías, que luego no funciona nada y hay dramas. Ya exploraréis vuestra vena friki otro día. Ahora mismo, abrid una consola para escribir lo siguiente (os recuerdo que en consola se puede pegar con ctrl + shift + v):

cd ~/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/
rm org.eclipse.jst.server.tomcat.core.prefs
rm org.eclipse.wst.server.core.prefs

Donde workspace es el nombre de vuestro workspace de Eclipse.

Esto soluciona un error que dice “Cannot create a server using the selected type”. Para otro error, el “Could not load the Tomcat server configuration at /usr/share/tomcat7/conf. The configuration may be corrupt or incomplete. /usr/share/tomcat7/conf/catalina.policy (No such file or directory)”, hay que poner:

cd /usr/share/tomcat7
sudo ln -s /var/lib/tomcat7/conf conf
sudo ln -s /etc/tomcat7/policy.d/03catalina.policy conf/catalina.policy
sudo ln -s /var/log/tomcat7 log
sudo chmod -R 777 /usr/share/tomcat7/conf

El segundo ln a mí me da un error:

ln: failed to create symbolic link `conf/catalina.policy': File exists

pero no parece dar más guerra asociada, así que si os surge este problema, no os preocupéis y seguid adelante.

Cerramos Eclipse y lo volvemos a abrir.

A continuación tenéis que asociar el proyecto que habéis creado al servidor.

Haced clic derecho en el interior de la ventana Servers. Clic en New/Server. Elegid Apache/Tomcat v7.0 Server y clic en Next.

Seleccionad vuestro proyecto de la ventana Available y añadidlo a la ventana Configured haciendo clic en Add:


Cuando esté añadido, terminad haciendo clic en Finish.

Haciendo clic derecho sobre el servidor que acabáis de añadir podréis ver la opción Start de la que ya hemos hablado hace un rato. Seleccionadla. Abrid vuestro navegador y escribid en la barra de direcciones:

localhost:8080/nombre-de-vuestro-programa

Debería aparecer esto:

La página recién creada funciona :D

¡Ya está! Tras horas de configuraciones y un principio de úlcera de estómago, ¡mi sistema ya está preparado para crear páginas web en Java! Espero que vuestros sistemas funcionen igual de bien, pero con menos horas de trabajo. Y espero también que conservéis la salud de vuestro estómago. Por pedir.


p.d. Gracias infinitas a toda la gente que se dedica a subir tutoriales por todo internet. Si no es por ellos, yo no configuro esto en la vida.

p.d.2 Si veis errores, avisad.

37 comentarios:

  1. Eso te pasa por querer programar en Java... ¡con lo majo (y sencillo) que es PHP...

    ResponderEliminar
  2. Todo el mundo sabe que Eclipse es Dios y nosotros sus humildes servidores :)

    ResponderEliminar
    Respuestas
    1. Odio Eclipse. Me gusta Netbeans. Eclipse me hace llorar :(

      Eliminar
  3. Me ha quedado todo clarísimo. Sobre todo, que soy un analfabeto informático. A mí me sacas del html y soy como un pulpo en un garaje. xD

    ResponderEliminar
    Respuestas
    1. ¡No aprendas nada si puedes evitarlo! ¡Es el horror! xD Además, hay mucha gente que no tiene ni idea de html, así que aún puedes lucirte delante de un montón de gente :D

      Eliminar
  4. Vale, varias cosas:

    1) Netbeans mola. No sé ni por qué te llegaste siquiera a plantear la posibilidad de contemplar a Eclipse como una alternativa (eso es malo).

    2) El tutorial puede que me venga genial algún día, por lo que lo he incluido entre mis favoritos, con su estrellita y todo :D (eso es bueno).

    3) Además de contratarte por 200€/hora para servirme uvas en mi flamante yate te voy a asignar la traducción de los manuales que haga del español al "key-español", así aunque no funcionen gustarán (eso es bueno también).

    4) No te voy a subir el sueldo, que conste (eso es bueno para mí).

    6) Me salto un número para evitar la rima, soy así de majo ^^

    7) Comentario patrocinado por TinoCruceros. ¡Contrata el paquete "VIP Plus!" y obtén acceso ilimitado a bebidas de primeras marcas, así como a todos los cócteles elaborados por nuestros expertos!

    ResponderEliminar
    Respuestas
    1. He usado netbeans sin saber que era netbeans, y molaba mucho (sabiéndolo, seguro que mola más) Eclipse intenté usarlo una vez y terminé usando gedit :) (antes de saber que había alubias en red)

      Eliminar
    2. 1) Parece ser que lo estándar para Tomcat es Eclipse. Si es lo estándar, hay más ayuda en internet, ya sabes. Por eso lo elegí. Pero si no soy capaz de instalarme el framework, le dan por saco a Eclipse y me paso a tu bando. Netbeans mola.

      2) Me siento súper importante :D

      3) ¡Las uvas! ¡No me acordaba! Tengo disponibilidad absoluta. Y me alegro de que te guste el key-español :D

      4) Explotador.

      6) Cobarde.

      7) Echo de menos la piña colada :(

      ¡Carlos, no me digas eso de gedit que me deprimes!

      Eliminar
  5. Leo el título de la entrada en reader y pienso "aaah, esto va de crítica de películas, ¡genial!" Y no... me que no.

    No he entendido ni los dibujos, pero, vamos, si quieres que te recomiende libros, sabes dónde encontrarme. ;P

    50 Shades... ay, ay, ay...

    ResponderEliminar
    Respuestas
    1. Fíjate lo harta que acabaría de esto, que hubiera preferido ver la peli correspondiente. Vaya rollo, de verdad. Y por supuesto, si necesito recomendaciones literarias, recurriré a ti :D

      Eliminar
  6. Uffff. Como que voy a pasar... Jajaja. Besotes!!!

    ResponderEliminar
  7. Yo también pensaba que ibas a hablar de alguna peli. Con tu permiso (o sin él), hoy hago campana y he dejado a medias la lectura de este post en cuanto he empezado a leer cosas de javas, programas informáticos y su puta madre. Eso sí, se le saluda afectuosamente

    ResponderEliminar
    Respuestas
    1. Sabia decisión. Saludos para ti también :D

      Eliminar
  8. Madre mia acabas de quitarme las ganas de hacerme una web y eso que quiero uno y empecé con el wix y me pareció dicifil y lo dejé. XD

    ResponderEliminar
    Respuestas
    1. Que conste que estoy descubriendo que hay algún sistema por ahí más sencillo (a poco). Pero éste es uno de los estándar y es una mierda xD

      Eliminar
  9. ni me lo había planteado crear una web.. pero aún así los que os dedicáis a poner estos tutoriales y vuestra experiencia por aqui mereceis todos mis respetos, que pasada!!!

    además me gusta tu estilo de los incisos!!! jajajja..

    ResponderEliminar
    Respuestas
    1. Yo escribo tutoriales para tenerlos a mi disposición cuando quiera, por si la preparo y me toca volver a empezar. Y ya si ayudan a alguien, pues guay :) Y me alegro de que te guste el estilo :D

      Eliminar
  10. como mola!
    :)

    pero y si mejor nos vamos a dormir::?


    ResponderEliminar
  11. Creo que es la primera vez que escribo un comentario. No te puedes hacer a la idea de los días que llevo intentando configurar Linux Mint, Eclipse y Tomcat7. TODO un calvario. Pero hoy, si hoy he visto la luz por fin. Donde has estado todo este tiempo? Increible tu forma tan clara de explicarlo, gracias por comentar tus estados tan claramente. En fin, siempre te llevaré en mi mente compañera. Mil gracias por solucionar este quebradero de cabeza. PD: Me hubiera dado una ducha contigo Jajaja. Tambien estaba sucio de tanto buscar y no encontrar nada util. :P

    ResponderEliminar
    Respuestas
    1. ¡Oh! ¡Qué ilusión! Me alegro de que te haya servido, a mí casi me da algo para llegar a configurar toda esta basura, es increible lo absurdamente complicadas que son algunas cosas... en fin, que te sea leve la programación, y gracias por el comentario ;)

      Eliminar
  12. Carajo!, Gracias, de verdad que no encontraba salida a mi castigo del error: Could not load the Tomcat server configuration at /usr/share/tomcat7/conf. The configuration may be corrupt or incomplete. /usr/share/tomcat7/conf/catalina.policy (No such file or directory)”,

    Muchas Gracias :3, hiciste lo que mi profesor no pudo hacer =]

    ResponderEliminar
    Respuestas
    1. Es que vaya infiernito de instalación, ¿eh? Parece que lo han hecho adrede. Me alegro de haberte servido de ayuda ;D

      Eliminar
  13. Gracias, un kaos resuelto, me hiciste llorar de la emoción cuando me resulto aaaaaaaaaaaaaa terminé con dolor de cabeza y vi esto y funciono perfect

    ResponderEliminar
  14. Nose si conoces Liferay, pero va con eclipse y tomcat.... y me siento como si fuera a matar a alguien... llevo una semana con la configuración! y al igual que tu, es por mi empresa! que les da por complicarse la vida en la forma de trabajo! asi, por gusto y placer, por tocar los.... >.< dios, necesito vacaciones ->v<'- . De todas formas, solo decirte que me gusto mucho tu post, de los mil tutoriales que ya llevo, este me ha motivado y me ha gustado leerlo, se te da genial! :P un Saludo, y animos(es como si me los estuviera dando a mi mismo al escribirlo)

    ResponderEliminar
    Respuestas
    1. Me alegro de que te haya gustado el tutorial, ya que me cogí el cabreo en su día haciéndolo, por lo menos que le sirva a alguien. Mucho ánimo para tí también, tu puedes :D

      Eliminar
  15. Entiendo perfectamente por lo que has pasado, no puedo creer que ya esté funcionando. No sabes de la que me has sacado.

    ResponderEliminar
    Respuestas
    1. Yo no me puedo creer que esta instalación le siga amargando la existencia a la gente dos años después de que escribiera esto. Madre mía. Pero bueno, me alegro de haberte ayudado :)

      Eliminar
  16. pero instala el xampp que te lo trae todo, (menos el ide claro)

    ResponderEliminar
    Respuestas
    1. No era consciente de que xamp se pudiera utilizar con Java ni con Tomcat (lo he utilizado para php y con apache); en cualquier caso, aquí había problemas gordos con conseguir comunicar el entorno de desarrollo con el servidor, así que de poco me habría valido :/

      Eliminar
  17. Muchas gracias por el tutorial!!! Estaba empezando a sufrir los mismos dolores de cabeza que tú... ^^

    ResponderEliminar
    Respuestas
    1. ¡Me alegro de haberte ayudado, mucha suerte!

      Eliminar
  18. Holaaa!
    Cuando intento agregar el Tomcat ni eclipse no muestra la carpeta Apache, solo muestra la que dice Basic.
    Como lo puedo resolver?
    Gracias por la ayuda!

    ResponderEliminar
    Respuestas
    1. ¡Hola!
      No te puedo ayudar porque ahora mismo no tengo Eclipse instalado en mi sistema, así que no puedo hacer ninguna comprobación :( Échale un vistazo a esto, a ver si te ayuda http://stackoverflow.com/questions/2000078/apache-tomcat-not-showing-in-eclipse-server-runtime-environments

      Eliminar