User Tools

Site Tools


proyecto:acceso_al_servidor

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:acceso_al_servidor [2018/04/20 20:27] – [Detalles del servidor] ahoganproyecto:acceso_al_servidor [2026/09/25 18:35] (current) – Aclarar que la conexión externa es solo para aplicaciones web en el Hito 3 semorale
Line 8: Line 8:
 hostname: cc3201.dcc.uchile.cl hostname: cc3201.dcc.uchile.cl
 usuario: cc3201 usuario: cc3201
-port: 2XX+port: 3XX
 </code> </code>
  
-Donde ''XX'' es el numero del grupo. +Donde ''XX'' es el número del grupo. El grupo 7, por ejemplo, usa el puerto ''307'' y el grupo 13 usa el ''313''.
  
-El servidor tiene Devuan, nada más. Su cuenta ''cc3201'' tiene ''sudo'' (privilegios administrativos) entonces la idea es con estas instrucciones, ustedes pueden empezar desde cero: configurar Postgres, bajar datos, diseñar el esquema relacional, crear tablas, cargar los datos, escribir consultas, armar indices y vistas, etc. El resultado final será una aplicación web.+La máquina trae Debian 13 con Postgres 17 ya instalado, y nada más. Su cuenta ''cc3201'' tiene ''sudo'' (privilegios administrativos), así que la idea es que, con estas instrucciones, ustedes puedan partir desde cero: configurar Postgres, bajar datos, diseñar el esquema relacional, crear tablas, cargar los datos, escribir consultas, armar índices y vistas, etc. El resultado final será una aplicación web. 
 + 
 +Las páginas están pensadas para seguirse en este orden: 
 + 
 +  - Esta página (entrar a la máquina y subir archivos). 
 +  - [[proyecto:configurar_postgres|Configurar Postgres]] (crear su usuario y su esquema). 
 +  - [[proyecto:conexion_externa|Conexión externa]]. **Solo para los grupos que hagan una aplicación web, y recién en el [[proyecto:entrega_final|Hito 3]].** Para el Hito 2 y para los proyectos de análisis estadístico no hace falta. 
 + 
 +Algunas palabras que aparecen en estas páginas: 
 + 
 +^ Término ^ Qué es ^ 
 +| **máquina virtual** (VM) | Un computador simulado dentro de un servidor del DCC. Cada grupo tiene uno propio, con Linux, donde puede instalar y configurar lo que necesite. | 
 +| **terminal** | La ventana donde se escriben comandos. En Linux y Mac se llama Terminal; en Windows, PowerShell. | 
 +| **SSH** | El programa (y protocolo) para entrar a otra máquina y escribir comandos como si se tuviera su teclado enfrente. | 
 +| **puerto** | Un número que identifica a qué programa va dirigida una conexión. ''cc3201.dcc.uchile.cl'' usa un puerto distinto para cada máquina (''3XX''), y así sabe a cuál mandarlos. | 
 +| **scp** | Copia archivos entre su computador y el servidor, usando la misma conexión de SSH. | 
 +| **sudo** | Ejecuta un comando como administrador (//root//). Se usa para instalar programas o editar archivos del sistema. | 
 +| **apt-get** | El instalador de programas de Debian. ''sudo apt-get install <programa>'' baja e instala un programa. |
  
 ==== Contraseña ==== ==== Contraseña ====
  
-Cada grupo tendrá su propia contraseña que será distribuida por correo.+Cada grupo tendrá su propia contraseña que será distribuida por correo. Es la misma para ''ssh'', ''scp'' y ''sudo''.
  
 ==== Acceso por SSH ==== ==== Acceso por SSH ====
  
-En ''bash'' (Linux/Mac/Win10), para acceder a la máquina de (p.ej.) grupo 13, hay que poner:+El acceso por SSH es parecido a lo que hacen en los labs; lo que cambia es el puerto. 
 + 
 +En una terminal (''bash'' en Linux o Mac, o PowerShell en Windows 10/11, que ya trae ''ssh''), para entrar a la máquina del grupo 13, por ejemplo, hay que poner:
  
 <code> <code>
-ssh -l cc3201 -p 213 cc3201.dcc.uchile.cl+ssh -p 313 cc3201@cc3201.dcc.uchile.cl
 </code> </code>
  
-En una versión de Windows sin ''bash'', se puede usar [[https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe|PuTTy]].+La primera vez que se conecten, ''ssh'' va a preguntar si confían en el servidor: 
 + 
 +<code> 
 +The authenticity of host '[cc3201.dcc.uchile.cl]:313' can't be established. 
 +ED25519 key fingerprint is SHA256:... 
 +Are you sure you want to continue connecting (yes/no/[fingerprint])? 
 +</code> 
 + 
 +Hay que escribir ''yes'' (la palabra completa) y apretar Enter. Después pide la contraseña. Al escribirla no aparece nada en pantalla, ni siquiera asteriscos; es normal. Si entraron bien, la línea de comandos cambia a algo como ''cc3201@cc3201-13:~$''. Para salir de la máquina, ''exit''. 
 + 
 +Si prefieren una interfaz gráfica en Windows, pueden usar [[https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html|PuTTY]] con el host ''cc3201.dcc.uchile.cl'' y el puerto ''3XX''.
  
 ==== Transferencia de datos ==== ==== Transferencia de datos ====
  
-Para transferir datos con ''bash'' (en Mac/Linux/Win10), hay que usar ''scp''; por ejemplo, //en tu notebook local//, para copiar un archivo local al servidor:+Para transferir archivos desde la terminal hay que usar ''scp''. Ojo que ''scp'' usa ''-P'' (mayúscula) para el puerto, a diferencia de ''ssh'', que usa ''-p''. Estos comandos se ejecutan **en su notebook**, no dentro del servidor. Para copiar un archivo local al servidor:
  
 <code> <code>
-scp -P 213 local.txt cc3201@cc3201.dcc.uchile.cl:/home/cc3201/+scp -P 313 local.txt cc3201@cc3201.dcc.uchile.cl:/home/cc3201/
 </code> </code>
  
-O al revés: copiar datos desde el servidor al PC local:+O al revés, para copiar un archivo desde el servidor a una carpeta local:
  
 <code> <code>
-scp -P 213 cc3201@cc3201.dcc.uchile.cl:/home/cc3201/remote.txt /local/carpeta/+scp -P 313 cc3201@cc3201.dcc.uchile.cl:/home/cc3201/remote.txt /local/carpeta/
 </code> </code>
  
-En una versión de Windows sin ''bash'', se puede usar un cliente SCP (como [[https://winscp.net/eng/docs/portable|WinSCP]], por ejemplo) para transferir datos.+=== Con WinSCP (Windows) === 
 + 
 +[[https://winscp.net/eng/download.php|WinSCP]] es un programa gratuito para Windows que muestra las carpetas de su computador y las de la máquina virtual lado a lado, y permite arrastrar archivos de un lado a otro. Solo sirve para transferir archivos; para ejecutar comandos en el servidor sigue haciendo falta ''ssh''. 
 + 
 +Al abrir WinSCP aparece la ventana //Login//. Seleccionen //New Site//, dejen //SFTP// como protocolo (//File protocol//) y llenen el servidor ''cc3201.dcc.uchile.cl'' (1), el puerto de su grupo, ''3XX'' (2), el usuario ''cc3201'' (3) y la contraseña de SSH (4). Después presionen //Login// (5). Con //Save// el sitio queda guardado para la próxima vez, como el "Grupo 7" de la captura. 
 + 
 +{{proyecto:servidor_winscp_login.png?direct&690|Ventana Login de WinSCP con servidor, puerto, usuario y contraseña}} 
 + 
 +La primera vez que se conecten, WinSCP muestra una advertencia porque no conoce la clave del servidor. Es la misma pregunta que hace ''ssh'' la primera vez; presionen //Accept//. 
 + 
 +El panel izquierdo muestra su computador y el derecho la máquina virtual. En el ejemplo se suben cuatro archivos CSV. En el panel izquierdo, abran la carpeta donde están los archivos (1), y revisen que el derecho esté en ''/home/cc3201/'' (2). Seleccionen los archivos con ''Shift'' o ''Ctrl'' (3) y arrástrenlos al panel derecho (4), o presionen //Upload// (5). WinSCP pide confirmar con una ventana en la que basta presionar //OK//. 
 + 
 +{{proyecto:servidor_winscp_antes.png?direct&900|WinSCP antes de subir: su computador a la izquierda y la máquina virtual a la derecha}} 
 + 
 +Al terminar, los archivos aparecen en el panel derecho, es decir, ya están en la máquina virtual. Para bajar archivos del servidor se hace lo mismo al revés, arrastrándolos del panel derecho al izquierdo (o con //Download//). 
 + 
 +{{proyecto:servidor_winscp_despues.png?direct&900|WinSCP después de subir: los archivos ya están en /home/cc3201/}}
  
 ==== Prueba con sudo ===== ==== Prueba con sudo =====
  
-Deberían poder usar ''sudo'' (ejecutar comandos como administrador). Para probarlo:+Pueden usar ''sudo'' para ejecutar comandos como administrador. Para probarlo:
  
 <code> <code>
Line 53: Line 98:
 </code> </code>
  
-Si funciona, no hay problema.+La primera vez pide la contraseña (la misma de SSH) y después debería imprimir ''hello''.
  
-Pero si hay un error así:+Si en cambio aparece una advertencia como esta:
  
 <code> <code>
Line 61: Line 106:
 </code> </code>
  
-Hay que editar el archivo ''/etc/hosts''+hay que editar el archivo ''/etc/hosts'':
  
 <code> <code>
Line 73: Line 118:
 </code> </code>
  
-... donde ''XX'' es el numero del grupo. En vim, hay que presionar ''i'' para empezar a editar el archivo; luego, para guardar y salir, hay que presionar ''Esc'', y después poner '':wq'' [enter].+... donde ''XX'' es el número del grupo. En vim, hay que presionar ''i'' para empezar a editar el archivo; luego, para guardar y salir, hay que presionar ''Esc'', y después poner '':wq'' [enter]. (Si se perdieron dentro de vim, ''Esc'' y luego '':q!'' [enter] sale sin guardar.)
  
 ==== Bajar datos de la Web ==== ==== Bajar datos de la Web ====
  
-También se pueden bajar archivos directamente de la Web al servidor usando wget. La primera cosa es que hay que instalar ''wget'':+Otra opción es bajar archivos directamente de la Web al servidor usando ''wget''. La máquina no lo trae, así que primero hay que instalarlo:
  
 <code> <code>
Line 83: Line 128:
 </code> </code>
  
-Después se pueden bajar archivos de la Web:+''apt-get'' pregunta ''Do you want to continue? [Y/n]''; hay que responder ''Y'' y Enter. Después se pueden bajar archivos de la Web:
  
 <code> <code>
-wget http://i.imgur.com/hr8fSAm.png+wget https://raw.githubusercontent.com/<usuario>/<repositorio>/main/datos.csv
 </code> </code>
  
-Así se pueden subir datos a alguna ubicación web (como Github) y luego bajarlos al servidor, pero hay que tener un enlace directo al archivo crudo (por eso, parece que Dropbox no funciona).+Así se pueden subir datos a algún sitio web (como GitHub) y luego bajarlos al servidor, pero hay que usar el enlace directo al archivo crudo. En GitHub es el que aparece al apretar el botón //Raw//. Los enlaces para compartir de Google Drive o Dropbox apuntan a una página HTML y no al archivo, así que ''wget'' baja esa página. 
 + 
 +(Otra opción sería instalar un cliente ''git'' en el servidor, con ''sudo apt-get install git'', hacer un //commit/push// localmente y un //pull// en el servidor.) 
 + 
 +==== Para personas curiosas: cómo es la máquina por dentro ==== 
 + 
 +No hace falta saber esto para el proyecto. Estos son los datos de una de las máquinas del curso; las de ustedes deberían ser iguales, y los pueden revisar con los comandos de la última columna. 
 + 
 +^ Qué ^ Valor ^ Comando para verlo ^ 
 +| Sistema operativo | Debian GNU/Linux 13 (//trixie//), kernel 6.12, 64 bits | ''cat /etc/os-release'', ''uname -rm'' | 
 +| Virtualización | Máquina virtual Xen, dentro de un servidor del DCC | ''systemd-detect-virt'' | 
 +| Procesador | 1 núcleo de un Intel Xeon Gold 6148 (2,4 GHz) | ''nproc'', ''lscpu'' | 
 +| Memoria RAM | 700 MB, más 1 GB de //swap// (memoria de respaldo en disco, mucho más lenta) | ''free -h'' | 
 +| Disco | 10 GB en total: 9 GB para el sistema y sus datos (unos 7 GB libres al partir) y 1 GB de //swap// | ''df -h /'', ''lsblk'' | 
 +| Postgres | 17.11 | ''psql --version'' | 
 +| Red interna | Una dirección privada ''10.0.220.x''; desde internet se llega solo por ''cc3201.dcc.uchile.cl'' | ''ip -br a'' | 
 +| Zona horaria | UTC (3 o 4 horas más que en Chile, según la época del año) | ''timedatectl'' | 
 + 
 +Algunas consecuencias prácticas:
  
-(Otra opción sería instalar un cliente ''git'' en el servidor, hacer un //commit/push// localmente y un //pull// en el servidor.)+  * Con 700 MB de RAM, las consultas sobre tablas grandes o los ''JOIN'' sin índices pueden ser lentos, y ahí se nota lo que se ve en clases sobre índices y planes de consulta. 
 +  * Si sus datos pesan más de un par de GB, no van a caber junto con los índices. Conviene revisar el tamaño antes de subirlos (''du -h archivo.csv'' en su computador). 
 +  * Como la máquina está en UTC, ''now()'' en Postgres devuelve la hora UTC. Para ver la hora de Chile: ''SELECT now() AT TIME ZONE 'America/Santiago';''. 
 +  * La máquina no trae Python. Si lo necesitan, ''sudo apt-get install python3''.
  
proyecto/acceso_al_servidor.1524256047.txt.gz · Last modified: by ahogan