User Tools

Site Tools


proyecto:conexion_externa

This is an old revision of the document!


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.

Los Puertos

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.

hostname: cc3201.dcc.uchile.cl
puerto: 54XX (donde XX es el número del grupo)

Una Prueba

Para ver si funciona o no, hay un proyecto de Java aquí (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:

sudo nano /etc/postgresql/9.6/main/pg_hba.conf

En este archivo, por defecto, permite solo conexiones desde localhost. Específicamente, dice:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Tenemos que cambiar eso a lo siguiente:

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5
# host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::0/0                  md5
# host    all             all             ::1/128                 md5

… y guardar el archivo. (# indica un comentario, 0.0.0.0/0 indica permitir todo, ::0/0 igualmente).

El segundo archivo que tenemos que cambiar es:

sudo nano /etc/postgresql/9.6/main/postgresql.conf

En ese archivo, hay que cambiar localhost con * para escuchar a cada IP (no solo localhost):

listen_addresses = '*'                  # what IP address(es) to listen on;

… y guardar el archivo.

Finalmente, hay que recargar la configuración de Postgres. Lo más simple es reiniciar Postgres:

sudo service postgresql stop
sudo service postgresql start

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 prueba, está bien … si trabajaras para una empresa, sería imprescindible poner y leer la contraseña desde un archivo de configuración seguro.)

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).

Bueno, en psql, hay que poner:

\password cc3201

… y ingresar una contraseña. Después, hay que poner la contraseña en el código de la prueba:

private static final String PASSWORD = "**ingresa**password**de**cc3201**aquí**";

Ejecutar La Prueba

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:

SELECT * FROM test.hello

Se puede crear esa tabla y agregar una tupla, o se puede cambiar la consulta en el código para hacer la prueba.

proyecto/conexion_externa.1494190587.txt.gz · Last modified: 2017/05/07 20:56 by ahogan