-
Notifications
You must be signed in to change notification settings - Fork 43
Ayudantía 2 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 incluida por defecto. Para Windows modernos, PowerShell sirve, mientras que en versiones de Windows antiguos se necesita instalar un cliente SSH. Recomendamos el uso de Putty.
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 [email protected]
y para el grupo 37 usamos ssh [email protected]
.
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.
Una vez que ingresen al servidor usando ssh 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.
- 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, lo que se muestra
públicamente en la web) se encuentra dentro de la carpeta
Sites
. Es decir, archivos como.php
y.css
deben ser subidos aSites
para poder ser corregidos.
- Sus próximas entregas consisten en presentar consultas en un sitio
web, para luego ir añadiendo funcionalidades adicionales.
Se ingresará a la aplicación desde la dirección
Esta ruta ejecutara o mostrará el contenido del archivo
http://codd.ing.puc.cl/~grupoXX/ruta/al/archivo.php.
~/Sites/ruta/al/archivo.php
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:
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 (SiteManager).
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.
Una vez que terminen y quieran desconectarse, solo deben cerrar la aplicación.
Existen comandos similares a cp
(copy), pero que permiten transferir
archivos a otros computadores. El más simple de estos es scp
,
que tiene el siguiente formato:
# scp [*opciones] origen destino
# por ejemplo, para subir un archivo:
scp origen/archivo.csv [email protected]:~/path/destino/archivo.csv
# y para bajarlo:
scp [email protected]:~/origen/archivo.csv path/destino/archivo.csv
Si se quiere subir archivos recursivamente, como para subir carpetas
enteras, se puede utilizar la opción -r
:
scp -r datos/ [email protected]:~/datos/
Otros ejemplos:
# Subir un archivo de entrega
scp entrega-1-lista.pdf [email protected]:~/Entrega1/Informe.pdf
# Descargar todo lo subido en una entrega
scp -r [email protected]:~/Entrega2/ .
Los usuarios de Windows pueden ocupar el comando
pscp
en lugar descp,
el que se instala automáticamente junto con Putty, a menos que tengan alguna terminal que posea el comandoscp
.
Otro comando similar es rsync
, que se encuentra generalmente
en macOS (brew) y Linux. También se puede instalar en
Windows con GitBash. Este en vez de copiar los archivos,
solo sube las diferencias, por lo que suele ser más rápido.
Como rsync
sube solo las diferencias, se puede utilizar para
actualizar el código local con el del servidor rápidamente al estilo
de git push
. Por ejemplo, para subir archivos de web/
a Sites/
:
rsync web/ [email protected]:~/Sites/
También se pueden entregar más opciones como mostrar cambios, no borrar archivos más nuevos del servidor, borrar archivos que no existen localmente, subir recursivamente (para directorios) y excluir archivos (mostrados en ese orden):
rsync --itemize-changes \
--update \
--delete \
--recursive \
--exclude='archivo' \
web/ [email protected]:~/Sites/
Otra opción es montar el directorio del servidor. En esta parte se
explicará con sshfs
, pero hay otras opciones.
Esto es un extracto de las instrucciones de sshfs-win. En su README se encuentran más detalladas.
Hay que instalar winfsp y sshfs-win.
Para montar:
- Añadir una unidad de red
- Añadir la dirección de red
\\sshfs\grupoXX@codd:ing.puc.cl
- Ingresar la contraseña de usuario.
Para desmontar:
- Desconectar unidad de red
- Recargar el explorador de archivos y asegurarse que se eliminó la unidad
Se puede instalar con la mayoría de los administradores de paquetes. En el caso de brew (macOS), se puede instalar con:
brew install install gromgit/fuse/sshfs-mac
Para montar:
sshfs [email protected] /mnt/bddXX
Para desmontar:
fusermount -u /mnt/bddXX
# o
umount /mnt/bddXX
No recomendamos utilizar este método, ya que requiere correr comandos tantos localmente como en el servidor (lo que es lento) y entregarle al servidor credenciales para acceder a GitHub. Si no logran utilizar los métodos anteriores, pueden probar con este.
Lo primero es crear un repositorio privado en Github, como se indica más abajo.
Primero, hay que conectarse al servidor y en la primera carpeta en que
aparecen (es decir, su carpeta de usuario, donde se encuentra Sites)
ejecutar 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/<usuario>/<repo>
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.
Cuando quieran añadir archivos, verán que hay un conjunto de archivos
ocultos sin commitear. Es recomendable agregar un archivo .gitignore
para que no molesten. No los eliminen.
Su .gitignore
debería tener al menos:
.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
.
Recomendamos fuertemente utilizar un repositorio de Git, tanto para respaldar sus avances y poder trabajar asincronicamente en grupo. Las entregas se revisarán a partir de lo que está en el servidor, no con lo que está en el repositorio de GitHub.
Para crear un repositorio pueden dirigirse a repo.new o en la opción de crear repositorio que se encuentra en la esquina superior de GitHub. Es importante que el repositorio creado sea privado para evitar copia de entregas.
Para añadir miembros hay que ir a la configuración del repositorio (Settings), a la sección de administrar acceso (Manage access), ingresar la contraseña y luego invitar los colaboradores (Invite a collaborator).
Existe la extensión Live Share en VSCode que permite crear una sesión colaborativa para editar código, al estilo de Google Docs. Requiere que una persona comparta el código en VSCode, el resto puede unirse a la sesión tanto por navegador o utilizando VSCode.
Una vez instalada la extensión, un nuevo menú aparecerá en la barra de actividad que mostrará la opción de compartir una nueva sesión (Share) o unirse a una existente (Join).
Requiere estar constantemente pendiente de cambios en el repositorio. Pueden generar problemas si es que no se sincronizaron los cambios.
-
Hacer pull antes de hacer cambios
git pull
-
Luego se crean los commits directo a main
git add index.php git commit -m "arregla el bug"
-
E inmediatamente se suben al origin (GitHub)
git push
Se puede seguir una versión simplificada de GitHub Flow, requiere que se preocupen de unir los cambios.
-
Hacer pull y luego crear una rama de Git para implementar algo
# arreglar-error es un ejemplo, puede ser cualquier nombre git checkout -b arreglar-error # o también git switch -c arreglar-error
-
Se hacen commits en esa rama y no en main
git add index.php git commit -m "arregla el bug"
-
Se hacen Pull Requests en GitHub y se unen los cambios
git push -u origin arreglar-error # ir a https://github.com/<usuario>/<repo>/pull/new/arreglar-error # y ahí unir los cambios
-
Volver a main y hacer pull
git checkout main # o git switch main # y luego git pull
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.
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.
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.
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.