User Tools

Site Tools


proyecto:conexion_externa

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
proyecto:conexion_externa [2018/04/20 20:24] ahoganproyecto:conexion_externa [2022/05/28 01:35] (current) ahogan
Line 1: Line 1:
 ====== Conexión Externa ====== ====== Conexión Externa ======
  
-Si alguien quiere conectar al servidor desde afuera (por ejemplo, para probar una aplicación desde tu notebook), aquí van los detalles.+Hay que configurar Postgres para aceptar conexiones desde nuestra aplicación.
  
-===== Los Puertos ===== +===== Configurar Postgres =====
- +
-Para empezar, el puerto de Postgres por defecto es 5432, pero dado que tenemos un hostname (cc3201.dcc.uchile.cl) y 20+ bases de datos, claro que no podemos usar sólo el puerto 5432, entonces hay que usar 54XX donde XX es el número del grupo. Por ejemplo, si uno estuviera en grupo 6, el puerto sería 5406; si estuviera en grupo 21, sería 5421. +
- +
-<code> +
-hostname: cc3201.dcc.uchile.cl +
-puerto: 54XX (donde XX es el número del grupo) +
-</code> +
- +
-===== Una Prueba ===== +
- +
-Para ver si funciona o no, hay un proyecto de Java aquí ([[http://aidanhogan.com/teaching/tools/cc3201/vm-test-jdbc.zip|vm-test-jdbc.zip]]) con una clase que usa JDBC para conectar a la base de datos de grupo 18 (como un ejemplo). Hay que cambiar el puerto y la consulta (o crear una tabla ''test.hello'' en tu base de datos). También, hay que configurar Postgres y agregar una contraseña para el usuario ''cc3201'' en Postgres ... +
- +
-==== Configurar Postgres ====+
  
 Ahora tenemos que configurar Postgres para permitir conexiones externas. Tenemos que cambiar la configuración en dos archivos: Ahora tenemos que configurar Postgres para permitir conexiones externas. Tenemos que cambiar la configuración en dos archivos:
  
 <code> <code>
-sudo vim /etc/postgresql/9.6/main/pg_hba.conf+sudo vim /etc/postgresql/13/main/pg_hba.conf
 </code> </code>
  
-En este archivo, por defecto, permite solo conexiones desde localhost. Específicamente, dice:+En este archivo, la configuración, por defecto, permite solo conexiones desde localhost. Específicamente, dice:
  
 <code> <code>
Line 33: Line 20:
 </code> </code>
  
-Tenemos que cambiar eso lo siguiente:+Tenemos que cambiar esta configuración la siguiente:
  
 <code> <code>
Line 49: Line 36:
  
 <code> <code>
-sudo nano /etc/postgresql/9.6/main/postgresql.conf+sudo vim /etc/postgresql/13/main/postgresql.conf
 </code> </code>
  
-En ese archivo, hay que cambiar ''localhost'' con ''*'' para escuchar a cada IP (no solo localhost):+En ese archivo, hay que cambiar ''localhost'' por ''*'' para escuchar a cada IP (no solo localhost):
  
 <code> <code>
Line 60: Line 47:
 ... y guardar el archivo. ... y guardar el archivo.
  
-Finalmente, hay que recargar la configuración de Postgres. Entonces, en ''psql'', ejecuta:+Finalmente, hay que recargar la configuración de Postgres. Entonces, en ''psql'', se debería ejecutar:
  
 <code>SELECT pg_reload_conf();</code> <code>SELECT pg_reload_conf();</code>
  
-A veces no funciona (no sé porque) pero para estar seguroquita ''psql''ejecuta:+A veces no funciona (no sé porque) pero para tener seguridadse puede quitar ''psql''ejecutar:
  
 <code> <code>
Line 75: Line 62:
 ==== La Contraseña ==== ==== La Contraseña ====
  
-En el código de la prueba arriba (''vm-test-jdbc.zip''), pide la contraseña del usuario ''cc3201''(//En general, no es una buena idea guardar una contraseña así en texto plano en el código fuente, pero para hacer una pruebaestá bien ... si trabajaras para una empresa, sería imprescindible poner y leer la contraseña desde un archivo de configuración seguro.//)+Ahora tenemos que configurar la contraseñaNo es la misma contraseña que la contraseña de SSH para ingresar al servidorDe hechoen principio no hay una contraseña (en el servidor, Postgres usa los credenciales de SSH por defecto, pero la aplicación se conectará directamente con Postresno por SSH).
  
-De todos modos, tenemos que configurar la contraseña. No es la misma contraseña que la contraseña de SSH para ingresar al servidor. De hecho, por defecto, no hay una contraseña (en el servidor, Postgres usa los credenciales de SSH por defecto, pero JDBC (por ejemplo) va a conectarse directamente con Postres, no por SSH). +En ''psql'', hay que poner:
- +
-Bueno, en ''psql'', hay que poner:+
  
 <code>\password cc3201</code> <code>\password cc3201</code>
  
-... y ingresar una contraseñaDespués, hay que poner la contraseña en el código de la prueba:+Luego esta contraseña la pueden usar para conectarse desde una aplicación.
  
-<code>private static final String PASSWORD "**ingresa**password**de**cc3201**aquí**";</code>+===== Los Puertos ===== 
  
-==== Ejecutar La Prueba ====+En caso de querer establecer una conexión con Postgres **desde otra máquina** (por ejemplo, un notebook), el puerto será ''55XX'' donde XX es el número de la máquina. Por ejemplo, si uno estuviera utilizando la máquina 6, y quisiera establecer una conexión con Postgres en esa máquina **desde otra máquina**, el puerto sería 5506; si estuviera en el máquina 21, sería 5521.
  
-Hay que cambiar el puerto y la contraseña y configurar todo arriba. La prueba asume que hay una tabla ''test.hello''; ejecuta la siguiente consulta: +<code> 
- +hostname: cc3201.dcc.uchile.cl 
-<code>SELECT * FROM test.hello</code>+puerto: 55XX (donde XX es el número de la máquina) 
 +</code>
  
-Se puede crear esa tabla y agregar una tupla, o se puede cambiar la consulta en el código para hacer la prueba.+Si uno quiere establecer una conexión con Postgres en la misma máquina, el puerto será ''5432''el host será ''localhost''. El puerto ''55XX'' no va a funcionar dentro de la misma máquina.
proyecto/conexion_externa.1524255853.txt.gz · Last modified: 2018/04/20 20:24 by ahogan