Skip to content

Tutorial Servidor y Base de Datos Postgresql

arpincheira edited this page Aug 11, 2020 · 3 revisions

Índice

Servidor del curso

Conexión con el servidor

El servidor está ubicado en codd.ing.puc.cl.

Para acceder necesitamos un cliente SSH. En el caso de Unix o Mac podemos simplemente usar la terminal. Para Windows modernos sirve la PowerShel, mientras que en Windows antiguos necesitamos un cliente SSH: recomendamos el uso de Putty. Ver tutorial

Una vez en la terminal aplicamos el siguiente comando:

ssh grupo<numero de grupo>@codd.ing.puc.cl

Por ejemplo, si somos el grupo 2 usamos ssh grupo2@codd.ing.puc.cl y para el grupo 37 usamos ssh grupo37@codd.ing.puc.cl. El password por defecto de cada grupo era: grupo<numero de grupo> Nuevamente, en los ejemplos sería grupo2 o grupo37.

Una vez establecida la conexión, podrán navegar usando comandos de terminal Unix. Recomendamos leer algún tutorial si no estás familiarizado con estos. Y ¡por favor cambiar la contraseña!

Cambio de clave del Usuario

Una vez que ingresen al servidor usando ssh ya sea con la consola o Putty (Las nuevas versiones de Windows 10 traen ssh por defecto, lo pueden usar directamente desde PowerShell), deberían cambiar su contraseña para evitar el ingreso de usuarios malintencionados. Para ello deben utilizar:

passwd

Este comando les pedirá su clave actual y su clave nueva dos veces. Si es su primera vez usando una consola, no se asusten si al escribir no les salen asteriscos para la contraseña, eso es normal.

Organización del servidor

  • Cada enunciado tendrá instrucciones específicas sobre el lugar en que se deben subir los archivos y reportes PDF. Estas deben ser respetadas sin importar lo que diga este tutorial.
  • Como regla general, los reportes PDF deben entregarse en una carpeta de nombre EntregaX ubicada dentro de su carpeta de usuario.
  • El homepage de su aplicación web (es decir, el archivo index.php) debe encontrarse inmediatamente dentro de la carpeta Sites. Todos los demás archivos de su app pueden organizarlos como quieran.

Ruta de la aplicación web hosteada en el servidor

  • Sus próximas entregas consisten en presentar consultas en un sitio web, y luego ir añadiendo funcionalidades. Se ingresará a la aplicación desde la dirección http://codd.ing.puc.cl/~grupoXX/index.php. Esta ruta mostrará el contenido del archivo index.php que se encuentre directamente dentro de la carpeta Sites.
  • Deben respetar la regla anterior para que su proyecto pueda ser corregido.

Subir archivos al Servidor

Introducción

En este proyecto es posible ocupar un repositorio para el control de cambios. Requiere un poco de configuración adicional, pero les permitirá trabajar de forma concurrente sin perder información.

A continuación se presentan ambas opciones.

Opción 1: Utilizar un Repositorio de Git

Lo primero es crear un repositorio privado en Github. Con su plan gratuito podrán agregar hasta 3 colaboradores, lo que les permitirá trabajar sin problemas en grupos de 4. Si su grupo es de 5, una solución sería que pusheen dos personas con la misma cuenta.

Ahora, se conectan al servidor y en la primera carpeta en que aparecen (es decir, su carpeta de usuario, donde se encuentra Sites) ejecutan el comando git init para que esta carpeta se convierta en un repositorio local.

Luego, hay que decirle a este repositorio local que se tiene que sincronizar con el repositorio remoto privado que crearon en github. Para ello toman la URL de este último y ejecutan el siguiente comando:

git remote add origin https://github.com/<my-user>/<my-repo-name>

Para comprobar que se configuró correctamente ejecutan git remote -v y deberían verlo 2 veces.

Ahora bien, cuando quieran hacer git pull o git push por primera vez, les pedirá que especifiquen a qué rama debe sincronizarse. La misma terminal les dirá el comando que deben ejecutar. En un principio la branch por defecto es master.

Cuando quieran añadir archivos, verán que hay un conjunto de archivos ocultos sin commitear. Les sugiero agregarlos a un archivo .gitignore para que no molesten. No los eliminen. Así, su .gitignore debería tener:

.bash_logout
.bashrc
.cache/
.gitconfig
.gitignore
.profile
.ssh/

Una vez que todo esté configurado, solo tienen que trabajar desde sus computadores y pushear sus cambios. El día de la entrega alguien debe conectarse al servidor y hacer git pull.

De esta forma, repositorios locales pueden haber muchos, como los computadores de cada integrante del grupo y como el servidor (sí, la carpeta en el servidor también es un repositorio local que se sincroniza al remoto de Github).

Entonces, para subir una tarea, cualquier integrante del grupo puede hacer add, commit, push en su repositorio local y con eso sincronizan el remoto. Luego se conectan al servidor del curso (codd.ing.puc.cl) y hacen git pull (para sincronizarlo con el remoto) y listo.

Opción 2: No utilizar un repositorio

Esta opción tiene la desventaja de que si 2 o más integrantes suben al servidor la carpeta completa del proyecto, sobrescribirán los cambios del otro y perderán el trabajo realizado. Si aún desean tomarla, deben tener una excelente coordinación.

