proyecto:armar_la_aplicacion_inicial
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
proyecto:armar_la_aplicacion_inicial [2022/04/20 06:16] – ahogan | proyecto:armar_la_aplicacion_inicial [2023/04/27 20:10] (current) – sferrada | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Armar la Aplicación ====== | ====== Armar la Aplicación ====== | ||
- | |||
- | OJO: en cualquier parte del tutorial donde se mencione XX, este es el NÚMERO DE LA MÁQUINA, no su número de grupo. | ||
===== Objetivo ===== | ===== Objetivo ===== | ||
Line 8: | Line 6: | ||
* Como fue mencionado antes, hay que tener al menos tres consultas demostrando una mezcla de rasgos de SQL, es decir, joins, consultas anidadas, agregación, | * Como fue mencionado antes, hay que tener al menos tres consultas demostrando una mezcla de rasgos de SQL, es decir, joins, consultas anidadas, agregación, | ||
+ | * Al menos dos de las consultas deberían incluir uno o más parámetros ingresados por el usuario de la aplicación web. | ||
* No es necesario tener todos los rasgos en todas las consultas. La idea es que se demuestren los rasgos en alguna consulta. Se puede empezar con una consulta simple. | * No es necesario tener todos los rasgos en todas las consultas. La idea es que se demuestren los rasgos en alguna consulta. Se puede empezar con una consulta simple. | ||
* Es importante usar indices, vistas, etc., para optimizar las consultas. | * Es importante usar indices, vistas, etc., para optimizar las consultas. | ||
Line 26: | Line 25: | ||
< | < | ||
CREATE USER webuser WITH PASSWORD ' | CREATE USER webuser WITH PASSWORD ' | ||
+ | GRANT CONNECT ON DATABASE cc3201 TO webuser; | ||
GRANT USAGE ON SCHEMA proyecto TO webuser; | GRANT USAGE ON SCHEMA proyecto TO webuser; | ||
... | ... | ||
Line 32: | Line 32: | ||
... y después usar '' | ... y después usar '' | ||
+ | |||
+ | Hay que tener cuidado con consultas como: | ||
+ | |||
+ | < | ||
+ | SELECT * FROM tabla WHERE col = ' | ||
+ | </ | ||
+ | |||
+ | En particular, esta consulta no ha especificado el esquema, así que Postgres usará el '' | ||
+ | |||
+ | < | ||
+ | SELECT * FROM esquema.tabla WHERE col = ' | ||
+ | </ | ||
+ | |||
+ | Así funcionará ante cambios al '' | ||
===== Servidor Web ===== | ===== Servidor Web ===== | ||
Line 108: | Line 122: | ||
Para instalar PHP con soporte para apache2 y postgres: | Para instalar PHP con soporte para apache2 y postgres: | ||
- | < | + | < |
Ahora, tenemos que reiniciar Apache: | Ahora, tenemos que reiniciar Apache: | ||
Line 1133: | Line 1147: | ||
Con el ejemplo previo, y por fin, tienen todos los ingredientes para armar su aplicación usando Django. Un recordatorio: | Con el ejemplo previo, y por fin, tienen todos los ingredientes para armar su aplicación usando Django. Un recordatorio: | ||
+ | |||
+ | ==== Opción 3: Java Servlets ==== | ||
+ | |||
+ | * PRO: se puede programar en Java | ||
+ | * CON: difícil de instalar y configurar | ||
+ | * CON: una metodología desactualizada (pero con muchos sistemas legados todavía) | ||
+ | * CON: hay que programar en Java | ||
+ | | ||
+ | La opción de Java Servlets es una opción legada que tenía relevancia cuando el lenguaje usado en el curso Introducción a Programación fue Java. En vez de borrar la opción, la hemos mantenido acá, pero en general, no es una opción recomendada, | ||
+ | |||
+ | === Instalar tomcat9 === | ||
+ | |||
+ | Hay que instalar '' | ||
+ | |||
+ | < | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install tomcat9 tomcat9-admin tomcat9-examples tomcat9-docs authbind | ||
+ | </ | ||
+ | |||
+ | === Configurar tomcat9 === | ||
+ | |||
+ | Tenemos que poner un usuario " | ||
+ | |||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | Aquí: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Hay que poner (ojo: la página es publica así que ¡es importante elegir una contraseña segura! es decir, ¡no '' | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <user username=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ... y guardar el archivo. | ||
+ | |||
+ | Por defecto, tomcat9 será instalado con el puerto 8080, el cual no es accesible desde afuera. Tenemos que cambiarlo a 80 (el puerto por defecto en HTTP). | ||
+ | |||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | Hay que cambiar (ojo que no es '' | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ... por ... | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ... y guardar el archivo. | ||
+ | |||
+ | Ahora ... | ||
+ | |||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | Hay que cambiar: | ||
+ | |||
+ | < | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | por (ojo: hay que borrar el gato): | ||
+ | |||
+ | < | ||
+ | AUTHBIND=yes | ||
+ | </ | ||
+ | |||
+ | ... y guardar el archivo. | ||
+ | |||
+ | El próximo paso es deshabilitar IPv6 porque '' | ||
+ | |||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | Hay que poner: | ||
+ | |||
+ | < | ||
+ | export CATALINA_OPTS=" | ||
+ | </ | ||
+ | |||
+ | Después, en: | ||
+ | |||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | Hay que comentar la primera línea aquí y agregar la segunda: | ||
+ | |||
+ | < | ||
+ | # exec " | ||
+ | exec authbind --deep " | ||
+ | </ | ||
+ | |||
+ | Por fin, está lista la configuración del puerto 80. | ||
+ | |||
+ | Finalmente, hay que darle a Tomcat acceso al controlador de Postgres: | ||
+ | |||
+ | < | ||
+ | sudo apt-get install wget | ||
+ | cd / | ||
+ | sudo wget https:// | ||
+ | </ | ||
+ | |||
+ | Ahora se puede usar JDBC para consultar a Postgres desde Tomcat. | ||
+ | |||
+ | === Correr el servidor de tomcat9 === | ||
+ | |||
+ | En el caso de que Apache esté instalado y corriendo, hay que deshabilitarlo (si no está instalado, se puede saltar este paso): | ||
+ | |||
+ | < | ||
+ | sudo / | ||
+ | </ | ||
+ | |||
+ | Está lista la configuración así que tenemos que reiniciar tomcat9: | ||
+ | |||
+ | < | ||
+ | sudo service tomcat9 restart | ||
+ | </ | ||
+ | |||
+ | Ahora, se puede ir aquí para verificar que funcione (ojo: '' | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | Hemos instalado Tomcat con el cual podemos instalar Java Servlets. :) | ||
+ | |||
+ | === Un ejemplo de un Java Servlet === | ||
+ | |||
+ | (//Una confesión: en el ejemplo que doy, pongo HTML en el código de Java. Eso es muy feo porque mezcla la presentación y la lógica de la aplicación. Sería muchísimo mejor usar JSP con los servlets, pero también más complicado.// | ||
+ | |||
+ | Efectivamente, | ||
+ | |||
+ | Descargar [[http:// | ||
+ | |||
+ | En '' | ||
+ | |||
+ | En '' | ||
+ | |||
+ | En '' | ||
+ | |||
+ | En '' | ||
+ | |||
+ | En '' | ||
+ | |||
+ | Tenemos que crear un paquete '' | ||
+ | |||
+ | Ahora hay que refrescar el proyecto: hacer clic en la carpeta del proyecto y presionar '' | ||
+ | |||
+ | Tenemos que subir el archivo '' | ||
+ | |||
+ | < | ||
+ | sudo chown -R tomcat9: | ||
+ | sudo chmod -R g+r / | ||
+ | sudo chmod -R g+w / | ||
+ | sudo chmod -R g+w / | ||
+ | sudo chmod -R g+w / | ||
+ | sudo chmod -R g+w / | ||
+ | sudo chmod -R g+s / | ||
+ | sudo chmod -R g+s / | ||
+ | sudo chmod -R g+s / | ||
+ | sudo chmod -R g+s / | ||
+ | sudo usermod -a -G tomcat9 cc3201 | ||
+ | </ | ||
+ | |||
+ | Después, [[https:// | ||
+ | |||
+ | Ir a: | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | Aquí se pueden ver tres ejemplos simples de aplicaciones que pueden adaptar para su aplicación. | ||
+ | |||
+ | OJO: ¡es importante usar métodos seguros contra inyección! Mi ejemplo es solo una prueba, no un ejemplo a seguir. | ||
+ | |||
+ | Si hay un problema con el servlet, el log está aquí: | ||
+ | |||
+ | < | ||
+ | sudo more / | ||
+ | </ | ||
+ | |||
+ | ... el error más común es un problema con la contraseña/ | ||
==== Opción 4: Algo diferente ==== | ==== Opción 4: Algo diferente ==== | ||
- | Se puede usar otra opción para armar la aplicación: | + | Tienen sudo, así que pueden |
- | * JSP, Spring, Struts, Flask, Rails, | + | * Flask, React, Angular, Rails, |
... pero no podremos ofrecerles soporte si hay problemas. | ... pero no podremos ofrecerles soporte si hay problemas. | ||
+ | |||
+ | ====== Conexión Externa ===== | ||
+ | |||
+ | Finalmente, se deben configurar los puertos de modo que la aplicación web quede disponible para acceder a través de una URL. Puede encontrar instrucciones de como hacerlo visitando [[proyecto: |
proyecto/armar_la_aplicacion_inicial.1650435384.txt.gz · Last modified: 2022/04/20 06:16 by ahogan