Tutorial instancia en Amazon EC2: MySQL + Java + Tomcat + Apache en 3 minutos

Tutorial instancia en Amazon EC2: MySQL + Java + Tomcat + Apache en 3 minutos

El panel de control de Amazon puede ser un poco intimidante la primera vez que accedemos a el, pero lo cierto es que el proceso de crear instancias y configurarlas es realmente sencillo.

Después de pelearte un ratito, o si has seguido uno de nuestros tutoriales de Amazon, tendrá lista tu instancia en EC2, pero ahí no acaba la historia.

Si lo que te interesa es desplegar un proyecto Java usando una base de datos MySQL, un servidor de aplicaciones Apache Tomcat, y un servidor Apache, que actúe como proxy de peticiones HTTP, tendrás que hacer un par de cosillas más.

Si lo has intentado por tu cuenta, es fácil que te hayas encontrado con los problemas típicos de la configuración del servidor y el despliegue de tu proyecto:

  • Arranco la aplicación en Tomcat, pero solo puedo acceder a ella mediante el puerto 8080
  • No consigo desplegar la aplicación en el la raiz de mi dominio
  • El servidor Apache no se comunica correctamente con Tomcat
  • Mi dominio no apunta al servidor de Amazon EC2

Pero no te preocupes, nosotros te explicamos una forma rápida y sencilla de dejar tu despliegue a punto mediante la ejecución de unos cuantos comandos.

Por lo general, la instancia preparada de Amazon Linux AMI se adaptará perfectamente a las necesidades de vuestros proyectos, y es en esta en la que nos hemos basado para realizar esta mini guía.

Suponiendo que:

  • Has creado la instancia Amazon Linux AMI en Amazon EC2
  • Tienes una “Elastic IP” apuntando a esta instancia
  • El grupo de seguridad asociado tiene habilitados los puertos 22, 80 y 8080
  • Has arrancado la instancia
  • y te has conectado al servidor vía SSH

Entonces estás a sólo 3 minutos de finalizar el despliegue. Mira:

Actualizamos el sistema:
sudo yum update

Instalamos Apache Tomcat:
sudo yum install tomcat6

Instalamos MySQL:
sudo yum install mysql mysql-server

Arrancamos el servidor MySQL:
sudo service mysqld start

En la instalación por defecto se creará un usuario root sin contraseña, por lo que recomendamos acceder mediante el cliente MySQL, y cambiar la contraseña del root antes de nada.
mysql -u localhost -u root
use mysql;
UPDATE user set password = PASSWORD(‘AQUI_TU_ROOT_PASSWORD’) WHERE user=’root’;
exit;

Una vez estamos listos, volvemos a acceder, esta vez usando la contraseña, y podemos crear ahí las tablas necesarias para ejecutar nuestro proyecto.
mysql -u localhost -u root -p

Instalamos el servidor Apache:
sudo yum install httpd

Ahora configuraremos la comunicación entre Apache y Tomcat, de forma que Apache traslade las peticiones HTTP que llegan al puerto 80 hacia nuestro proyecto, desplegado en Tomcat, en el puerto 8080.

Para ello, necesitaremos editar el siguiente fichero:
sudo nano /etc/httpd/conf/httpd.conf

Y añadir las siguientes líneas, donde TU_ELASTIC_IP, es la IP actual de la instancia de Amazon EC2:
ProxyPass / http://“TU_ELASTIC_IP”:8080/
ProxyPassReverse / http://“TU_ELASTIC_IP”:8080/

Configuramos el arranque automático de los servidores Apache, Apache Tomcat y MySQL, para que todo el sistema se inicie automáticamente si se cayese el servidor o se reinicia:
sudo chkconfig --level 345 tomcat6 on
sudo chkconfig --level 345 mysqld on
sudo chkconfig --level 345 httpd on

Ahora solo nos queda renombrar nuestro proyecto compilado a ROOT.war, y subirlo al directorio:
/usr/share/tomcat6/webapps/

Una vez tengamos esto listo, podemos arrancar los servicios, si todavía no estuviesen funcionando:
sudo service tomcat6 start
sudo service mysqld start
sudo service httpd start

Si has seguido estos pasos, te felicitamos! Ahora mismo tu web estará funcionando en la dirección ELASTIC_IP que tengas configurada.

Para hacer que la aplicación web se vea en la raiz de tu dominio, simplemente tendrás que cambiar la configuración DNS para que apunte a tu IP.

Publicado en febrero 3, 2013

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

« »