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.