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:29] – se ha restaurado la vieja versión (2022/04/20 03:16) ahogan | proyecto:armar_la_aplicacion_inicial [2025/06/23 16:46] (current) – ahogan | ||
|---|---|---|---|
| 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 106: | Line 120: | ||
| PHP (PHP: Hypertext Preprocessor) es un lenguaje para crear scripts que se ejecutan en el servidor (al contrario de Javascript, por ejemplo, que se ejecuta normalmente en el lado del cliente). | PHP (PHP: Hypertext Preprocessor) es un lenguaje para crear scripts que se ejecutan en el servidor (al contrario de Javascript, por ejemplo, que se ejecuta normalmente en el lado del cliente). | ||
| - | 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.1650436147.txt.gz · Last modified: by ahogan