Aquí hay otras 2 opciones para subir y bajar los archivos desde y hacia el servidor. La primera es más sencilla, ya que se utiliza la interfaz gráfica FileZilla, mientras que la otra es más compleja, ya que se utiliza la terminal. Son formas distintas de hacer lo mismo.

Opción 2.1: Vía FileZilla

Captura de pantalla de 2019-03-19 20-22-26

Esta es la interfaz de Filezilla luego de descargarlo e instalarlo. El sector izquierdo corresponde a los directorios y archivos en su computador, mientras que el lado derecho corresponde al servidor.

En la parte superior hay campos para completar con servidor, usuario, contraseña y puerto. Deben rellenarlas con los siguientes datos para conectarse:

servidor: codd.ing.puc.cl
user: grupoXX
password: mypassword
port: 22

También existe la posibilidad de guardar esta conexión para luego ingresar con 1 click y no tener que escribir las credenciales cada vez. Se sugiere investigar.

Captura de pantalla de 2019-03-19 20-23-05

La transferencia de archivos es bidireccional y para ello pueden arrastrar los archivos o hacerles doble click. También es posible mover, renombrar o eliminar archivos y carpetas en el servidor.

Captura de pantalla de 2019-03-19 20-24-20

Una vez que terminen y quieran desconectarse, solo deben cerrar la aplicación.

Opción 2.2: Vía Terminal con el comando SCP

Los usuarios de Windows pueden ocupar el comando pscp en lugar de scp, el que se instala automáticamente junto con Putty, a menos que tengan alguna terminal que posea el comando scp. Los demás sistemas operativos pueden ocupar su terminal normal.

Entonces, los archivos y carpetas se pueden copiar desde y hacia el servidor utilizando la siguiente sintaxis:

scp   ruta_y_archivo_a_transferir    ruta_destino

o bien

scp  -r  ruta_y_carpeta_a_transferir    ruta_destino

Para especificar rutas en el servidor debemos anteceder grupoXX@codd.ing.puc.cl:. Las rutas del servidor comienzan con /home/grupoXX/..... Podemos abreviar estas dos carpetas con ~.

Así, podríamos utilizar este comando de las siguientes formas:

Archivo hacia el servidor:

scp  Escritorio/ProyectoDB/Entrega1/Informe.pdf  grupoXX@codd.ing.puc.cl:/home/grupoXX/Entrega1/

Archivo desde el servidor:

scp  grupoXX@codd.ing.puc.cl:~/Entrega1/Informe.pdf  .

Carpeta hacia el servidor:

scp  -r  /IIC2413/Proyecto/Entrega3  grupoXX@codd.ing.puc.cl:~/Sites/

Carpeta desde el servidor:

scp  -r  grupoXX@codd.ing.puc.cl:~/Sites/Entrega3/  .
  • La opción -r le indica al comando que transfiera recursivamente lo que existe dentro de la carpeta
  • El . significa que el destino es el directorio actual.
  • ~ es un abreviación de /home/GrupoXX
  • el comando ls sirve para listar el directorio actual

Base de Datos

Ingresar al DBMS Postgres

Una vez dentro del servidor, pueden ejecutar el siguiente comando para ingresar a su base de datos:

psql

Se les pedirá una contraseña, que en principio es la misma que utilizaron para ingresar al servidor por primera vez ('grupoXX'). Se sugiere que también la cambien para evitar accesos no autorizados.

Cambio de clave Postgres

Una vez dentro de la terminal de postgres, deben ejecutar:

ALTER USER <grupoXX> ENCRYPTED PASSWORD 'newpassword';

Debería mostrarles el siguiente output

ALTER ROLE

Con eso esta listo el cambio de clave.

Sintaxis en Postgres

Existen 2 tipos de comandos:

  • los que son propios del DBMS y sirven para administrar el sistema. Estos comienzan con ' \ ' y no terminan con ' ; '. Por ejemplo: \dt
  • los que son típicos de SQL y que sirven para administrar las tablas. Estos deben terminar con ' ; ' Por ejemplo: SELECT * FROM Tabla;

Para más información pueden consultar la documentación oficial.

Importar datos en Postgres

Para ello pueden utilizar el siguiente comando

\COPY nombre_tabla from 'relative/path/to/file.csv' DELIMITER ',' CSV HEADER

Aquí es importante destacar un par de cosas:

  • La ruta relativa comienza desde su carpeta de usuario, es decir, si los datos están en el servidor en '/home/grupoXX/entrega1/CSV/datos.csv', en el comando de postgres deberían escribir '/entrega1/CSV/datos.csv'
  • DELIMITER sirve para indicar el caracter de separación de los datos.
  • HEADER indica la presencia de una fila de encabezado, para ignorarla al importar los datos.
  • Las columnas de datos se insertan de forma ordenada y correlativa en la tabla. Si desean insertar con un orden personalizado, pueden utilizar:
\COPY nombre_tabla(atributo2, atributo1, atributo3) from 'relative/path/to/file.csv' DELIMITER ',' CSV HEADER

Si tienen más dudas, pueden consultar la documentación oficial, y luego publicar en las Issues.